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.
En este artículo se describe cómo configurar un objeto de ubicación externa en el Catálogo de Unity para controlar el acceso al almacenamiento en la nube desde Azure Databricks.
Información general sobre las ubicaciones externas
Las ubicaciones externas asocian credenciales de almacenamiento con contenedores de almacenamiento de objetos en la nube. Las ubicaciones externas se usan para definir:
Ubicaciones de almacenamiento administradas para tablas y volúmenes administrados. Las ubicaciones de almacenamiento administradas pueden residir en el nivel de metastore, catálogo o esquema. Consulte Especificar una ubicación de almacenamiento administrada en Unity Catalog.
Ubicaciones para tablas externas y volúmenes externos.
Las ubicaciones externas pueden hacer referencia al almacenamiento en un contenedor de almacenamiento de Azure Data Lake Storage, un cubo de AWS S3 o un cubo de Cloudflare R2.
El diagrama siguiente representa la jerarquía del sistema de archivos de un único cubo o contenedor de almacenamiento en la nube, con cuatro ubicaciones externas que comparten una credencial de almacenamiento.
Información general sobre la creación de ubicaciones externas
Puede usar cualquiera de las siguientes interfaces para crear una ubicación externa:
-
Esta opción proporciona una interfaz de usuario gráfica. Puede usar el Explorador de catálogos para crear ubicaciones externas que hagan referencia a: contenedores de Azure Data Lake Storage, cubos S3 (solo lectura), cubos de Cloudflare R2 y raíz de DBFS (heredado)
Comandos SQL en un cuaderno o una consulta SQL de Databricks
En este artículo se tratan las opciones 1 y 2.
Nota
Almacenar datos en la ubicación de almacenamiento raíz de DBFS es una práctica heredada y Databricks recomienda en su contra. Sin embargo, si el área de trabajo almacena datos en la raíz de DBFS, puede crear una ubicación externa para controlar el acceso a esos datos mediante el catálogo de Unity. Para obtener más información, consulte Creación de una ubicación externa para los datos en la raíz de DBFS (heredado).
Para obtener más información sobre los usos de ubicaciones externas y la relación entre las credenciales de almacenamiento y las ubicaciones externas, consulte Conexión al almacenamiento de objetos en la nube mediante el catálogo de Unity.
Antes de empezar
Requisitos previos:
Debe crear el contenedor de almacenamiento de Azure Data Lake Storage, el cubo de AWS S3 o el cubo de Cloudflare R2 que desea usar como ubicación externa antes de crear el objeto de ubicación externa en Azure Databricks.
- Las cuentas de almacenamiento de Azure Data Lake Storage que se usan como ubicaciones externas deben tener un espacio de nombres jerárquico.
Un nombre de cubo S3 no puede usar la notación de puntos (por ejemplo,
incorrect.bucket.name.notation
). Para obtener más instrucciones de nomenclatura de cubos, consulte las reglas de nomenclatura de cubos de AWS.El cubo no puede tener adjunta una lista de control de acceso a S3.
- Debe tener una credencial de almacenamiento definida en Azure Databricks que proporcione acceso a la ruta de acceso de ubicación de almacenamiento en la nube. Consulte Creación de una credencial de almacenamiento para conectarse a Azure Data Lake Storage, Creación de una credencial de almacenamiento para conectarse a Cloudflare R2 o Creación de una credencial de almacenamiento para conectarse a AWS S3 (solo lectura).
Requisitos de permisos:
- Debe tener el privilegio
CREATE EXTERNAL LOCATION
en el metastore y en la credencial de almacenamiento a la que se hace referencia en la ubicación externa. Los administradores de metastore tienenCREATE EXTERNAL LOCATION
en el metastore de forma predeterminada. - Si va a crear una ubicación externa para la ubicación de almacenamiento raíz de DBFS, el sistema puede crear automáticamente la credencial de almacenamiento, pero debe ser administrador del área de trabajo. Para obtener más información, consulte Creación de una ubicación externa para los datos en la raíz de DBFS (heredado).
Opción 1: Crear una ubicación externa mediante el Explorador de catálogos
Puede crear una ubicación externa manualmente mediante el Explorador de catálogos.
Permisos y requisitos previos: consulte Antes de comenzar.
Para crear la ubicación externa:
Inicie sesión en un área de trabajo vinculada al metastore.
En la barra lateral, haga clic en
Catálogo.
En la página Acceso rápido, haga clic en el botón Datos externos >, vaya a la pestaña Ubicaciones externas y haga clic en Crear ubicación.
Escriba un nombre de ubicación externa.
Seleccione el tipo de almacenamiento: Azure Data Lake Storage, S3 (solo lectura),R2 o raíz de DBFS.
Almacenar datos en la raíz de DBFS es una práctica obsoleta no recomendada. Para obtener más información, consulte Creación de una ubicación externa para los datos en la raíz de DBFS (heredado).
En URL, escriba o seleccione la ruta de acceso a la ubicación externa.
Para Azure Data Lake Storage, S3 y R2, tiene las siguientes opciones:
Para copiar la ruta de acceso del contenedor desde un punto de montaje existente DBFS, haz clic en Copiar desde DBFS.
Si no va a copiar desde un punto de montaje existente, use el campo URL para escribir la ruta de acceso del contenedor o del cubo que desea usar como ubicación externa.
Por ejemplo,
abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>
or2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>
.
Para la raíz de DBFS:
- El sistema rellena la ruta secundaria para la ubicación de almacenamiento raíz de DBFS. Si es administrador del área de trabajo, el sistema también crea la credencial de almacenamiento automáticamente para usted.
Consulte Creación de una ubicación externa para los datos en la raíz de DBFS (heredado).
Seleccione la credencial de almacenamiento que concede acceso a la ubicación externa.
Nota
Si la ubicación externa es para la raíz de DBFS y es administrador del área de trabajo, el sistema crea automáticamente la credencial de almacenamiento y no es necesario seleccionar una.
Si no tiene una credencial de almacenamiento, puede crear una:
En la lista desplegable Credenciales de almacenamiento, seleccione + Crear una nueva credencial de almacenamiento.
La información de credenciales que escriba depende del tipo de almacenamiento:
En Azure Data Lake Storage, escriba el identificador del conector de acceso y ( opcionalmente) la identidad administrada asignada por el usuario que proporcione acceso a la ubicación de almacenamiento. Consulte Creación de una credencial de almacenamiento que acceda a Azure Data Lake Storage.
Para los tokens de API de Cloudflare, escriba la cuenta de Cloudflare, el identificador de clave de acceso y la clave de acceso secreta. Consulte Creación de una credencial de almacenamiento para conectarse a Cloudflare R2.
Para AWS S3, escriba el ARN de rol de IAM que otorga acceso a la ubicación de almacenamiento. Consulte Creación de una credencial de almacenamiento para conectarse a AWS S3 (solo lectura).
(Opcional) Si quiere que los usuarios tengan acceso de solo lectura a la ubicación externa, haga clic en Opciones avanzadas y seleccione Solo lectura. Para obtener más información, consulte Marcar una ubicación externa como solo lectura.
Las ubicaciones externas que hacen referencia a las rutas de acceso de AWS S3 son intrínsecamente de solo lectura.
(Opcional) Si la ubicación externa está pensada para un catálogo federado de metastore de Hive, haz clic en Opciones avanzadas y habilita Modo de reserva.
(Opcional, solo para ubicaciones de AWS S3) Si el cubo S3 requiere cifrado SSE, puede configurar un algoritmo de cifrado para permitir que tablas y volúmenes externos del Catálogo de Unity accedan a los datos del cubo S3.
Para obtener instrucciones, consulte Configuración de un algoritmo de cifrado en una ubicación externa (solo AWS S3).
(Opcional) Para habilitar la capacidad de suscribirse a las notificaciones de cambio en la ubicación externa, haga clic en Opciones avanzadas y seleccione Habilitar eventos de archivo.
Para obtener más información, consulte (Recomendado) Habilitar eventos de archivo para una ubicación externa.
Haga clic en Crear.
(Opcional) Enlace la ubicación externa a áreas de trabajo específicas.
De forma predeterminada, cualquier usuario con privilegios puede usar la ubicación externa en cualquier área de trabajo asociada al metastore. Si desea permitir el acceso solo desde áreas de trabajo específicas, vaya a la pestaña Áreas de trabajo y asigne áreas de trabajo. Consulte (Opcional) Asignar una ubicación externa a áreas de trabajo específicas.
Ve a la pestaña Permisos para conceder permiso a fin de usar la ubicación externa.
Para que cualquiera use la ubicación externa, debe conceder permisos:
Para usar la ubicación externa para agregar una ubicación de almacenamiento administrada al metastore, el catálogo o el esquema, conceda el privilegio
CREATE MANAGED LOCATION
.Para crear tablas o volúmenes externos, conceda
CREATE EXTERNAL TABLE
oCREATE EXTERNAL VOLUME
.
- Haga clic en Conceder.
- En el cuadro de diálogo Conceder en
<external location>
, seleccione usuarios, grupos o entidades de servicio en el campo Entidades de seguridad y seleccione el privilegio que quiera conceder. - Haga clic en Conceder.
Opción 2: Crear una ubicación externa mediante SQL
Para crear una ubicación externa mediante SQL, ejecute el siguiente comando en un cuaderno o en el editor de consultas SQL. Reemplace los valores de marcador de posición. Para obtener los permisos necesarios y los requisitos previos, consulte Antes de comenzar.
-
<location-name>
: nombre de la ubicación externa. Silocation_name
incluye caracteres especiales, como guiones (-
), debe ir rodeado de acentos graves (` `
). Vea Nombres.
-
<bucket-path>
: ruta de acceso del inquilino en la nube a la que esta ubicación externa concede acceso. Por ejemplo,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>
or2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>
. -
<storage-credential-name>
: nombre de la credencial de almacenamiento que autoriza la lectura y escritura en el contenedor de almacenamiento o la ruta de acceso del cubo. Si el nombre de la credencial de almacenamiento incluye caracteres especiales, como guiones (-
), debe ir rodeado de acentos graves (` `
).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Si desea limitar el acceso de ubicación externa a áreas de trabajo específicas de la cuenta, también conocidas como enlace de área de trabajo o aislamiento de ubicación externa, consulte (Opcional) Asignar una ubicación externa a áreas de trabajo específicas.
(Opcional) Asignación de una ubicación externa a áreas de trabajo específicas
De forma predeterminada, se puede acceder a una ubicación externa desde todas las áreas de trabajo del metastore. Esto significa que si a un usuario se le ha concedido un privilegio (tal como READ FILES
) en esa ubicación externa, podrá ejercer ese privilegio desde cualquier espacio de trabajo vinculado al metastore. Si usa áreas de trabajo para aislar el acceso a datos de usuario, es posible que desee permitir el acceso a una ubicación externa solo desde áreas de trabajo específicas. Esta característica se conoce como enlace del área de trabajo o aislamiento de ubicación externa.
Entre los casos de uso típicos para enlazar una ubicación externa a áreas de trabajo específicas se incluyen:
- Asegurarse de que los ingenieros de datos que tengan el
CREATE EXTERNAL TABLE
privilegio en una ubicación externa que contengan datos de producción puedan crear tablas externas en esa ubicación solo en un área de trabajo de producción. - Asegurarse de que los ingenieros de datos que tienen el
READ FILES
privilegio en una ubicación externa que contiene datos confidenciales solo pueden usar áreas de trabajo específicas para acceder a esos datos.
Para más información sobre cómo restringir otros tipos de acceso a datos por área de trabajo, consulte Limitación del acceso del catálogo a áreas de trabajo concretas.
Importante
Se hace referencia a los enlaces del área de trabajo en el momento en que se ejercen privilegios en la ubicación externa. Por ejemplo, si un usuario crea una tabla externa emitiendo la instrucción CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'
desde el área de trabajo myWorkspace
, se realizan las siguientes comprobaciones de enlace del área de trabajo, además de comprobaciones de privilegios de usuario habituales:
- ¿La ubicación externa abarca
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'
enlazada amyWorkspace
? - ¿Está enlazado el catálogo
myCat
amyWorkspace
con el nivel de accesoRead & Write
?
Si la ubicación externa se desenlaza posteriormente de myWorkspace
, la tabla externa continúa funcionando.
Esta característica también permite rellenar un catálogo desde un área de trabajo central y ponerlo a disposición de otras áreas de trabajo mediante enlaces de catálogo, sin tener que hacer que la ubicación externa esté disponible también en esas otras áreas de trabajo.
Enlace de una ubicación externa a una o varias áreas de trabajo
Para asignar una ubicación externa a espacios de trabajo específicos, puede utilizar el Explorador de catálogos o la CLI de Databricks.
Permisos necesarios: administrador del metastore, propietario de la ubicación externa o MANAGE
en la ubicación externa.
Nota
Los administradores de metastore pueden ver todas las ubicaciones externas de una tienda de metadatos mediante el Explorador de catálogos y los propietarios de ubicaciones externas pueden ver todas las ubicaciones externas que poseen en una tienda de metadatos, independientemente de si la ubicación externa está asignada al área de trabajo actual. Las ubicaciones externas que no están asignadas al área de trabajo aparecen atenuadas.
Explorador de catálogo
Inicie sesión en un área de trabajo vinculada al metastore.
En la barra lateral, haga clic en
Catálogo.
En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.
Seleccione la ubicación externa y vaya a la pestaña Áreas de trabajo.
En la pestaña Áreas de trabajo, desactive la casilla Todas las áreas de trabajo tienen acceso.
Si su ubicación externa ya está vinculada a uno o varios espacios de trabajo, esta casilla ya estará desactivada.
Haga clic en Asignar a áreas de trabajo y escriba o busque las áreas de trabajo que desea asignar.
Para revocar el acceso, vaya a la pestaña Áreas de trabajo, seleccione el área de trabajo y haga clic en Revocar. Para permitir el acceso desde todas las áreas de trabajo, active la casilla Todas las áreas de trabajo tienen acceso.
Interfaz de línea de comandos (CLI)
Hay dos grupos de comandos de la CLI de Databricks y dos pasos necesarios para asignar una ubicación externa a un área de trabajo.
En los ejemplos siguientes, reemplace <profile-name>
con el nombre del perfil de configuración de autenticación de Azure Databricks. Debe incluir el valor de un token de acceso personal, además del nombre de la instancia del área de trabajo y el identificador de área de trabajo donde generó el token de acceso personal. Consulta Autenticación de token de acceso personal de Azure Databricks.
Usa el comando
external-locations
del grupoupdate
para establecer la ubicación externaisolation mode
enISOLATED
:databricks external-locations update <my-location> \ --isolation-mode ISOLATED \ --profile <profile-name>
El valor predeterminado de
isolation-mode
esOPEN
para todas las áreas de trabajo asociadas al metastore.Use el comando
workspace-bindings
del grupo de comandosupdate-bindings
para asignar las áreas de trabajo a la ubicación externa:databricks workspace-bindings update-bindings external-location <my-location> \ --json '{ "add": [{"workspace_id": <workspace-id>}...], "remove": [{"workspace_id": <workspace-id>}...] }' --profile <profile-name>
Use las propiedades
"add"
y"remove"
para agregar o quitar enlaces de área de trabajo.Nota
El enlace de solo lectura (
BINDING_TYPE_READ_ONLY
) no está disponible para ubicaciones externas. Por lo tanto, no hay ninguna razón para establecerbinding_type
para el enlace de ubicaciones externas.
Para enumerar todas las asignaciones de área de trabajo de una ubicación externa, use el comando del grupo de comandos workspace-bindings
get-bindings
:
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Consulte también Enlaces de área de trabajo en la referencia de la API de REST.
Desenlace una ubicación externa de un área de trabajo
Las instrucciones para revocar el acceso al área de trabajo a una ubicación externa mediante el Explorador de catálogos o el grupo de comandos de la CLI workspace-bindings
se incluyen en Enlace de una ubicación externa a una o varias áreas de trabajo.
Pasos siguientes
- Conceda a otros usuarios permiso para usar ubicaciones externas. Consulte Administrar ubicaciones externas.
- Defina ubicaciones de almacenamiento administradas mediante ubicaciones externas. Consulte Especificar una ubicación de almacenamiento administrada en Unity Catalog.
- Defina las tablas externas mediante ubicaciones externas. Consulte Uso de tablas externas.
- Defina volúmenes externos mediante ubicaciones externas. Consulte ¿Qué son los volúmenes de Unity Catalog?.