Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- Habilite el acceso a datos externos en el metastore del catálogo de Unity.
- Otorgue a la entidad de seguridad que realiza la consulta el privilegio
EXTERNAL USE SCHEMA. - Utilice una tabla administrada con confirmaciones del catálogo.
- Autentíquese mediante OAuth de máquina a máquina (M2M) o un token de acceso personal (PAT).
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
VARIANTcolumnas. - No se admite el filtrado en
BINARYcolumnas. - 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.