권한 모델 — RBAC & ABAC
데이터를 만들었으니, 이제 누가 어떤 데이터를 볼 수 있는가를 정할 차례입니다. 접근 제어를 안 하면 아무나 민감 데이터를 보거나, 반대로 꼭 필요한 사람이 못 보게 됩니다. Unity Catalog는 이를 두 가지 방식으로 관리합니다 — 보통 RBAC로 시작하고, 민감 데이터가 많아지면 ABAC로 보완합니다.RBAC — 권한(Privilege) 기반 접근 제어
Unity Catalog는 계층적 권한(privilege) 모델로 접근을 통제합니다.GRANT/REVOKE로 principal(사용자·서비스 프린시펄·그룹)에게 securable(카탈로그 > 스키마 > 테이블·뷰·볼륨 등)에 대한 privilege를 부여하며, Databricks는 확장성을 위해 그룹 단위 부여를 권장합니다.
- 접근(Usage) 권한 —
USE CATALOG,USE SCHEMA: 상위 컨테이너 내용에 접근하기 위한 전제 권한 - 데이터 권한 —
SELECT(조회),MODIFY(insert·update·delete). 세분화 권한으로INSERT/UPDATE/DELETE - 생성·관리 —
CREATE SCHEMA·CREATE TABLE등 생성,MANAGE(권한·소유권 관리),BROWSE(객체 탐색),APPLY TAG(태그 부여) - 상속 — 상위 객체에 부여한 권한은 하위의 현재·미래 객체에 자동 적용됩니다. 예: 카탈로그에
SELECT를 부여하면 그 안의 모든 스키마·테이블에 적용됩니다. 따라서 테이블을 조회하려면 상위 카탈로그·스키마의USE CATALOG/USE SCHEMA도 필요합니다.
ABAC — 속성(Attribute) 기반 접근 제어
ABAC는 securable에 연결된 속성(governed tag)을 평가해 접근을 결정하는 모델입니다. 정책(policy)을 카탈로그·스키마·테이블 계층에 붙여두면, 해당 속성을 가진 객체에 정책이 자동으로 적용됩니다 — 객체마다 수동 설정하지 않아도 카탈로그·스키마 전체에 일관된 규칙이 걸립니다.- 정책 유형 — 컬럼 마스크(column mask): 민감 컬럼 값을 마스킹, 행 필터(row filter): 행 단위 노출을 제어 (테이블·구체화 뷰·스트리밍 테이블에 적용). 동적 GRANT 정책은 Beta.
- 예 —
piigoverned tag가 붙은 컬럼에 마스킹 정책을 한 번 정의하면, 이후 같은 태그가 붙는 새 컬럼에도 자동 적용됩니다. - 표준
GRANT권한 모델을 대체가 아니라 보완합니다 (대규모·일괄 적용에 강점).
언제 무엇을 쓰나
실무에서는 RBAC로 접근을 통제하고, 민감 데이터에는 ABAC 정책을 태그 기준으로 일괄 적용해 보완합니다.
⚠️ 워크샵 안전 규칙
- 권한 실습은 본인이 만든 오브젝트(
ccm_factory)에 대해서만 합니다.- 다른 참가자·공용 오브젝트의 권한은 변경하지 않습니다.
- 부여 프롬프트는 실제 실행 전 반드시 계획(Plan)을 읽고 승인하세요.
Step 1: 현재 권한 확인
먼저 내 카탈로그에 지금 어떤 GRANT가 걸려 있는지 봅니다.Step 2: 부여 방법 파악 (RBAC)
바로 실행하지 말고, 먼저 방법과 영향 범위를 물어봅니다.Step 3: 태그·정책 개념 확인 (ABAC)
💡 RBAC는 “누구에게 무엇을” 직접 주는 방식이라 직관적이고, ABAC는 “속성이 맞으면 자동 적용”이라 오브젝트가 많아질수록 관리가 쉽습니다. 둘은 함께 씁니다. 공식 문서: Unity Catalog 권한 · ABAC
환경 요약
다음 단계
- 01. 분석용 가상 데이터 생성 — 카메라 모듈 공장 Bronze 17테이블, 약 290만 건을 Genie Code 프롬프트로 생성