Автоматизация разрешений каталога Unity Azure Databricks на уровне схемы

Отказ от ответственности: Все мнения и взгляды, выраженные в блоге, принадлежат исключительно автору и не обязательно отражают точку зрения работодателя автора или любой другой группы или лица. Эта статья не является продвижением какой-либо облачной/платформы управления данными. Все изображения и фрагменты кода общедоступны на веб-сайте Azure/Databricks.

В этой статье я предоставлю скрипт для автоматизации управления разрешениями на уровне схемы Unity Catalog.

Привилегии на уровне схемы Unity Catalog

Unity Catalog privilege model

Иерархическая модель привилегий в Unity Catalog позволяет пользователям применять привилегии на любом уровне иерархии, и дочерний объект(ы) автоматически наследуют те же разрешения. Таким образом, если разрешение применено на уровне схемы, оно автоматически применяется ко всем таблицам, представлениям, объемам и функциям внутри схемы.

В Unity Catalog (Databricks) разрешения на уровне схемы применяются, когда вы хотите контролировать доступ к набору таблиц и представлений в определенной схеме. Разрешения на уровне схемы обычно применяются в следующих сценариях:

  1. Предоставление доступа к группам объектов: Если вы хотите управлять разрешениями для нескольких таблиц и представлений коллективно, эффективнее применять разрешения на уровне схемы, а не индивидуально для каждой таблицы или представления. Это позволяет контролировать доступ ко всем объектам в этой схеме одновременно.
  2. Организационный контроль: Когда различные команды или отделы внутри организации нуждаются в доступе к определенным наборам данных, которые хранятся в отдельных схемах. Применение разрешений на уровне схемы позволяет предоставлять или ограничивать доступ ко всем объектам, относящимся к команде в пределах этой схемы.
  3. Согласованное управление разрешениями: Для сред, где новые объекты (таблицы/представления) часто добавляются в схему, установка разрешений на уровне схемы обеспечивает автоматическое наследование разрешений новыми объектами, сокращая необходимость вручных обновлений разрешений.
  4. Поддержание безопасности данных: Когда вы хотите обеспечить контроль доступа к определенной категории набора данных (например, финансовым данным, данным HR), логически организованным в рамках схемы. Установка разрешений на уровне схемы позволяет поддерживать безопасность данных, упрощая администрирование.

Сценарий автоматизации

Предварительные требования

  • 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

 

Заключение

Автоматизация управления привилегиями в Каталоге Unity Databricks на уровне схемы помогает обеспечить последовательный и эффективный контроль доступа к группе объектов (например, таблицы, представления, функции и тома) в каталоге. Предоставленный код демонстрирует практический способ назначения привилегий на уровне схемы, что упрощает управление разрешениями среди принципалов (например, пользователей и групп). Этот подход сокращает задачи управления и вероятность ручных ошибок путем группировки таблиц и представлений внутри схемы и применения последовательных разрешений для всей схемы.

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