❄️ 역할(role)에 Snowflake 스키마 접근 권한을 부여해 보자.
- 다음과 같이
RAW_DATA
, ANALYTICS
, ADHOC
각 스키마에 두 개의 역할(ROLE)
을 만들어 권한을 부여해 보자.
- 이때
ANALYTICS_AUTHORS
는 데이터 분석가를 위한 테이블로 ANALYTICS
테이블에 직접 읽기 권한과 쓰기 권한을 가지지만 ANALYTICS_USERS
에 경우 분석된 데이터를 조회할 수 있는 권한만 가지게 구현한다.
1. 역할(role) 생성
- 다음과 같이
DEV
데이터베이스를 선택해 준 후 CREATE ROLE
명령어를 통해 생성해 준다.
ANALYTICS_AUTHORS
와 ANALYTICS_USERS
두 개의 역할을 생성해 주어야 한다.
CREATE ROLE ANALYTICS_USERS;
CREATE ROLE ANALYTICS_AUTHORS;
2. 사용자 생성 및 사용자에게 역할(role) 권한 부여
- 먼저 이후 권한 생성이 제대로 되었는지 확인하기 위해서는 테스트용 사용자가 필요하다.
- 그래서
CREATE USER
명령을 통해 사용자를 생성해 준다.
CREATE USER SONG PASSWORD='password';
- 이렇게 사용자를 생성하였다면 해당 사용자는 데이터 분석가가 아니므로
ANALYTICS
스키마의 조회 권한만 가능하도록 ANALYTICS_USERS
로 역할(role)
을 부여해 준다.
GRANT ROLE ANALYTICS_USERS TO USER SONG;
3. 역할(role)에 스키마 권한 부여
그룹(Group)
을 사용한다면 그룹(Group)
은 계승이 되지 않아 ANALYTICS_AUTHORS
와 ANALYTICS_USERS
에 둘 다 일일이 권한을 부여해 주어야 한다.
- 하지만
역할(role)
의 경우 계승이 가능하다.
ANALYTICS_AUTHORS
의 경우 ANALYTICS_USERS
의 모든 권한을 동일하게 가지지만 ANALYTICS
의 쓰기 권한이 추가된다. 그렇다면 ANALYTICS_AUTHORS
의 권한을 부여할 때 ANALYTICS_USERS
의 권한을 계승해 준 후 ANALYTICS
의 쓰기 권한만 추가해 주면 된다.
- 먼저
ANALYTICS_USERS
의 권한 부여를 해 준다.
- 읽기 권한만 부여할 시에는
GRANT USAGE ON SCHEMA 스키마명 TO ROLE 역할명
을 통해 해당 역할에 스키마에 대한 읽기 권한을 부여하고, GRANT SELECT ON ALL TABLES IN SCHEMA 스키마명 TO ROLE 역할명
으로 스키마의 모든 테이블에 대해 읽기 권한을 부여한다.
ADHOC
의 경우 읽기 권한과 쓰기 권한을 모두 부여해 주어야 함으로 GRANT ALL ON SCHEMA 스키마명 TO ROLE 역할명
을 통해 스키마의 모든 권한을 부여하고 GRANT ALL ON ALL TABLES IN SCHEMA 스키마명 TO ROLE 역할명
으로 스키마에 있는 모든 테이블에 대한 모든 권한을 부여한다.
GRANT USAGE ON SCHEMA RAW_DATA TO ROLE ANALYTICS_USERS;
GRANT SELECT ON ALL TABLES IN SCHEMA RAW_DATA TO ROLE ANALYTICS_USERS;
GRANT USAGE ON SCHEMA ANALYTICS TO ROLE ANALYTICS_USERS;
GRANT SELECT ON ALL TABLES IN SCHEMA ANALYTICS TO ROLE ANALYTICS_USERS;
GRANT ALL ON SCHEMA ADHOC TO ROLE ANALYTICS_USERS;
GRANT ALL ON ALL TABLES IN SCHEMA ADHOC TO ROLE ANALYTICS_USERS;
ANALYTICS_AUTHORS
의 권한 부여에서는 GRANT ROLE 계승할 역할명 TO ROLE 권한을 부여할 역할명
을 통해 ANALYTICS_USERS
의 권한을 계승해 준 후 ANALYTICS
의 쓰기 권한만 추가해 주면 된다.
GRANT ROLE ANALYTICS_USERS TO ROLE ANALYTICS_AUTHORS;
GRANT ALL ON SCHEMA ANALYTICS TO ROLE ANALYTICS_AUTHORS;
GRANT ALL ON ALL TABLES IN SCHEMA ANALYTICS TO ROLE ANALYTICS_AUTHORS;