이번 포스팅에서는 Snowflake에서 Role-based access control (RBAC)와 Discretionary Access Control (DAC)를 기반으로 역할 및 권한 관리하는 방법에 대해 다뤄보겠습니다. Snowflake 환경에서 진행되며, 기본적인 역할 정의 및 권한 부여, 사용자 생성과 같은 내용을 포함하고 있습니다.
1. RBAC 및 DAC 개념
Role-based Access Control (RBAC)
RBAC는 사용자에게 할당된 역할(Role)을 기반으로 시스템 리소스에 대한 액세스를 제어하는 방식입니다. 즉, 역할에 따라 특정 리소스에 대한 권한을 부여하고, 사용자는 할당된 역할에 따라 리소스에 접근할 수 있습니다.
Discretionary Access Control (DAC)
DAC는 리소스의 소유자가 다른 사용자에게 자신의 리소스에 대한 액세스 권한을 직접 부여할 수 있는 방식입니다. 이 방식은 소유자가 자신의 자산에 대한 권한을 자유롭게 관리할 수 있다는 점에서 유연하지만, 보안이 다소 약해질 수 있습니다.
2. 실습하기
2.1. Snowflake에서 역할(Role) 확인 및 설정
먼저 ACCOUNTADMIN 역할로 설정하여 현재 정의된 역할을 확인하고, SECURITYADMIN 역할로 전환하여 권한을 검토합니다.
-- Set context
USE ROLE ACCOUNTADMIN;
-- 현재 정의된 역할 확인
SHOW ROLES;
SELECT "name", "comment" FROM TABLE(result_scan(last_query_id()));
-- SECURITYADMIN 역할의 권한 확인
SHOW GRANTS TO ROLE SECURITYADMIN;
2.2. 데이터베이스 및 스키마 생성
SYSADMIN 역할로 전환하여 새로운 데이터베이스와 스키마를 생성합니다.
-- SYSADMIN 역할로 데이터베이스 및 스키마 생성
USE ROLE SYSADMIN;
CREATE DATABASE FILMS_DB;
CREATE SCHEMA FILMS_SCHEMA;
CREATE TABLE FILMS_SYSADMIN
(
ID STRING,
TITLE STRING,
RELEASE_DATE DATE,
RATING INT
);
2.3. 커스텀 역할 생성 및 권한 부여
SECURITYADMIN 역할로 전환하여 ANALYST라는 새로운 역할을 생성하고, SYSADMIN 역할에 상속시킵니다.
-- 커스텀 역할 생성 및 권한 부여
USE ROLE SECURITYADMIN;
CREATE ROLE ANALYST;
GRANT USAGE
ON DATABASE FILMS_DB
TO ROLE ANALYST;
GRANT USAGE, CREATE TABLE
ON SCHEMA FILMS_DB.FILMS_SCHEMA
TO ROLE ANALYST;
GRANT USAGE
ON WAREHOUSE COMPUTE_WH
TO ROLE ANALYST;
-- 역할 상속 및 사용자에게 권한 부여
GRANT ROLE ANALYST TO ROLE SYSADMIN;
GRANT ROLE ANALYST TO USER ADMIN;
2.4. 권한 확인 및 테이블 생성
ANALYST 역할로 전환하여 권한을 확인하고, 테이블을 생성합니다.
-- ANALYST 역할로 전환하여 권한 및 테이블 생성
USE ROLE ANALYST;
USE SCHEMA FILMS_DB.FILMS_SCHEMA;
CREATE TABLE FILMS_ANALYST
(
ID STRING,
TITLE STRING,
RELEASE_DATE DATE,
RATING INT
);
-- 테이블 및 데이터베이스 확인
SHOW TABLES;
SHOW DATABASES;
SELECT "name", "owner" FROM TABLE(result_scan(last_query_id()));
2.5. 사용자 생성 및 역할 할당
USERADMIN 역할로 새로운 사용자를 생성하고, ANALYST 역할을 할당합니다.
-- 사용자 생성 및 역할 할당
USE ROLE USERADMIN;
CREATE USER Rajesh PASSWORD='temp' DEFAULT_ROLE = analyst DEFAULT_WAREHOUSE='COMPUTE_WH' MUST_CHANGE_PASSWORD=TRUE;
USE ROLE SECURITYADMIN;
GRANT ROLE analyst TO USER Rajesh;
2.6. 생성된 리소스 정리
마지막으로 실습에서 생성한 데이터베이스를 삭제합니다.
-- 리소스 정리
USE ROLE SYSADMIN;
DROP DATABASE FILMS_DB;
이 포스팅에서는 Snowflake에서 RBAC 및 DAC를 적용하여 역할과 권한을 관리하는 방법을 다뤘습니다. 다양한 역할과 권한 부여 방식을 이해하고 직접 실습하면서, 데이터베이스 및 사용자 관리에 대해 더 깊은 이해를 얻을 수 있습니다.
Reference
https://docs.snowflake.com/en/guides
'Snowflake' 카테고리의 다른 글
[Snowflake] Snowflake 클러스터링 키 및 클러스터링 된 테이블이란? (2) | 2024.10.12 |
---|---|
[Snowflake] Snowflake 마이크로 파티션 및 데이터 클러스터링이란? (2) | 2024.10.12 |
[Snowflake] Snowflake Multi-Cluster Warehouses란? (2) | 2024.10.12 |
[Snowflake] Snowflake에서 Virtual Warehouse 관리 실습하기 (0) | 2024.10.10 |
[Snowflake] Snowflake에서 Masking & Row Access Policy 관리 실습하기 (2) | 2024.10.09 |