스키마 수준에서 Azure Databricks Unity 카탈로그 권한 자동화

면책 조항:블로그에 표현된 모든 견해와 의견은 저자에게만 속하며, 저자의 고용주나 다른 그룹 또는 개인과는 반드시 일치하지 않습니다. 이 기사는 어떠한 클라우드/데이터 관리 플랫폼의 홍보가 아닙니다. 모든 이미지와 코드 조각은 Azure/Databricks 웹사이트에서 공개적으로 사용 가능합니다..

이 기사에서는 Unity Catalog 스키마 수준에서 권한 관리를 자동화하는 스크립트를 제공하겠습니다.

Unity Catalog 스키마 수준에서의 권한

Unity Catalog privilege model

Unity Catalog의 계층적 권한 모델은 사용자가 계층의 어느 수준에서든 권한을 적용할 수 있게 하며, 하위 객체는 자동으로 동일한 권한을 상속받습니다. 따라서 스키마 수준에서 권한이 적용되면 해당 스키마 내의 모든 테이블, 뷰, 볼륨 및 함수에 자동으로 적용됩니다.

Unity Catalog (Databricks)에서 스키마 수준의 권한은 특정 스키마 내의 테이블 및 뷰 집합에 대한 접근을 제어하고자 할 때 적용됩니다. 스키마 수준의 권한은 일반적으로 다음과 같은 시나리오에서 적용됩니다:

  1. 객체 그룹에 대한 접근 부여: 여러 테이블과 뷰에 대한 권한을 집합적으로 관리하고 싶다면 각 테이블이나 뷰마다 개별적으로 권한을 부여하기보다는 스키마 수준에서 권한을 부여하는 것이 효율적입니다. 이를 통해 해당 스키마 내의 모든 객체에 대한 접근을 동시에 제어할 수 있습니다.
  2. 조직적 통제: 조직 내 다른 팀이나 부서가 특정 데이터 집합에 액세스해야 할 때, 해당 데이터는 별도의 스키마로 저장됩니다. 스키마 수준의 권한을 적용하면 해당 스키마 내 팀에 관련된 모든 객체에 대한 액세스를 승인하거나 제한할 수 있습니다.
  3. 일관된 권한 관리: 새로운 객체(테이블/뷰)가 스키마에 자주 추가되는 환경에서, 스키마 수준에서 권한을 설정하면 새로운 객체가 권한을 자동으로 상속받아 수동 권한 업데이트를 줄일 수 있습니다.
  4. 데이터 보안 유지: 특정 데이터 집합 범주(예: 금융 데이터, 인사 데이터)에 대한 액세스 제어를 강제하려는 경우, 해당 스키마 하위에 논리적으로 구성된 데이터 집합에 대한 권한을 설정함으로써 데이터 보안을 유지하면서 관리를 간소화할 수 있습니다.

자동화 스크립트

필수 사항

  • Unity Catalog가 이미 설정되어 있습니다.
  • 주체(들)이 Databricks 워크스페이스에 연결되어 있습니다.
  • 권한 스크립트를 실행하는 사용자가 스키마와 카탈로그에 적절한 권한을 갖고 있습니다.

단계1: 노트북 생성 및 변수 선언

Databricks 워크스페이스에 노트북을 생성합니다. 워크스페이스에서 노트북을 만들려면 사이드바의 “+” 새로 만들기를 클릭한 다음 노트북을 선택합니다.

아래의 코드 스니펫을 노트북 셀에 복사하여 셀을 실행합니다.

Python

 

단계 2: 카탈로그 및 스키마 설정

아래의 코드 블록을 복사하여 새 셀이나 기존 셀에 붙여넣고 실행하세요.

Python

 

단계 3: 주체 및 권한을 루프하고 카탈로그와 스키마에 권한을 부여하세요

아래의 코드 블록을 복사하여 새 셀이나 기존 셀에 붙여넣고 실행하여 권한을 적용하세요.

Python

 

유효성 검사

권한을 확인하려면 Databricks UI를 열고 카탈로그로 이동하세요. 카탈로그가 데이터 섹션에 나타나면 해당 카탈로그를 클릭한 후 권한을 적용한 스키마를 선택하고 권한 탭으로 이동하세요. 이제 스키마에 적용된 모든 권한을 확인할 수 있습니다.

Permissions applied in the default schema inside the main catalog available out of the box

또한 유효성 검사의 일환으로 노트북에서 아래의 SQL 스크립트를 실행하여 스키마의 모든 권한을 표시할 수도 있습니다.

SQL

 

결론

Databricks Unity Catalog에서 스키마 수준에서 권한 관리를 자동화하는 것은 카탈로그 내의 객체 그룹(예: 테이블, 뷰, 함수 및 볼륨)에 대한 일관된 효율적인 액세스 제어를 보장하는 데 도움이 됩니다. 제공된 코드는 스키마 수준 권한을 할당하는 실용적인 방법을 보여주며, 사용자 및 그룹과 같은 주체 간 권한을 관리하기 쉽게 만듭니다. 이 접근 방식은 스키마 내의 테이블과 뷰를 그룹화하고 전체 스키마에 대해 일관된 권한을 적용함으로써 관리 작업과 수동 오류 발생 가능성을 줄입니다.

Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-schema-level