[Snowflake] Privileges(권한)

차지예·2026년 6월 3일

Snowflake

목록 보기
19/49
post-thumbnail

1. Privilege(권한)이란?

A security privilege defines a level of access to an object.

  • Privilege는 객체(Object)에 대한 접근 수준을 정의하는 보안 권한
  • 각 객체(Object)마다 부여 가능한 고유한 Privilege 집합이 존재함
  • Privilege는 GRANTREVOKE 명령으로 관리됨
-- Privilege 부여
GRANT USAGE ON DATABASE MY_DB TO ROLE MY_ROLE;

-- Privilege 취소
REVOKE USAGE ON DATABASE MY_DB FROM ROLE MY_ROLE;

2. Privilege의 4가지 카테고리

공식 문서에 따르면 Privilege는 적용 범위에 따라 아래와 같이 분류됨

Global Privileges → Account Objects → Schemas → Schema Objects
카테고리범위예시 객체
Global Privileges계정(Account) 전체MANAGE GRANTS, CREATE DATABASE, CREATE WAREHOUSE 등
Privileges for Account Objects계정 수준 객체Database, Warehouse, Resource Monitor, Integration 등
Privileges for Schemas스키마Schema 자체
Privileges for Schema Objects스키마 내 객체Table, View, Stage, Stream, Task 등

3. 자주 등장하는 핵심 Privilege 설명

공식 문서의 전체 Privilege 목록에 기반한 주요 권한은 다음과 같음

공통적으로 적용되는 Privilege

Privilege설명
OWNERSHIP객체에 대한 완전한 제어권. 객체를 생성한 Role에 자동 부여됨. DROP, ALTER, 권한 부여/취소 가능. 단일 Role만 보유 가능
USAGE객체를 사용(USE 명령)하거나 SHOW 명령으로 조회 가능. Database, Schema, Warehouse, Stage(external) 등에 적용
MODIFY객체의 설정이나 속성 변경 가능 (예: Warehouse 크기 변경)
MONITOR객체 내부의 세부 정보 조회 가능 (예: Warehouse의 쿼리 실행 내역, 사용량 통계)

Warehouse에 특화된 Privilege

Privilege설명
OPERATEWarehouse 상태 변경 (시작, 정지, 일시정지, 재개) 및 실행 중 쿼리 중단 가능
USAGEWarehouse를 사용하여 쿼리 실행 가능
MODIFYWarehouse 크기 등 속성 변경 가능

Table에 특화된 Privilege

Privilege설명
SELECTSELECT 문 실행 가능
INSERTINSERT 명령 실행 가능
UPDATEUPDATE 명령 실행 가능
DELETEDELETE 명령 실행 가능
TRUNCATETRUNCATE TABLE 명령 실행 가능
REFERENCES테이블 구조(데이터 제외) 조회, 외래키 참조 대상으로 사용 가능

4. Future Grants (미래 객체에 대한 권한 부여)

Future grants allow privileges to be defined for objects not yet created.

  • 아직 생성되지 않은 객체에 미리 Privilege를 정의할 수 있음
  • 특정 Schema 또는 Database 안에 앞으로 생성될 객체에 자동으로 권한 적용
-- MYSCHEMA 스키마에 앞으로 생성될 모든 테이블에 SELECT 권한 부여
GRANT SELECT ON FUTURE TABLES IN SCHEMA MYSCHEMA TO ROLE MY_ROLE;

💡 추가 정보: 동일한 객체 유형에 대해 Schema 레벨 Future Grant와 Database 레벨 Future Grant가 함께 정의된 경우, Schema 레벨 Grant가 Database 레벨 Grant보다 우선 적용되며 Database 레벨 Grant는 무시됨


5. Schema 내 객체 조작을 위한 필수 권한 구조

Schema 내 객체를 다루려면 반드시 상위 계층의 권한도 함께 필요함

Database USAGE 권한
    ↓
Schema USAGE 권한
    ↓
Schema 내 객체 권한 (예: Table SELECT)

⚠️ 포인트: Database의 USAGE 없이는 Schema 접근 불가, Schema의 USAGE 없이는 Table 접근 불가


6. MANAGE GRANTS 권한 (Global Privilege)

기본적으로 SECURITYADMIN과 ACCOUNTADMIN 시스템 역할만 MANAGE GRANTS 권한을 보유하지만, 이 권한은 Custom Role에도 부여 가능함

  • 소유자(OWNERSHIP)가 아닌 Role도 객체에 대한 권한을 부여/취소할 수 있게 됨
  • 이 권한을 보유한 Role은 자신이 소유하지 않은 객체에 대해서도 권한 관리 가능

7. 핵심 요약

항목내용
Privilege 정의객체에 대한 접근 수준을 정의하는 보안 권한
카테고리 수4가지 (Global, Account Objects, Schemas, Schema Objects)
관리 명령어GRANT (부여), REVOKE (취소)
가장 강력한 PrivilegeOWNERSHIP (객체 완전 제어, 단일 Role만 보유 가능)
Future Grants아직 생성되지 않은 객체에 미리 권한 정의 가능
Schema 객체 접근DB USAGE + Schema USAGE + 객체 Privilege 모두 필요
Future Grant 우선순위Schema 레벨 > Database 레벨

0개의 댓글