A security privilege defines a level of access to an object.
-- Privilege 부여
GRANT USAGE ON DATABASE MY_DB TO ROLE MY_ROLE;
-- Privilege 취소
REVOKE USAGE ON DATABASE MY_DB FROM ROLE MY_ROLE;
공식 문서에 따르면 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 등 |
공식 문서의 전체 Privilege 목록에 기반한 주요 권한은 다음과 같음
| Privilege | 설명 |
|---|---|
| OWNERSHIP | 객체에 대한 완전한 제어권. 객체를 생성한 Role에 자동 부여됨. DROP, ALTER, 권한 부여/취소 가능. 단일 Role만 보유 가능 |
| USAGE | 객체를 사용(USE 명령)하거나 SHOW 명령으로 조회 가능. Database, Schema, Warehouse, Stage(external) 등에 적용 |
| MODIFY | 객체의 설정이나 속성 변경 가능 (예: Warehouse 크기 변경) |
| MONITOR | 객체 내부의 세부 정보 조회 가능 (예: Warehouse의 쿼리 실행 내역, 사용량 통계) |
| Privilege | 설명 |
|---|---|
| OPERATE | Warehouse 상태 변경 (시작, 정지, 일시정지, 재개) 및 실행 중 쿼리 중단 가능 |
| USAGE | Warehouse를 사용하여 쿼리 실행 가능 |
| MODIFY | Warehouse 크기 등 속성 변경 가능 |
| Privilege | 설명 |
|---|---|
| SELECT | SELECT 문 실행 가능 |
| INSERT | INSERT 명령 실행 가능 |
| UPDATE | UPDATE 명령 실행 가능 |
| DELETE | DELETE 명령 실행 가능 |
| TRUNCATE | TRUNCATE TABLE 명령 실행 가능 |
| REFERENCES | 테이블 구조(데이터 제외) 조회, 외래키 참조 대상으로 사용 가능 |
Future grants allow privileges to be defined for objects not yet created.
-- 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는 무시됨
Schema 내 객체를 다루려면 반드시 상위 계층의 권한도 함께 필요함
Database USAGE 권한
↓
Schema USAGE 권한
↓
Schema 내 객체 권한 (예: Table SELECT)
⚠️ 포인트: Database의 USAGE 없이는 Schema 접근 불가, Schema의 USAGE 없이는 Table 접근 불가
기본적으로 SECURITYADMIN과 ACCOUNTADMIN 시스템 역할만 MANAGE GRANTS 권한을 보유하지만, 이 권한은 Custom Role에도 부여 가능함
| 항목 | 내용 |
|---|---|
| Privilege 정의 | 객체에 대한 접근 수준을 정의하는 보안 권한 |
| 카테고리 수 | 4가지 (Global, Account Objects, Schemas, Schema Objects) |
| 관리 명령어 | GRANT (부여), REVOKE (취소) |
| 가장 강력한 Privilege | OWNERSHIP (객체 완전 제어, 단일 Role만 보유 가능) |
| Future Grants | 아직 생성되지 않은 객체에 미리 권한 정의 가능 |
| Schema 객체 접근 | DB USAGE + Schema USAGE + 객체 Privilege 모두 필요 |
| Future Grant 우선순위 | Schema 레벨 > Database 레벨 |