Access Control을 이해하기 위한 기본 단위는 Who → Operation → Object 구조다.
| 개념 | 설명 |
|---|---|
| Securable Object | 접근 권한을 부여할 수 있는 대상. Grant가 없으면 접근은 기본 거부(deny) |
| Role | Privilege를 부여받는 주체 (User에게 할당됨) |
| Privilege | 객체에 대한 접근 수준을 정의 (예: SELECT, MODIFY, REMOVE) |
| User | Snowflake가 인식하는 사용자 또는 서비스 계정 |
Snowflake는 아래 세 가지 모델을 혼합하여 사용한다.
"Privilege → Role → User"
admin_role, sales_role 같은 Role을 만들어 각 User에게 부여Privilege (SELECT / MODIFY / REMOVE)
└→ Role (admin_role / sales_role)
└→ User
RBAC 정의 → "접근 권한(Privilege)은 Role에 부여되고, 그 Role은 다시 User에게 할당된다."
"객체를 소유한 Role이 해당 객체에 대한 권한을 자유롭게 부여"
객체를 생성한 Role이 자동으로 Owner가 되며, Owner Role은 아래 3가지 권한을 가진다.
DAC 동작 예시 (강의 슬라이드 Image 3 기준):
Role A (owns) → Object
│
└(GRANTS)→ Role B
└(SELECT)→ Object
DAC 정의 → "각 객체는 소유자(Owner)를 가지며, 소유자는 해당 객체에 대한 접근 권한을 다른 Role에게 부여할 수 있다."
"Privilege를 Role 없이 User에게 직접 부여"
Privilege → User 로 직접 연결되는 방식USE SECONDARY ROLE = ALL 설정 시에만 User에게 직접 부여된 권한이 고려됨💡 포인트: Snowflake가 UBAC를 주로 사용하지 않는 이유를 기억할 것
→ User-level privilege 관리는 규모가 커질수록 관리가 어렵고 보안 위험 증가
DAC의 변형으로, 일반 DAC에서 발생할 수 있는 권한 분산 문제를 해결한다.
CREATE SCHEMA my_schema WITH MANAGED ACCESS;
| 구분 | 일반 Schema (Regular) | Managed Access Schema |
|---|---|---|
| 권한 부여 주체 | 객체 소유자(Object Owner) | Schema Owner만 가능 |
| MANAGE GRANTS 보유자 | 가능 | 가능 |
Managed Access Schema 정의 → "관리형 액세스 스키마에서는 객체 소유자가 권한 부여 결정 권한을 잃는다. 오직 스키마 소유자 또는 MANAGE GRANTS privilege를 가진 Role만이 권한을 부여할 수 있다."
모든 Securable Object는 아래 컨테이너 계층 안에 존재한다.
Organization
└── Account
├── User
├── Role
├── Database ──(MODIFY / USAGE)──→ Schema
│ ├── Table
│ ├── View
│ ├── Stage
│ ├── Stored Proc
│ ├── UDF
│ └── Other
├── Warehouse
└── Other
Securable Object에 대한 핵심 규칙:
SHOW <object> 명령으로 확인 가능Owning Role의 권한:
1. 해당 객체에 대한 모든 Privilege 기본 보유
2. 다른 Role에게 Privilege를 부여(Grant)하거나 취소(Revoke) 가능
3. 다른 Role로 소유권(Ownership) 이전 가능
4. Owning Role이 공유될 경우 객체에 대한 공동 제어 가능
MANAGE GRANTS 글로벌 Privilege:
이 Privilege를 가진 Role은 모든 객체에 대해 Privilege를 부여하거나 취소할 수 있다.
| Privilege | 설명 |
|---|---|
| SELECT | 데이터 조회 |
| MODIFY | 데이터 수정 |
| REMOVE | 데이터 삭제 |
| USAGE | Schema/Warehouse 사용 |
| MODIFY (on Schema) | Schema 수정 |
| 포인트 | 내용 |
|---|---|
| Snowflake 주요 모델 | RBAC + DAC 혼합 사용 |
| UBAC 사용 여부 | 기본 미사용, 확장성·보안 문제로 RBAC 권장 |
| 객체 소유자 | 객체를 생성한 Role이 자동으로 Owner |
| Managed Access Schema | Object Owner가 아닌 Schema Owner만 권한 부여 가능 |
| 기본 접근 정책 | Grant가 없으면 항상 거부(deny) |
| MANAGE GRANTS | 이 Privilege 보유 Role은 모든 객체 권한 관리 가능 |
| SHOW <object> | 소유 Role 확인 명령어 |