[Snowflake] Roles

차지예·2026년 6월 3일

Snowflake

목록 보기
18/49
post-thumbnail

1. Role(역할)이란?

A role is an entity to which privileges on securable objects can be granted or revoked.

  • Role은 보안 가능한 객체(Securable Object)에 대한 권한(Privilege)을 부여하거나 취소할 수 있는 엔티티
  • Role은 User에게 할당되어, 해당 User가 특정 작업을 수행할 수 있는 권한을 부여함

GRANT 예시

-- 데이터베이스에 대한 USAGE 권한을 Role에 부여
GRANT USAGE ON DATABASE TEST_DB TO ROLE TEST_ROLE;

-- 테이블에 대한 SELECT 권한을 Role에 부여
GRANT SELECT ON TABLE TEST_TABLE TO ROLE TEST_ROLE;

-- 스키마에 대한 USAGE 권한을 Role에 부여
GRANT USAGE ON SCHEMA TEST_SCHEMA TO ROLE TEST_ROLE;

-- Role을 User에게 부여
GRANT ROLE TEST_ROLE TO USER ADMIN;

2. Role의 핵심 특징

특징설명
다중 Role 보유하나의 User가 여러 Role을 가질 수 있음
Role 전환Snowflake 세션 내에서 Role 간 전환 가능
Role 계층 구조Role을 다른 Role에 부여하여 계층(Hierarchy) 생성 가능
권한 상속하위 Role의 권한은 상위(Parent) Role에 상속됨

Role 계층 구조 예시

-- Role 3의 권한을 Role 2에 부여
GRANT ROLE ROLE_3 TO ROLE ROLE_2;

-- Role 2의 권한을 Role 1에 부여
GRANT ROLE ROLE_2 TO ROLE ROLE_1;
Role 3 → Role 2 → Role 1
  ↓          ↓         ↓
Privilege A  Privilege A (inherited)  Privilege A (inherited)
             Privilege B              Privilege B (inherited)
                                      Privilege B (own)

💡 권한 상속 원칙: 하위 Role의 모든 Privilege는 상위 Parent Role에 자동으로 상속됨


3. System-defined Roles (시스템 정의 역할)

Snowflake 계정 생성 시 자동으로 제공되는 역할로, 삭제 불가하며 Snowflake가 부여한 권한은 취소 불가

계층 구조

ORGADMIN
    |
ACCOUNTADMIN
    |
  ┌─┴─────────┐
SECURITYADMIN  SYSADMIN
    |
USERADMIN

PUBLIC (모든 User/Role에 자동 부여)

각 Role 상세 설명

🔶 ORGADMIN (Organization Administrator)

  • 조직(Organization) 레벨의 작업 관리
  • 조직 내 계정(Account) 생성 가능
  • 조직 내 모든 계정 조회 가능
  • 조직 전체의 사용량(Usage) 정보 조회 가능

⚠️추가 정보: ORGADMIN은 시스템 역할 계층(ACCOUNTADMIN 아래)에 포함되지 않는 별도의 독립 역할임. 향후 릴리스에서 GLOBALORGADMIN으로 대체 예정.


🔴 ACCOUNTADMIN (Account Administrator)

  • 계정에서 가장 강력한 최상위 역할
  • SYSADMIN + SECURITYADMIN을 포함(Encapsulate)
  • 계정 레벨 파라미터 구성 담당
  • 계정 내 모든 객체 조회 및 조작 가능
  • Snowflake 청구(Billing) 및 크레딧 데이터 조회·관리 가능
  • 실행 중인 SQL 문 강제 종료 가능

⚠️ 권고사항: 제한된 소수의 사용자에게만 부여할 것


🟡 SECURITYADMIN (Security Administrator)

  • MANAGE GRANTS 권한을 통해 전역적으로 모든 권한 부여/취소 관리
  • 사용자(User) 및 역할(Role) 생성·모니터링·관리 가능
  • 시스템 역할 계층을 통해 USERADMIN 권한 상속

⚠️ 주의사항: MANAGE GRANTS 권한은 권한 부여/취소 능력만 제공. 객체 생성 권한은 별도 부여 필요.


🟢 SYSADMIN (System Administrator)

  • 계정 내 Warehouse, Database, Schema 등 객체 생성 가능
  • 권장 구조에 따라 모든 Custom Role을 SYSADMIN에 할당하면, SYSADMIN이 해당 객체에 대한 권한도 관리 가능

🔵 USERADMIN (User and Role Administrator)

  • CREATE USERCREATE ROLE 보안 권한 보유
  • 계정 내 사용자(User)와 역할(Role) 생성 전담
  • 본인이 소유(OWNERSHIP)한 User/Role만 직접 관리 가능

⚪ PUBLIC

  • 계정 내 모든 User와 모든 Role에 자동으로 부여되는 의사 역할(Pseudo-role)
  • Securable Object 소유 가능
  • 단, PUBLIC Role이 소유한 객체는 계정 내 모든 User/Role이 접근 가능
  • 명시적 접근 제어가 불필요하고 모든 사용자가 동등한 접근 권한을 가져야 하는 경우에 사용

4. Custom Roles (사용자 정의 역할)

항목내용
목적세밀한(Fine-grained) 보안 권한을 정의한 역할 생성
생성 가능 역할SECURITYADMIN, USERADMIN 또는 CREATE ROLE 권한이 부여된 모든 역할
권장 구조Custom Role 계층의 최상위 Custom Role을 SYSADMIN에 할당

⚠️ 주의사항 (중요 포인트)

Custom Role을 SYSADMIN에 할당하지 않으면, 시스템 관리자가 해당 Custom Role이 소유한 객체를 관리할 수 없음

SYSADMIN
    ↑
Custom Role (최상위)   ← 반드시 SYSADMIN에 연결 권장
    ↑
Custom Role (중간)
    ↑
Custom Role (하위)

5. 핵심 요약

구분핵심 내용
Role 정의Securable Object에 권한을 부여/취소할 수 있는 엔티티
Role → UserGRANT ROLE ... TO USER ...
Role → RoleGRANT ROLE ... TO ROLE ... (계층 생성)
권한 상속 방향하위 → 상위 (Child → Parent)
가장 강력한 RoleACCOUNTADMIN
사용자 생성 전담USERADMIN
객체 생성 전담SYSADMIN
권한 전역 관리SECURITYADMIN (MANAGE GRANTS 권한)
자동 부여 RolePUBLIC (모든 User/Role에 자동 할당)
Custom Role 권장최상위를 SYSADMIN에 연결

0개의 댓글