Добавление ресурса таблицы Unity Catalog в приложение Databricks

Добавьте таблицы каталога Unity в качестве ресурсов Databricks Apps, чтобы приложение могло запрашивать и изменять данные, хранящиеся в каталоге Unity, с помощью управления данными и управления доступом. Таблицы каталога Unity предоставляют структурированное хранилище данных с точными разрешениями, поэтому ваше приложение может безопасно считывать и записывать данные без жесткого ввода учетных данных.

Требования к привилегиям

Чтобы получить доступ к таблице каталога Unity, субъект-служба приложения должна иметь привилегию USE CATALOG на родительский каталог, привилегию USE SCHEMA на родительскую схему, а также привилегию SELECT или MODIFY на таблицу. При добавлении ресурса таблицы Azure Databricks автоматически предоставляет все нужные привилегии служебному участнику приложения.

Для успешного предоставления этой привилегии одно из следующих условий должно выполняться для каждой привилегии:

  • Для USE CATALOG: у всех пользователей учетной записи есть USE CATALOG привилегия на каталоге или у вас есть MANAGE привилегия на каталоге.
  • Для USE SCHEMA: либо у всех пользователей учетной записи есть привилегия USE SCHEMA на схему, либо у вас есть привилегия MANAGE на схему.
  • Для SELECT или MODIFY: либо все пользователи учетной записи имеют SELECT или MODIFY привилегии на таблицу, либо у вас есть привилегия MANAGE на таблицу.

Смотрите справочник по привилегиям Unity Catalog.

Добавьте ресурс таблицы Unity Catalog

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

  1. В разделе "Ресурсы приложения" при создании или изменении приложения нажмите кнопку "Добавить> ресурсов".
  2. Выберите таблицу каталога Unity из доступных таблиц в рабочей области. Таблица уже должна существовать в каталоге Unity.
  3. Выберите соответствующий уровень разрешений для приложения:
    • Выберите: Предоставляет приложению разрешение на запрос и чтение данных из таблицы. Это подходит для приложений, которые должны считывать только данные.
    • Изменить: Предоставляет приложению разрешение на вставку, обновление и удаление данных в таблице. Это разрешение неявно включает в себя SELECT, поэтому приложение также может считывать данные.
  4. (Необязательно) Укажите пользовательский ключ ресурса, который является ссылкой на таблицу в конфигурации приложения. Ключ по умолчанию — table.

Замечание

MODIFY недоступно для всех типов таблиц. Например, представления не поддерживают привилегию MODIFY . Если таблица не поддерживает MODIFY, доступен только SELECT.

Переменные среды

При развертывании приложения с ресурсом таблицы каталога Unity Azure Databricks предоставляет полное трехуровневое имя таблицы с помощью переменных среды, на которые можно ссылаться с помощью поля valueFrom.

Пример конфигурации:

env:
  - name: UC_TABLE_NAME
    valueFrom: table # Use your custom resource key if different

Использование таблицы в приложении:

import os
from databricks.sdk import WorkspaceClient

# Access the table name
table_name = os.getenv("UC_TABLE_NAME")

# Initialize workspace client
w = WorkspaceClient()

# Query the table using a SQL warehouse resource
result = w.statement_execution.execute_statement(
    warehouse_id=os.getenv("DATABRICKS_WAREHOUSE_ID"),  # Requires a SQL warehouse resource
    statement=f"SELECT * FROM {table_name} LIMIT 10"
)

Дополнительные сведения см. в разделе "Использование переменных среды для доступа к ресурсам".

Удалить ресурс таблицы каталога Unity

При удалении ресурса таблицы каталога Unity из приложения субъект-служба приложения теряет права SELECT, MODIFY, и ALL PRIVILEGES на таблицу. Azure Databricks также пытается отозвать разрешения иерархического каталога и схемы. Сама таблица остается неизменной и по-прежнему доступна для других пользователей и приложений с соответствующими разрешениями.

Рекомендации

При работе с ресурсами таблицы каталога Unity следует учитывать следующее:

  • Предоставьте минимальные разрешения. Используйте SELECT , если приложение не должно записывать данные в таблицу.
  • Объедините ресурсы таблицы с ресурсом хранилища SQL , если приложению требуется выполнить sql-запросы к таблице.
  • Используйте отдельные ресурсы таблицы для разных таблиц, а не предоставляйте широкий доступ на уровне схемы, чтобы можно было применить принцип наименьших привилегий.
  • Рекомендуется использовать тома каталога Unity для неструктурированных данных и таблицы каталога Unity для структурированных данных.