Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Кросс-обработчик ABAC находится в бета-версии.
Внешние механизмы могут читать таблицы Unity Catalog с применением детализированных средств контроля доступа. Это включает как политики управления доступом на основе атрибутов (ABAC), так и автономные фильтры строк и маски столбцов, все динамически применяются даже при запросе извне Azure Databricks.
Когда внешний модуль запрашивает таблицу с политиками ABAC, фильтрами строк или масками столбцов, подключенными, Azure Databricks использует специализированный бессерверный вычислительный слой для фильтрации и возврата санированных данных во внешний механизм.
Requirements
Чтобы применить детализированные механизмы управления доступом к таблицам, к которым обращаются из внешних механизмов, необходимо выполнить следующие действия.
- Включите доступ к внешним данным в хранилище метаданных каталога Unity.
- Предоставьте запрашивающему субъекту привилегию
EXTERNAL USE SCHEMA. - Используйте управляемую таблицу с фиксациями в каталоге.
- Выполните проверку подлинности с помощью OAuth для взаимодействия «машина-машина» (M2M) или персонального токена доступа (PAT).
Создайте управляемую таблицу Delta с коммитами каталога
Чтобы создать новую управляемую таблицу Delta с фиксацией изменений в каталоге (требуется Databricks Runtime 16.4 и более поздних версий):
CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
Для обновления существующей управляемой таблицы (требуется Среда выполнения Databricks 18.0 и выше):
ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
После создания таблицы можно применить политики ABAC, фильтры строк или маски столбцов.
См. Создание политики или Применение фильтров строк и масок столбцов вручную.
Чтение таблиц с помощью Apache Spark (Delta)
Настройте Apache Spark с Delta-Spark версии 4.1 или выше и коннектором Spark для Unity Catalog версии 0.4 или выше.
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.auth.type": "oauth",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientId": "<oauth-client-id>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientSecret": "<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.ServerSidePlanning.enabled": "true",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_4.0_2.13:4.1.0,io.delta:delta-iceberg_2.13:4.1.0,io.unitycatalog:unitycatalog-spark_2.13:0.4.0,org.apache.hadoop:hadoop-azure:3.4.2"
Note
Установите ServerSidePlanning.enabled в значение true, чтобы включить применение детализированного контроля доступа внешними механизмами.
Замените следующие переменные:
-
<uc-catalog-name>: имя каталога в каталоге Unity, содержащего таблицы. -
<workspace-url>: URL-адрес рабочей области Azure Databricks, включая идентификатор рабочей области. -
<oauth-token-endpoint>: URL-адрес конечной точки маркера OAuth. См Авторизация доступа сервисного принципала к Azure Databricks с помощью OAuth. -
<oauth-client-id>: идентификатор клиента OAuth для субъекта проверки подлинности. -
<oauth-client-secret>: секрет клиента OAuth для аутентифицирующего субъекта.
Чтение таблиц с помощью Apache Spark (Iceberg)
Настройте Apache Spark с Iceberg-Spark версии 1.11 или более поздней версии и Apache Spark 4.0 или более поздней версии.
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
"spark.sql.catalog.<uc-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<uc-catalog-name>.type": "rest",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg-rest/",
"spark.sql.catalog.<uc-catalog-name>.credential": "<oauth-client-id>:<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.oauth2-server-uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.warehouse": "<uc-catalog-name>",
"spark.sql.catalog.<uc-catalog-name>.cache-enabled": "false",
"spark.sql.defaultCatalog": "<uc-catalog-name>"
Замените следующие переменные:
-
<uc-catalog-name>: имя каталога в каталоге Unity, содержащего таблицы. -
<workspace-url>: URL-адрес рабочей области Azure Databricks, включая идентификатор рабочей области. -
<oauth-token-endpoint>: URL-адрес конечной точки маркера OAuth. См Авторизация доступа сервисного принципала к Azure Databricks с помощью OAuth. -
<oauth-client-id>: идентификатор клиента OAuth для субъекта проверки подлинности. -
<oauth-client-secret>: секрет клиента OAuth для аутентифицирующего субъекта.
Запрос данных
Вы можете запросить таблицу с помощью API Apache Spark SQL или DataFrame. Azure Databricks применяет более точные политики доступа за кулисами.
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
Предупреждение
Одновременные записи во время планирования запросов могут привести к тому, что одна и та же таблица будет читаться из разных снимков состояния в запросах с самосоединением и с многократным сканированием, что потенциально может приводить к некорректным результатам.
Затраты на бессерверные вычисления
Межплатформенный ABAC использует бессерверные вычислительные ресурсы для обеспечения соблюдения детализированных политик доступа на стороне сервера. Клиентам взимается плата за эти ресурсы. Сведения о ценах см. в разделе "Цены на бета-продукты".
Пользователи, имеющие доступ к таблице биллинговой системы, могут выполнять запросы к system.billing.usage, чтобы увидеть, какая сумма была им начислена. Например, следующий запрос разбивает затраты на вычисления по пользователям:
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by cross-engine ABAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2026-06-01' AND '2026-07-01'
AND billing_origin_product = 'EXTERNAL_COMPATIBILITY'
GROUP BY 1, 2, 3 ORDER BY 1;
Ограничения
- Из внешних механизмов поддерживаются только операции чтения, если включено детализированное управление доступом (FGAC). Для записи необходимо исключить субъект записи из политики ABAC.
- Динамические представления не поддерживаются.
- Проецирование столбцов
VARIANTне поддерживается. - Фильтрация по
BINARYстолбцам не поддерживается. - Функции маскирования столбцов, у которых тип возвращаемого значения отличается от исходного типа столбца, не поддерживаются.
- При больших агрегациях возможно снижение производительности.