터칭 데이터
Snowflake Role과 User 생성 본문
혹시 저번에 Reshift 권한 부여 실습 기억나시나요?
https://touchingdata.tistory.com/149
Redshift 권한
사용자별 테이블 권한 설정 https://touchingdata.tistory.com/144 Redshift 초기 설정개념과 실습 Redshift 초기 설정 Redshift를 처음 구동하면 스키마, 그룹, 유저, 역할 등을 생성해야 합니다. 이에 대해 알아보
touchingdata.tistory.com
이 때 Group(그룹)과 Role(역할)에서 Group만 실습해보았는데요.
말씀드렸던 것 처럼 이번에 Snowflake 실습에서 Role을 사용해보기 위해서였습니다.
Snowfalke는 최근에 나온 기술이기 때문에 더 유연하고 강력한 기능을 제공합니다. 때문에 Role보다 좋지 않은 Group을 아예 지원하지 않습니다.
Role과 User 생성
-- 3개의 ROLE을 생성한다
CREATE ROLE analytics_users;
CREATE ROLE analytics_authors;
CREATE ROLE pii_users;
-- 사용자 생성
CREATE USER jon PASSWORD='jon12345';
-- 사용자에게 analytics_users 권한 지정
GRANT ROLE analytics_users TO USER jon;
raw_data, analytics, adhoc 3개의 스키마들과
analytics_authors라는 데이터 분석가들과 analytics_users라는 데이터 사용자들을 위한 2개의 Role들을
위와 같은 표로 표현해보았습니다.
AWS Group에서는 Grant 명령으로 일일이 권한을 부여하고 부여한 권한을 수정해야 한다면 또 다시 일일이 수정했야 했습니다.
그런데 Role은 다릅니다. 먼저 anayltics_users라는 가장 기본적이고 권한이 작은 Role 하나만 생성한 뒤 더 많은 권한이 필요한 analytics_authors에게 계승시키고 analytics 스키마의 쓰기 권한만 확장·추가하면 됩니다.
analytics_users와 analytics_authors Role 설정
-- set up analytics_users
GRANT USAGE on schema dev.raw_data to ROLE analytics_users;
GRANT SELECT on all tables in schema dev.raw_data to ROLE analytics_users;
GRANT USAGE on schema dev.analytics to ROLE analytics_users;
GRANT SELECT on all tables in schema dev.analytics to ROLE analytics_users;
GRANT ALL on schema dev.adhoc to ROLE analytics_users;
GRANT ALL on all tables in schema dev.adhoc to ROLE analytics_users;
-- set up analytics_authors
GRANT ROLE analytics_users TO ROLE analytics_authors;
GRANT ALL on schema dev.analytics to ROLE analytics_authors;
GRANT ALL on all tables in schema dev.analytics to ROLE analytics_authors;
먼저 가장 기본이 되는 foundational role이자 가장 권한이 작은 analytics_users 역할에게 권한들을 부여합니다.
raw_data 스키마에는 읽기 권한만
analytics 스키마에는 읽기 권한만
adhoc 스키마에는 모든(읽기, 쓰기) 권한을 부여합니다.
그런데 analytics_authors는 analytics 스키마에 읽기 권한이 추가로 더 필요합니다. 이 때 analytics_users 역할을 GRANT ROLE로 analytics_authors에게 계승시키고 analytics 스키마에 대한 모든 권한을 추가로 부여하기만 하면 됩니다.
그림으로 도식화하면 위와 같습니다.
컬럼 레벨 보안 & 레코드 레벨 보안
Snowflake 역시 Redshift와 마찬가지로 컬럼 레벨 보안(Column Level Security)과 레코드 레벨 보안(Row Level Security)을 제공합니다.
사실 모든 데이터 웨어하우스에서는 기본적으로 제공되는 기능이긴 합니다만..
별로 권장되는 기능은 아닙니다.
민감한 정보는 아예 다른 테이블로 빼고 가장 좋은 방법은 가능하다면 아예 데이터 시스템에 로딩하지 않는 것을 권장합니다.
'데이터 웨어하우스(Data Warehouse)' 카테고리의 다른 글
Snowflake 기타 기능과 사용 중단하기 (0) | 2023.11.30 |
---|---|
Snowflake Data Governance 관련 기능 (0) | 2023.11.30 |
Snowflake 실습 - DB, 스키마, 테이블 생성 (0) | 2023.11.30 |
Snowflake 실습 - AWS IAM 설정하기 (0) | 2023.11.30 |
Snowflake Worksheet 간단한 기능들 (0) | 2023.11.30 |