[AWS RedShift] 7. 그룹(GROUP) 권한 부여

·2023년 5월 24일
0

REDSHIFT

목록 보기
7/8
post-thumbnail

📌 그룹에 Redshift 각 스키마의 접근 권한을 부여해 보자.

  • 초기 설정에서 생성해 준 스키마와 역할을 활용해서 다음과 같이 역할에 스키마 읽기, 쓰기 권한을 부여해 보자.
    [AWS RedShift] 5. SQL로 Redshift 초기 설정 - 이전 포스트 참고
  • 보통 권한을 부여할 때는 역할 혹은 그룹별 스키마별로 권한을 부여한다.
  • 먼저 admin 계정으로 redshift에 접속해 준 후 각 그룹에 필요한 권한들을 부여해 보자

1. analytics_author 권한 부여


✔ 먼저 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;

  • analyticsadhoc에 대해서는 모든 권한이 부여되어야 한다.

  • 모든 권한을 부여해 줄 때는 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;

2. analytics_users 권한 부여

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_dataanalytics는 조회만 가능하도록 읽기 권한만 부여해 주어야 한다. 이때 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;

3. pii_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;

4. 테스트용 사용자를 그룹에 추가

  • 초기 설정에서 만들었던 사용자 song으로 로그인해 주었다. song은 현재 어떤 권한도 존재하지 않는 사용자이다.

  • 해당 사용자를 adhoc 테이블 외에는 읽기 권한만 존재하는 analytics_users 그룹에 추가해 본다. 이때 ALTER GROUP 그룹명 ADD USER 사용자명 구문을 사용해 준다. 만약 한 명 이상의 사용자를 추가하려면 사용자명 위치에 사용자명, 사용자명을 입력해 주면 된다.

  • 만약 그룹에서 사용자를 제거하고 싶다면 ALTER GROUP 그룹명 DROP USER 사용자명 를 해 주면 된다.

ALTER GROUP analytics_users ADD USER song;

5. 테스트용 사용자 계정으로 Redshift 환경에 접근해 권한 확인

  • 권한이 제대로 부여되었는지 확인하기 위해서 그룹에 추가해 준 사용자의 계정으로 Redshift 환경에 다시 접근해 준다.

  • postgresql://username:password@endpoint에서 username 자리에 사용자의 계정 그리고 password 자리에 비밀번호를 입력하면 된다.

  • 접근했다면 analytics_users 그룹에는 읽기 권한만 부여된 raw_data 스키마의 테이블 하나를 삭제해 보자.

DELETE
  FROM RAW_DATA.USER_SESSION_CHANNEL;


다음과 같이 Permission denied라는 권한 오류가 뜨는 것을 볼 수 있다.

profile
송의 개발 LOG

0개의 댓글