Controlos de acesso baseados em atributos multimotor (ABAC)

Importante

O ABAC cross-engine está em Beta.

Motores externos podem ler tabelas do Catálogo Unity com políticas de controlo de acesso baseadas em atributos (ABAC ) aplicadas. Isto permite aplicar filtros de linhas ABAC e máscaras de coluna que são aplicadas dinamicamente, mesmo ao consultar a partir de fora do Azure Databricks.

Quando um motor externo consulta uma tabela com políticas ABAC anexadas, o Azure Databricks utiliza uma camada de computação serverless especializada para filtrar e devolver dados sanitizados ao motor externo.

Requirements

Para aplicar controlos de acesso granulares em tabelas consultadas a partir de mecanismos externos, tem de concluir o seguinte:

Crie uma tabela Delta gerida com confirmações no catálogo

Para criar uma nova tabela Delta gerida com confirmações no catálogo (requer o Databricks Runtime 16.4 ou superior):

CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;

Para atualizar uma tabela gerida existente (requer Databricks Runtime 18.0 e superior):

ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');

Depois de criar a tabela, pode aplicar políticas ABAC, filtros de linha ou máscaras de coluna.

Veja Criar uma política ou Aplicar manualmente filtros de linhas e máscaras de coluna.

Leia tabelas com Apache Spark (Delta)

Configure o Apache Spark com Delta-Spark 4.1 ou superior e o conector Unity Catalog Spark 0.4 ou superior.

"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

Defina ServerSidePlanning.enabled como true para permitir a aplicação granular do controlo de acesso por motores externos.

Substitua as seguintes variáveis:

  • <uc-catalog-name>: O nome do catálogo no Unity Catalog que contém suas tabelas.
  • : A URL do espaço de trabalho Azure Databricks , incluindo o ID do espaço de trabalho.
  • <oauth-token-endpoint>: URL do endpoint de token OAuth. Ver Autorizar o acesso do principal de serviço ao Azure Databricks com OAuth.
  • <oauth-client-id>: ID de cliente OAuth para o principal de autenticação.
  • <oauth-client-secret>: Segredo do cliente OAuth para o principal autenticador.

Ler tabelas com Apache Spark (Iceberg)

Configure o Apache Spark com Iceberg-Spark 1.11 ou superior e o Apache Spark 4.0 ou superior.

"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>"

Substitua as seguintes variáveis:

  • <uc-catalog-name>: O nome do catálogo no Unity Catalog que contém suas tabelas.
  • : A URL do espaço de trabalho Azure Databricks , incluindo o ID do espaço de trabalho.
  • <oauth-token-endpoint>: URL do endpoint de token OAuth. Ver Autorizar o acesso do principal de serviço ao Azure Databricks com OAuth.
  • <oauth-client-id>: ID de cliente OAuth para o principal de autenticação.
  • <oauth-client-secret>: Segredo do cliente OAuth para o principal autenticador.

Consultar dados

Pode consultar a tabela usando APIs SQL ou DataFrame do Apache, Spark. O Azure Databricks aplica políticas de acesso detalhadas nos bastidores.

SELECT * FROM <uc-catalog-name>.<schema>.<table>;

Advertência

Escritas simultâneas durante o planeamento de consultas podem fazer com que a mesma tabela seja lida a partir de diferentes capturas instantâneas da tabela em consultas com autojunção e com múltiplos varrimentos, podendo resultar em resultados incorretos.

Custos de computação sem servidor

O ABAC entre motores utiliza recursos de computação sem servidor para impor políticas de acesso granulares no lado do servidor. Os clientes são cobrados por estes recursos. Para informações sobre preços, consulte Preços de produtos Beta.

Os utilizadores com acesso à tabela do sistema de faturação podem consultar system.billing.usage quanto lhes foi cobrado. Por exemplo, a consulta a seguir divide os custos de computação por usuário:

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;

Limitações

  • Apenas são suportadas leituras a partir de motores externos quando são aplicados controlos de acesso finos (FGAC). Para escrever, deve isentar o principal responsável pela redação da apólice ABAC.
  • Vistas dinâmicas não são suportadas.
  • Não é suportada a projeção de VARIANT colunas.
  • A filtragem em colunas BINARY não é suportada.
  • Funções de mascaramento de coluna cujo tipo de retorno difere do tipo de coluna original não são suportadas.
  • Grandes agregações podem sofrer degradação de desempenho.