redshift
에 접속해 준 후 각 그룹에 필요한 권한들을 부여해 보자✔ 먼저 analytics_author
는 데이터 분석가 그룹이다. 그렇기 때문에 pii
스키마에는 접근 권한이 없어야 하며 raw_data
를 조회할 수 있어야 한다. 이 조회한 데이터를 바탕으로 analytics
스키마에 분석 데이터를 저장하는 것이 가능해야 하며 adhoc
스키마로 테스트 역시 할 수 있어야 한다.
analytics_author
에게는 raw_data
에는 읽기 권한이 부여되어야 한다.GRANT USAGE ON SCHEMA 스키마명 TO GROUP 그룹명
를 먼저 해 주어야 한다. SQL
구문을 통해 먼저 스키마에 읽기 권한을 부여하고, 이후 해당 스키마의 모든 테이블을 조회할 수 있도록 GRANT SELECT ON ALL TABLES IN SCHEMA 스키마명 TO GROUP 그룹명
을 해 준다.GRANT USAGE ON SCHEMA RAW_DATA TO GROUP analytics_authors;
GRANT SELECT ON ALL TABLES IN SCHEMA RAW_DATA TO GROUP analytics_authors;
analytics
와 adhoc
에 대해서는 모든 권한이 부여되어야 한다.
모든 권한을 부여해 줄 때는 GRANT USAGE
가 아닌 GRANT ALL
을 해 주어야 한다. GRANT ALL ON SCHEMA 스키마명 TO GROUP 그룹명
스키마에 모든 권한을 준 후 해당 스키마의 모든 테이블에 모든 권한을 부여해 준다. 이때는 GRANT ALL ON ALL TABLES IN SCHEMA 스키마명 TO GROUP 그룹명
구문으로 권한을 줄 수 있다.
GRANT ALL ON SCHEMA ANALYTICS TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA ANALYTICS TO GROUP analytics_authors;
GRANT ALL ON SCHEMA ADHOC TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA ADHOC TO GROUP analytics_authors;
✔ analytics_users
는 데이터를 활용하는 개인의 그룹이다. 그렇기 때문에 pii
스키마에는 접근 권한이 없어야 하며 테스트 스키마인 adhoc
을 제외하고는 모든 스키마에 읽기 권한만 부여되어야 한다.
analytics_users
에게는 adhoc
스키마에 대한 모든 권한을 부여해 주어야 한다.GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_users;
GRANT ALL ON SCHEMA adhoc to GROUP analytics_users;
raw_data
와 analytics
는 조회만 가능하도록 읽기 권한만 부여해 주어야 한다. 이때 GRANT USAGE ON SCHEMA 스키마명 TO GROUP 그룹명
, GRANT SELECT ON ALL TABLES IN SCHEMA 스키마명 TO GROUP 그룹명
구문을 사용해 준다.GRANT USAGE ON SCHEMA analytics TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_users;
GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_users;
✔ pii_users
는 개인 정보를 조회할 수 있는 그룹이다. 목적에 따라 개인 정보 스키마인 pii
스키마에만 읽기 권한을 부여하고, 해당 사용자가 다른 권한도 필요하다면 다른 그룹에도 사용자를 포함해 주는 것이다. (한 사용자가 여러 그룹에 포함될 수 있기 때문에) 아니면 아예 pii_users
라는 그룹에 해당 사용자들이 필요한 모든 권한을 부여해 줄 수도 있다. 하지만 사용자마다 필요한 권한은 제각각이므로 목적에 따라 pii
스키마에 대한 권한만 주는 것이 사용자가 늘었을 때 발생할 이슈를 줄여 줄 수 있다.
pii
스키마에 대해 읽기 권한을 부여해 주기 위해 다음과 같은 SQL
구문을 사용한다.GRANT USAGE ON SCHEMA pii TO GROUP pii_users;
GRANT SELECT ON ALL TABLES IN SCHEMA pii TO GROUP pii_users;
초기 설정에서 만들었던 사용자 song
으로 로그인해 주었다. song
은 현재 어떤 권한도 존재하지 않는 사용자이다.
해당 사용자를 adhoc
테이블 외에는 읽기 권한만 존재하는 analytics_users
그룹에 추가해 본다. 이때 ALTER GROUP 그룹명 ADD USER 사용자명
구문을 사용해 준다. 만약 한 명 이상의 사용자를 추가하려면 사용자명 위치에 사용자명, 사용자명
을 입력해 주면 된다.
만약 그룹에서 사용자를 제거하고 싶다면 ALTER GROUP 그룹명 DROP USER 사용자명
를 해 주면 된다.
ALTER GROUP analytics_users ADD USER song;
권한이 제대로 부여되었는지 확인하기 위해서 그룹에 추가해 준 사용자의 계정으로 Redshift
환경에 다시 접근해 준다.
postgresql://username:password@endpoint
에서 username
자리에 사용자의 계정
그리고 password
자리에 비밀번호를 입력하면 된다.
접근했다면 analytics_users
그룹에는 읽기 권한만 부여된 raw_data
스키마의 테이블 하나를 삭제해 보자.
DELETE
FROM RAW_DATA.USER_SESSION_CHANNEL;
다음과 같이 Permission denied
라는 권한 오류가 뜨는 것을 볼 수 있다.