Pular para o conteúdo principal

Controles de acesso entre mecanismos baseados em atributos (ABAC)

info

Beta

O ABAC entre mecanismos está em Beta.

Mecanismos externos podem ler tabelas do Unity Catalog com políticas de controles de acesso baseados em atributos (ABAC) aplicadas. Isto permite aplicar filtros de linha e máscaras de coluna ABAC que são impostos dinamicamente, mesmo ao consultar de fora do Databricks.

Quando um mecanismo externo consulta uma tabela com políticas ABAC anexadas, o Databricks usa uma camada de compute serverless especializada para filtrar e retornar dados higienizados para o mecanismo externo.

Requisitos

Para impor controles de acesso refinados em tabelas consultadas de mecanismos externos, é preciso concluir o seguinte:

Para criar uma nova tabela Delta gerenciada com commits de catálogo (requer Databricks Runtime 16.4 e superior):

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

Para atualizar uma tabela gerenciada existente (requer Databricks Runtime 18.0 ou acima):

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

Depois que a tabela for criada, podem ser aplicadas políticas ABAC, filtros de linha ou máscaras de coluna.

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

Ler tabelas com Apache Spark (Delta)

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

ini
"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.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"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-aws:3.4.1"
nota

Defina ServerSidePlanning.enabled como true para ativar a aplicação de controle de acesso detalhado de mecanismos externos.

Substitua as seguintes variáveis:

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

Ler tabelas com Apache Spark (Iceberg)

Configurar Apache Spark com Iceberg-Spark 1.11 ou acima e Apache Spark 4.0 ou acima.

ini
"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>: nome do catálogo no Unity Catalog que contém suas tabelas.
  • <workspace-url>: A URL do workspace do Databricks, incluindo o ID do workspace.
  • <oauth-token-endpoint>: URL do endpoint de token OAuth. Consulte Autorizar acesso de entidade de serviço ao Databricks com OAuth.
  • <oauth-client-id>: ID do cliente OAuth para o principal de autenticação.
  • <oauth-client-secret>: Segredo do cliente OAuth para a entidade de autenticação.

Consultar dados

Você pode consultar a tabela usando Apache Spark SQL ou APIs do DataFrame. A Databricks impõe políticas de acesso refinadas nos bastidores.

SQL
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
atenção

Gravações concorrentes durante o planejamento de consultas podem levar à leitura da mesma tabela a partir de diferentes Snapshots de tabela em consultas de auto-join e multi-scan, o que pode resultar em resultados incorretos.

Custos de compute serverless

O ABAC de vários mecanismos utiliza recursos de compute serverless para impor políticas de acesso detalhadas do lado do servidor. Os clientes são cobrados por esses recursos. Para obter informações sobre preços, consulte Preços do produto Beta.

Os usuários com acesso à tabela do sistema de faturamento podem consultar system.billing.usage para verificar o valor que lhes foi cobrado. Por exemplo, a seguinte consulta detalha os custos de compute por usuário:

SQL
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

  • Somente leituras são suportadas de mecanismos externos quando controles de acesso refinados (FGAC) são aplicados. Para escrever, deve-se isentar o principal de escrita da política ABAC.
  • Visualizações dinâmicas não são suportadas.
  • A projeção de colunas VARIANT não é suportada.
  • Filtragem em BINARY colunas não é suportada.
  • Funções de mascaramento de coluna cujo tipo de retorno difere do tipo da coluna original não são suportadas.
  • Grandes agregações poderão apresentar degradação do desempenho.