Skip to main content

Unity Catalog의 권한 모델

Unity Catalog는 ANSI SQL 표준 의 GRANT/REVOKE 문을 사용하여 데이터 접근 권한을 관리합니다. 모든 보안 가능한 객체(Securable Object)에 대해 세밀한 권한 제어가 가능합니다.

보안 가능한 객체 계층

💡 권한 상속: 상위 객체에 부여된 권한은 하위 객체에 자동으로 상속 됩니다. 예를 들어, Catalog에 SELECT를 부여하면 해당 Catalog 아래의 모든 Schema, Table에 SELECT 권한이 적용됩니다.

권한 유형 (Privilege Types)

데이터 객체 권한

관리 권한


GRANT / REVOKE 문법

기본 문법

principal(권한 대상)

실전 예시


행 수준 보안 (Row-Level Security)

💡 행 필터(Row Filter) 를 사용하면, 사용자마다 보이는 행을 다르게 설정할 수 있습니다. 예를 들어, 서울 지역 담당자에게는 서울 데이터만 보이도록 할 수 있습니다.

설정 방법

동작 방식


열 수준 보안 (Column Masking)

💡 컬럼 마스킹(Column Mask) 을 사용하면, 민감한 컬럼의 값을 사용자 권한에 따라 마스킹(가림) 처리 할 수 있습니다. 원본 데이터를 변경하지 않고, 조회 시 동적으로 적용됩니다.

설정 방법

동작 방식


태그 기반 접근 제어 (ABAC)

🆕 ABAC(Attribute-Based Access Control) 는 거버넌스 태그를 기반으로 접근 정책을 정의하는 기능입니다 (Public Preview). 개별 테이블/컬럼마다 권한을 설정하는 대신, 태그가 붙은 모든 객체에 일괄 적용 할 수 있습니다.

태그 기반 정책 예시


권한 관리 모범 사례

일반적인 역할별 권한 설정


현업 사례: 권한을 개인에게 직접 줬다가 퇴사자 정리에 3일 걸린 경험

🔥 거의 모든 조직에서 한 번쯤 겪는 문제입니다.
프로젝트 초기에는 팀원이 5명이라 “그냥 개인한테 직접 GRANT 해주면 편하지”라고 생각합니다. 하지만 6개월이 지나면 상황이 완전히 달라집니다.

실제 사고 시나리오

이것을 안 하면 벌어지는 일


그룹 기반 권한 설계 패턴 (역할별 3~5개 그룹)

현업에서 가장 효과적인 권한 관리 방법은 역할(Role) 기반의 그룹 을 설계하는 것입니다. 개인에게는 절대 직접 GRANT하지 않고, 그룹 멤버십만 관리합니다.

권장 그룹 설계 (5개 기본 그룹)

사용자 관리는 그룹 멤버십만으로

💡 현업 팁: 그룹은 IdP(Azure AD, Okta 등)에서 관리하고 SCIM으로 동기화 하는 것이 가장 좋습니다. 사람이 퇴사하면 HR 시스템 → IdP → Databricks로 자동 연쇄 삭제됩니다. 수동으로 Databricks 그룹을 관리하면 반드시 빠뜨리는 사람이 생깁니다.

최소 권한 원칙의 실전 적용

“최소 권한 원칙(Principle of Least Privilege)“은 보안 교과서에 항상 나오지만, 현업에서 적용하려면 구체적인 패턴이 필요합니다.

흔한 실수: ALL PRIVILEGES의 유혹

환경별 권한 차등 적용

서비스 프린시팔 활용

💡 이것은 프로덕션 환경에서 가장 중요한 패턴입니다.

정기 감사 쿼리

💡 현업 팁: 분기에 한 번 “이 사람이 정말 이 권한이 필요한가?”를 검토하는 권한 리뷰(Access Review) 를 하세요. 프로젝트가 끝났는데 권한이 남아있는 경우가 전체의 30% 이상입니다. 이것을 안 하면 시간이 지날수록 권한이 비대해지는(Privilege Creep) 현상이 발생합니다.

정리


참고 링크