Redshift 특정 테이블의 권한 생성 문제
이전에 Redshift 그룹에 권한을 추가해 주었어도 Superuser가 아닌 그룹 내 다른 사용자가 만든 테이블은 접근할 수 없었던 문제에 대한 해결 방법을 제시하였다. 테이블은 오직 superuser만 생성할 수 있도록 설정하는 것이다. 그러나 실제로 개발자 테이블을 생성하거나 수정하는 상황이 필요하기에 근본적으로 해결할 수 있는 방법을 찾아보았다.
새로운 테이블에 대한 권한 부여
이전에 작성했던 권한 부여 쿼리
새로운 테이블을 생성했을 때, 해당 테이블에 대한 권한을 부여하는 쿼리이다.
-- 새로 생성된 테이블에 대한 권한 부여
ALTER DEFAULT PRIVILEGES IN SCHEMA raw_data GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES IN SCHEMA analytics GRANT ALL ON TABLES TO GROUP ETL_team;
이 쿼리를 설정한 뒤 테이블을 생성하면, DBeaver에서 확인한 DDL은 다음과 같다. Permissions 부분에 그룹에 대한 권한이 추가돼있지 않아 다른 사용자는 접근할 수 없었던 것이다.
CREATE TABLE IF NOT EXISTS raw_data.test_table
(
id INTEGER ENCODE az64
,name VARCHAR(256) ENCODE lzo
)
DISTSTYLE AUTO
;
ALTER TABLE raw_data.test_table owner to user1;
-- Permissions
GRANT ALL ON TABLE raw_data.test_table TO user1;
새롭게 수정한 권한 부여 쿼리
이전의 쿼리에 "FOR USER [USER_NAME]"을 추가한 것이다. "[USER_NAME]이 해당 스키마에 테이블을 생성하면, ELT_team에 권한을 부여하라"라는 의미이다. 사용자, 스키마마다 추가해야 하기 때문에 번거롭지만, 문제를 올바르게 해결할 수 있다.
ALTER DEFAULT PRIVILEGES FOR USER user1 IN SCHEMA raw_data GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES FOR USER user1 IN SCHEMA analytics GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES FOR USER user2 IN SCHEMA raw_data GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES FOR USER user2 IN SCHEMA analytics GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES FOR USER user3 IN SCHEMA raw_data GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES FOR USER user3 IN SCHEMA analytics GRANT ALL ON TABLES TO GROUP ETL_team;
위와 같이 설정한 뒤 DBeaver에서 확인한 DDL이다. ETL_team에 권한을 부여하는 GRANT문이 추가되었다.
CREATE TABLE IF NOT EXISTS raw_data.test_table
(
id INTEGER ENCODE az64
,name VARCHAR(256) ENCODE lzo
)
DISTSTYLE AUTO
;
ALTER TABLE raw_data.test_table owner to user1;
-- Permissions
GRANT ALL ON TABLE raw_data.test_table TO user1;
GRANT ALL ON TABLE raw_data.test_table TO GROUP etl_team;
Reference
https://repost.aws/ko/knowledge-center/redshift-grant-permissions-new-objects
'CS > 데이터베이스' 카테고리의 다른 글
[MySQL] CHAR vs VARCHAR (0) | 2024.11.25 |
---|---|
[DB] Redshift 특정 테이블의 권한이 생성되지 않는 문제 (0) | 2024.10.30 |
[DB] Redshift에 생성된 Schema와 Table 정보 확인 방법 (0) | 2024.08.06 |
[DB] 생활코딩 - 관계형 데이터 모델링 (3) | 2024.07.14 |
[DB] 프로덕션 데이터베이스 vs 데이터 웨어하우스 (0) | 2024.06.04 |