Redshift 특정 테이블의 권한 생성 문제
이전에 Redshift 그룹에 권한을 추가해 주었어도 Superuser가 아닌 그룹 내 다른 사용자가 만든 테이블은 접근할 수 없었던 문제에 대한 해결 방법을 제시하였다. 테이블은 오직 superuser만 생성할 수 있도록 설정하는 것이다. 그러나 실제로 개발자 테이블을 생성하거나 수정하는 상황이 필요하기에 근본적으로 해결할 수 있는 방법을 찾아보았다.
[DB] Redshift 특정 테이블의 권한이 생성되지 않는 문제
Redshift 특정 테이블의 권한이 생성되지 않는 문제Redshift에서 그룹에 대한 권한을 추가했지만, 특정 테이블에 대한 권한만 추가되지 않는 문제가 발생하였다. 결론적으로는 권한을 생성하는
sanseo.tistory.com
새로운 테이블에 대한 권한 부여
이전에 작성했던 권한 부여 쿼리
새로운 테이블을 생성했을 때, 해당 테이블에 대한 권한을 부여하는 쿼리이다.
-- 새로 생성된 테이블에 대한 권한 부여
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 |