Controles de acceso basados en atributos (ABAC) entre motores

Important

ABAC multimotor está en Beta.

Los motores externos pueden leer tablas de Unity Catalog con políticas de control de acceso basadas en atributos (ABAC) aplicadas. Esto te permite aplicar filtros de fila basados en ABAC y máscaras de columna que se aplican de forma dinámica, incluso al consultar desde fuera de Azure Databricks.

Cuando un motor externo consulta una tabla con directivas de ABAC asociadas, Azure Databricks usa una capa de proceso sin servidor especializada para filtrar y devolver datos saneados al motor externo.

Requirements

Para aplicar controles de acceso específicos en tablas consultadas desde motores externos, debe completar lo siguiente:

Creación de una tabla delta administrada con confirmaciones de catálogo

Para crear una nueva tabla delta administrada con confirmaciones de catálogo (requiere Databricks Runtime 16.4 y versiones posteriores):

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

Para actualizar una tabla administrada existente (requiere Databricks Runtime 18.0 y versiones posteriores):

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

Después de crear la tabla, puede aplicar directivas de ABAC, filtros de fila o máscaras de columna.

Consulte Crear una directiva o Aplicar manualmente filtros de fila y máscaras de columna.

Lectura de tablas con Apache Spark (Delta)

Configure Apache Spark con Delta-Spark 4.1 o superior y el conector Spark de Unity Catalog 0.4 o 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

Establezca ServerSidePlanning.enabled en true para habilitar la aplicación estricta de un control de acceso granular desde motores externos.

Sustituya las siguientes variables:

  • <uc-catalog-name>: El nombre del catálogo en Unity Catalog que contiene tus tablas.
  • <workspace-url>: la dirección URL del área de trabajo de Azure Databricks, incluido el identificador del área de trabajo.
  • <oauth-token-endpoint>: dirección URL del punto de conexión del token de OAuth. Consulte Autorizar el acceso del principal de servicio a Azure Databricks con OAuth.
  • <oauth-client-id>: ID de cliente OAuth para la entidad de seguridad autenticadora.
  • <oauth-client-secret>: Secreto de cliente OAuth para la entidad de seguridad autenticadora.

Leer tablas con Apache Spark (Iceberg)

Configure Apache Spark con Iceberg-Spark 1.11 o superior y Apache Spark 4.0 o 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>"

Sustituya las siguientes variables:

  • <uc-catalog-name>: El nombre del catálogo en Unity Catalog que contiene tus tablas.
  • <workspace-url>: la dirección URL del área de trabajo de Azure Databricks, incluido el identificador del área de trabajo.
  • <oauth-token-endpoint>: dirección URL del punto de conexión del token de OAuth. Consulte Autorizar el acceso del principal de servicio a Azure Databricks con OAuth.
  • <oauth-client-id>: ID de cliente OAuth para la entidad de seguridad autenticadora.
  • <oauth-client-secret>: Secreto de cliente OAuth para la entidad de seguridad autenticadora.

Consultar datos

Puede consultar la tabla mediante las API de Sql o DataFrame de Apache Spark. Azure Databricks aplica directivas de acceso específicas en segundo plano.

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

Advertencia

Las escrituras simultáneas durante la planeación de consultas pueden hacer que la misma tabla se lea de diferentes instantáneas de tabla en consultas de autocombinación y de análisis múltiple, lo que podría dar lugar a resultados incorrectos.

Costos de proceso sin servidor

ABAC entre motores usa recursos de computación sin servidor para aplicar políticas de acceso granulares en el servidor. A los clientes se les cobra por el uso de estos recursos. Para obtener información sobre los precios, consulte Precios del producto beta.

Los usuarios con acceso a la tabla del sistema de facturación pueden consultar system.billing.usage para ver cuánto se les ha cargado. Por ejemplo, la consulta siguiente desglosa los costos de proceso por usuario:

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;

Limitaciones

  • Solo se admiten lecturas desde motores externos cuando se aplican controles de acceso específicos (FGAC). Para escribir, debe eximir a la entidad principal de escritura de la política ABAC.
  • No se admiten vistas dinámicas.
  • No se admite la proyección de VARIANT columnas.
  • No se admite el filtrado en BINARY columnas.
  • No se admiten funciones de enmascaramiento de columnas cuyo tipo de valor devuelto difiere del tipo de columna original.
  • Las agregaciones grandes pueden experimentar una degradación del rendimiento.