Control del acceso externo a los datos en Unity Catalog
Importante
Esta característica está en versión preliminar pública.
Sugerencia
Para obtener información sobre cómo leer datos de Azure Databricks mediante Microsoft Fabric, consulte Uso de Microsoft Fabric para leer datos registrados en el catálogo de Unity.
En este artículo se describe cómo controlar el acceso a los datos en Azure Databricks cuando los motores de procesamiento externos usan API abiertas de Unity Catalog o API de Cosmos para acceder a esos datos, específicamente cuando los motores usan la función de venta de credenciales de Unity Catalog para obtener acceso.
Los controles de acceso descritos en este artículo tratan escenarios en los que se usan credenciales temporales para leer datos de los catálogos de Unity Catalog mediante motores externos e interfaces como:
- API REST de Iceberg
- Microsoft Fabric
- duckDB
- Apache Spark y Trino
Nota:
El catálogo de Unity también implementa API de REST de Iceberg mediante Delta Lake UniForm, una manera alternativa de proporcionar a los clientes de Iceberg acceso de solo lectura a tablas Delta en Unity Catalog. Consulte Uso de UniForm para leer tablas Delta con clientes de Iceberg.
Información general sobre la venta de credenciales y la concesión de acceso al motor externo
Cuando quiera usar un motor externo para acceder a los datos registrados en el metastore de Unity Catalog, debe solicitar una credencial de corta duración mediante la API REST de Unity Catalog. El proceso por el que Unity Catalog concede esa credencial se denomina expendición de credenciales.
Para conceder una credencial temporal, la entidad de seguridad de Azure Databricks (usuario, grupo o entidad de servicio) que realiza la solicitud debe tener el privilegio EXTERNAL USE SCHEMA
en el esquema que contiene la tabla a la que quieren acceder desde el motor externo. El metastore de Unity Catalog que contiene el esquema también debe habilitarse explícitamente para el acceso externo.
Cuando se ha concedido a la entidad de seguridad con privilegios la credencial temporal, recibe una cadena de token de acceso de corta duración y una dirección URL de ubicación de almacenamiento en la nube que los usuarios del motor externo pueden usar para acceder al objeto de datos (tabla) desde la ubicación de almacenamiento en la nube. La forma en que el motor externo usa las credenciales y el token es específico del motor externo y no se trata aquí.
El motor externo y la configuración de Unity Catalog de Azure Databricks también deben cumplir requisitos de red específicos que se muestran en las secciones siguientes.
Requisitos
En esta sección se muestran las configuraciones de red, las opciones de metastore de Unity Catalog, los tipos de tabla y los permisos necesarios para el acceso seguro a los objetos de datos de Unity Catalog desde motores externos mediante las API abiertas de Unity Catalog o las API REST de Cosmos.
Requisitos de red
- Para acceder al área de trabajo de Azure Databricks mediante las API abiertas de Unity Catalog o las API REST de Cosmos, la dirección URL del área de trabajo debe ser accesible para el motor que realiza la solicitud. Esto incluye áreas de trabajo que usan listas de acceso de IP o Azure Private Link.
- Para acceder a la ubicación de almacenamiento en la nube subyacente para objetos de datos registrados en Unity Catalog, las direcciones URL de almacenamiento que genera la API de credenciales temporales de Unity Catalog deben ser accesibles para el motor que realiza la solicitud. Esto significa que el motor debe estar permitido en las listas de servidor de seguridad y control de acceso de red para las cuentas de almacenamiento en la nube subyacentes.
Requisitos de metadatos y objetos de datos de Unity Catalog
- El metastore debe estar habilitado para el Acceso a datos externos.
- Durante la versión preliminar pública, solo se admiten tablas.
- Las tablas externas admiten lectura y escritura.
- Las tablas administradas solo se pueden leer.
- No se admiten los tipos de datos siguientes:
- Tablas con filtros de fila o máscaras de columna.
- Tablas compartidas con Delta Sharing.
- Tablas federadas de Lakehouse (tablas externas).
- Vistas
- Vistas materializadas
- Tablas de streaming de Delta Live Tables.
- Tablas en línea.
- Índices de vector de búsqueda.
Requisitos de permisos de
La entidad de seguridad que solicita la credencial temporal debe tener lo siguiente:
Privilegio
EXTERNAL USE SCHEMA
en el esquema contenedor o en su catálogo primario.Este privilegio siempre debe concederse explícitamente. Solo el propietario del catálogo primario puede concederlo. Para evitar la filtración accidental,
ALL PRIVILEGES
no incluye el privilegioEXTERNAL USE SCHEMA
y los propietarios de esquemas no tienen este privilegio de manera predeterminada.Permiso
SELECT
en la tabla,USE CATALOG
en su catálogo primario yUSE SCHEMA
en su esquema primario.
Habilitación del acceso a datos externos en el metastore
A fin de permitir que los motores externos accedan a los datos de un metastore, un administrador de metastore debe habilitar el acceso a datos externos para el metastore. Esta opción está deshabilitada de manera predeterminada para evitar el acceso externo no autorizado.
- En un área de trabajo de Azure Databricks asociada al metastore, haga clic en Catálogo.
- Haga clic en el icono de engranaje en la parte superior del panel Catálogo y seleccione Metastore.
- En la pestaña Detalles, habilite Acceso a datos externos.
Solicitud de una credencial temporal para el acceso a datos externos
A fin de solicitar una credencial temporal para el acceso a datos externos, un usuario de área de trabajo que cumpla los requisitos mencionados anteriormente debe usar la API /api/2.1/unity-catalog/temporary-table-credentials
.
Nota:
Puede recuperar una lista de tablas que admiten la expendición de credenciales invocando la API ListTables con la opción include_manifest_capabilities
habilitada. Solo las tablas marcadas con HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT
o HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT
son aptas para la referencia en la API temporary-table-credentials. Vea GET /api/2.1/unity-catalog/tables.
Por ejemplo:
curl -X POST -H "Authentication: Bearer $OAUTH_TOKEN" \
https://<workspace-instance>/api/2.1/unity-catalog/temporary-table-credentials \
-d '{"table_id": "<string>", "operation_name": "<READ|READ_WRITE>"}'
Para obtener más información, vea POST /api/2.1/unity-catalog/temporary-table-credentials en la referencia de la API REST de Azure Databricks.