Snowflake

[Snowflake] Snowflake에서 RBAC 및 DAC 권한 부여 실습하기

JustJunsu 2024. 10. 6. 23:43
728x90

이번 포스팅에서는 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://www.udemy.com/course/ultimate-snowpro-core-certification-course-exam/?couponCode=UPGRADE02223

https://docs.snowflake.com/en/guides

 

Guides - Snowflake Documentation

Getting data in to Snowflake Snowflake provides several different methods to load data in to Snowflake, such as by using Snowpipe, loading from cloud storage, or uploading files using Snowsight.

docs.snowflake.com

 

728x90