Автоматизация прав каталога Unity Azure Databricks на уровне таблицы

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

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

В этой статье я собираюсь предоставить скрипт, который автоматизирует управление разрешениями на уровне таблицы Единого каталога. 

Привилегии на уровне таблицы Единого каталога

Unity Catalog privilege model

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

1. Гранулярный контроль доступа

Когда вам необходимо предоставить или ограничить доступ к определенным таблицам или представлениям без влияния на всю схему.

Это особенно важно, когда схема содержит конфиденциальные данные, и вы хотите разрешить доступ к некоторым таблицам, ограничив доступ к другим.

2. Защита конфиденциальных данных

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

Например, вы можете разрешить доступ к некоторым таблицам с суммарными или агрегированными данными, но ограничить доступ к сырым, подробным таблицам, содержащим конфиденциальную информацию.

3. Делегирование доступа конкретным командам/пользователям, если в схеме присутствуют таблицы, предназначенные для нескольких команд

Когда различным пользователям или командам требуется доступ к различным таблицам в одной и той же схеме. Например, команда по продажам может нуждаться в доступе к таблицам, связанным с клиентами, в то время как команда финансов должна иметь доступ к таблицам с данными о доходах.

Применение разрешений на уровне таблиц гарантирует, что каждая команда может получить доступ только к таблицам, необходимым для их работы.

4. Соблюдение политики управления данными

При соблюдении строгих политик управления данными вам может потребоваться контроль доступа на более детальном уровне (до отдельных таблиц). Разрешения на уровне таблиц помогают обеспечить соответствие, предоставляя доступ только к данным, с которыми пользователь или роль имеет право работать.

5. Обработка смешанных потребностей доступа в рамках схемы

В случаях, когда схема содержит таблицы с разными уровнями чувствительности или конфиденциальности, применение разрешений на уровне схемы может быть слишком широким. Разрешения на уровне таблицы позволяют управлять доступом к каждой таблице индивидуально в зависимости от конкретных потребностей.

Разрешения, которые могут быть применены на уровне таблицы 

  • SELECT: Предоставляет доступ на чтение таблицы, позволяя пользователям выполнять запросы.
  • MODIFY: Предоставляет возможность добавлять, удалять и изменять данные в объекте.
  • APPLY TAG: Предоставляет возможность применять теги к объекту.
  • ALL PRIVILEGES: Предоставляет все привилегии.

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

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

  • Каталог Unity уже настроен.
  • Один или несколько принципалов связаны с рабочим пространством Databricks.
  • Пользователь, запускающий сценарий настройки разрешений, имеет соответствующие разрешения на таблицы, схему и каталог.

Шаг 1: Создание блокнота и объявление переменных 

Создайте блокнот в рабочем пространстве Databricks. Чтобы создать блокнот в вашем рабочем пространстве, щелкните “+” Новый на боковой панели, а затем выберите Блокнот

В рабочем пространстве открывается пустой блокнот. Убедитесь, что выбран язык блокнота Python.

Скопируйте и вставьте фрагмент кода ниже в ячейку блокнота и запустите ячейку.

Python

 

Шаг 2: Установите каталог и схему

Скопируйте, вставьте и запустите нижеприведенный блок кода в новой или существующей ячейке, затем запустите ячейку.

Python

 

Шаг 3: Переберите принципалов и привилегии и примените разрешение в каталоге, схеме и таблицах

Скопируйте, вставьте и запустите нижеприведенный блок кода в новой или существующей ячейке, затем запустите ячейку для применения разрешений.

Python

 

Проверка

Вы можете проверить разрешения, открыв Databricks UI и перейдя в раздел “Каталог” в Обозревателе данных. Как только каталог появится в разделе данных, щелкните по каталогу, затем разверните схему и выберите таблицу внутри схемы, к которой были применены разрешения, и перейдите на вкладку “разрешения”. Теперь вы можете увидеть все привилегии, примененные к таблице. Ниже приведен снимок экрана разрешений, примененных к таблице во встроенной таблице каталога в основном каталоге и схеме information_schema.

Вы также можете запустить нижеприведенный SQL-скрипт в блокноте, чтобы отобразить все разрешения для таблицы в рамках вашей проверки.

SQL

 

Заключение

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

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