[Snowflake] 3. Snowflake 사용자 권한 설정

·2023년 5월 25일
0

SNOWFLAKE

목록 보기
3/3

❄️ 역할(role)에 Snowflake 스키마 접근 권한을 부여해 보자.

  • 다음과 같이 RAW_DATA, ANALYTICS, ADHOC 각 스키마에 두 개의 역할(ROLE)을 만들어 권한을 부여해 보자.
  • 이때 ANALYTICS_AUTHORS는 데이터 분석가를 위한 테이블로 ANALYTICS 테이블에 직접 읽기 권한과 쓰기 권한을 가지지만 ANALYTICS_USERS에 경우 분석된 데이터를 조회할 수 있는 권한만 가지게 구현한다.


1. 역할(role) 생성

  • 다음과 같이 DEV 데이터베이스를 선택해 준 후 CREATE ROLE 명령어를 통해 생성해 준다.
  • ANALYTICS_AUTHORSANALYTICS_USERS 두 개의 역할을 생성해 주어야 한다.
-- role 생성
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_AUTHORSANALYTICS_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 역할명으로 스키마에 있는 모든 테이블에 대한 모든 권한을 부여한다.
-- ANALYTICS_USERS 권한 부여
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;
profile
송의 개발 LOG

0개의 댓글