Compartir a través de


Administración de ubicaciones externas

En este artículo se describe cómo enumerar, ver, actualizar y conceder permisos en ubicaciones externas, así como habilitar eventos de archivo para estas y eliminarlas.

Nota

Databricks recomienda gobernar el acceso a archivos mediante volúmenes. Consulte ¿Qué son los volúmenes de Unity Catalog?.

Descripción de una ubicación externa

Para ver las propiedades de una ubicación externa, incluidos los permisos y el acceso al área de trabajo, puede usar el Explorador de catálogos o un comando SQL.

Explorador de catálogo

  1. En la barra lateral, haga clic en Icono de datos.Catálogo.
  2. En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.
  3. Haga clic en el nombre de una ubicación externa para ver sus propiedades.

SQL

Ejecute el siguiente comando en un cuaderno o en el editor de Databricks SQL: Reemplace <location-name> por el nombre de la ubicación externa.

DESCRIBE EXTERNAL LOCATION <location-name>;

Mostrar concesiones en una ubicación externa

Para mostrar los permisos concedidos con relación a una ubicación externa, use un comando como el siguiente. También puede filtrar los resultados para mostrar únicamente los permisos concedidos con relación a la entidad de seguridad especificada:

SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;

Reemplace los valores de marcador de posición:

  • <location-name>: nombre de la ubicación externa que autoriza leer del depósito o contenedor de almacenamiento en el inquilino en la nube y escribir en ellos.
  • <principal>: dirección de correo electrónico de un usuario de nivel de cuenta o nombre de un grupo de nivel de cuenta.

Nota

Si un grupo o nombre de usuario contiene un espacio o el símbolo @, use comillas invertidas (` `) alrededor de él, no apóstrofos.

Concesión de permisos sobre una ubicación externa

En esta sección se describe cómo conceder y revocar permisos en una ubicación externa mediante el Explorador de catálogos y comandos SQL en un cuaderno o una consulta SQL. Para obtener información sobre el uso de la CLI de Databricks o Terraform en su lugar, consulte la documentación de Databricks Terraform y ¿Qué es la CLI de Databricks?.

Puede conceder los siguientes permisos con relación a una ubicación externa:

  • CREATE EXTERNAL TABLE
  • CREATE EXTERNAL VOLUME
  • CREATE MANAGED STORAGE

Permisos necesarios: privilegio de CREATE EXTERNAL LOCATION tanto en el metastore como en la credencial de almacenamiento a la que se hace referencia en la ubicación externa o en el privilegio de MANAGE en la ubicación externa. Los administradores de metastore tienen CREATE EXTERNAL LOCATION en el metastore de forma predeterminada.

Para conceder permiso con el fin de usar una ubicación externa:

Explorador de catálogo

  1. En la barra lateral, haga clic en Icono de datos.Catálogo.
  2. En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.
  3. Haga clic en el nombre de una ubicación externa para abrir sus propiedades.
  4. Haga clic en Permisos.
  5. Para conceder permiso a usuarios o grupos, seleccione cada identidad y, luego, haga clic en Conceder.
  6. Para revocar permisos a usuarios o grupos, seleccione de cada identidad y, luego, haga clic en Revocar.

SQL

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL. En este ejemplo se concede la capacidad de crear una tabla externa que haga referencia a la ubicación externa:

GRANT CREATE EXTERNAL TABLE ON EXTERNAL LOCATION <location-name> TO <principal>;

Reemplace los valores de marcador de posición:

  • <location-name>: nombre de la ubicación externa que autoriza leer del depósito o contenedor de almacenamiento en el inquilino en la nube y escribir en ellos.
  • <principal>: dirección de correo electrónico de un usuario de nivel de cuenta o nombre de un grupo de nivel de cuenta.

Nota

Si un grupo o nombre de usuario contiene un espacio o símbolo @, use tildes (no apóstrofes). Por ejemplo, equipo financiero .

Cambio del propietario de una ubicación externa

El creador de una ubicación externa es su propietario inicial. Para cambiar el propietario por otro usuario o grupo de nivel de cuenta, ejecute el siguiente comando en un cuaderno o en el editor de Databricks SQL o utilice el Catalog Explorer.

Permisos necesarios: propietario de la ubicación externa o un usuario con el privilegio MANAGE.

Reemplace los valores de marcador de posición:

  • <location-name>: nombre de la credencial.
  • <principal>: dirección de correo electrónico de un usuario de nivel de cuenta o nombre de un grupo de nivel de cuenta.
ALTER EXTERNAL LOCATION <location-name> OWNER TO <principal>

Marcar una ubicación externa como solo lectura

Si desea que los usuarios tengan acceso de solo lectura a una ubicación externa, puede usar Catalog Explorer para marcar la ubicación externa como de solo lectura.

Hacer que las ubicaciones externas sean de solo lectura:

  • Impide que los usuarios escriban en los archivos de esas ubicaciones externas, independientemente de los permisos de escritura concedidos por la identidad administrada de Azure que subyace a la credencial de almacenamiento e independientemente de los permisos del catálogo de Unity concedidos en esa ubicación externa.
  • Impide que los usuarios creen tablas o volúmenes administrados en esas ubicaciones externas.
  • Permite al sistema validar la ubicación externa correctamente en el momento de la creación.

Puede marcar las ubicaciones externas como de solo lectura al crearlas.

También puede usar el Explorador de catálogos para cambiar el estado de solo lectura después de crear una ubicación externa:

  1. En la barra lateral, haga clic en Icono de datos.Catálogo.
  2. En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.
  3. Seleccione la ubicación externa, haga clic en el icono de menú Kebab. menú situado junto al botón Probar conexión y seleccione Editar.
  4. En el cuadro de diálogo de edición, haga clic en Opciones avanzadas y seleccione la opción Límite de uso de solo lectura.
  5. Haga clic en Actualizar.

Configuración de un algoritmo de cifrado en una ubicación externa (solo AWS S3)

AWS admite el cifrado del lado servidor (SSE) con claves administradas de Amazon S3 (SSE-S3) o claves de AWS KMS (SSE-KMS) para proteger los datos en S3. Si el cubo de S3 requiere cifrado SSE, puede configurar un algoritmo de cifrado en la ubicación externa para permitir que las tablas y volúmenes externos del Catálogo de Unity accedan a los datos del cubo de S3. SSE no se admite con tablas externas compartidas utilizando Delta Sharing. Para obtener más información, consulte Configuración del cifrado para S3 con KMS.

  1. En la barra lateral, haga clic en Icono de datos.Catálogo.

  2. En la parte superior del panel Catálogo , haga clic en el icono engranaje. Icono de engranaje y seleccione Ubicaciones externas.

  3. Seleccione la ubicación externa. La ubicación externa debe usar un rol de IAM para una credencial de almacenamiento.

  4. Haga clic en el icono de menú Kebab. Menú kebab situado junto al botón Probar conexión y seleccione Editar.

  5. En el cuadro de diálogo de edición, haga clic en Opciones avanzadas.

  6. En Algoritmo de cifrado , seleccione SSE-SE o SSE-KMS en función de la clave de cifrado.

    Para SSE-KMS, en Encryption KMS key arn pegue el ARN de la clave KMS a la que hacen referencia los clientes al acceder a la ubicación S3.

  7. Haga clic en Actualizar.

Si desea recibir notificaciones de cambio que son enviadas por el proveedor de servicios en la nube, habilitar eventos de archivo para la ubicación externa tiene las siguientes ventajas:

Antes de empezar

Si quiere que Azure Databricks configure colas de Azure Data Lake Storage o colas de SQS en su nombre, la ubicación externa debe hacer referencia a una credencial de almacenamiento que proporcione los permisos adecuados para hacerlo. Consulte el paso siguiente para obtener instrucciones.

Si desea crear su propia cola de Azure Data Lake Storage, la identidad representada por la credencial de almacenamiento debe tener el permiso siguiente en esas colas de Azure Data Lake Storage:

  • Colaborador de datos de cola de Storage

Si desea crear sus propias colas de SQS, la identidad representada por la credencial de almacenamiento debe tener los permisos siguientes en esas colas de SQS:

  • sqs:ReceiveMessage
  • sqs:DeleteMessage
  • sqs:PurgeQueue

Paso 1: Confirmación de que Azure Databricks tiene acceso a eventos de archivos en Azure Data Lake Storage o AWS S3

Para poder habilitar eventos de archivo para el objeto protegible de ubicación externa, debe asegurarse de que la cuenta de Azure Data Lake Storage o AWS S3 esté configurada para conceder a Azure Databricks acceso a los eventos de archivo que emite. Si quiere que Azure Databricks configure eventos de archivo en Azure Data Lake Storage o AWS S3 para usted, también debe asegurarse de que Azure Databricks tenga el acceso adecuado.

Asignar este acceso es un paso recomendado al configurar las credenciales de almacenamiento.

Para contenedores de Azure Data Lake Storage

Para confirmar que la identidad administrada que proporciona acceso a la ubicación externa está configurada correctamente:

  1. Obtenga el identificador de identidad administrada de Azure.

    1. En la barra lateral, haga clic en Icono de datos.Catálogo.

    2. En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.

    3. Seleccione la ubicación externa.

    4. En la pestaña Información general, haga clic en nombre de Credencial .

    5. En la pestaña Información general de credenciales de almacenamiento, copie el identificador del conector o el identificador de identidad administrada asignada por el usuario.

      Lo usará en el paso siguiente.

  2. Inicie sesión en la cuenta de Azure Data Lake Storage.

  3. Vaya a Control de acceso (IAM) y haga clic en el botón Comprobar acceso .

  4. En Identidad administrada, seleccione Identidad administrada asignada por el usuario o Conector de Access para Azure Databricks, en función del tipo de identidad administrada.

  5. Busque la identidad administrada que copió en el paso 1.

  6. Confirme que la identidad administrada tiene los siguientes roles:

    • Colaborador de la cuenta de almacenamiento
    • Colaborador de datos de blobs de almacenamiento
    • Colaborador de EventGrid EventSubscription
    • Colaborador de datos en la cola de almacenamiento: solo es necesario si desea que Azure Databricks cree una suscripción y eventos en Azure Data Lake Storage para usted. Si no habilita este rol, debe crear la cola de almacenamiento de Azure usted mismo.
  7. Si falta alguno de estos roles, vaya a la pestaña Asignaciones aptas y agréguelos.

Para obtener más información sobre cómo asignar estos roles, consulte Paso 3: Concesión del acceso de identidad administrada a eventos de archivo y Paso 4: Concesión de acceso a Azure Databricks para configurar eventos de archivo en su nombre.

Para cubos S3

Para verificar que Databricks puede configurar y suscribirse a las notificaciones de eventos del bucket:

  1. Acceda al rol IAM.

    1. En la barra lateral, haga clic en Icono de datos.Catálogo.

    2. En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.

    3. Seleccione la ubicación externa.

    4. En la pestaña Información general, haga clic en nombre de Credencial .

    5. En la pestaña Información general de credenciales de almacenamiento, copie el rol IAM (ARN).

      Lo usará en el paso siguiente.

  2. Inicie sesión en su cuenta de AWS.

  3. Vaya a IAM y busque el rol que copió en el paso 1.

  4. En Directivas de permisos, busque las directivas de IAM asociadas al rol de IAM y ábralas.

  5. Abra las directivas y confirme que hay una que incluya las siguientes propiedades.

    Esta directiva permite que la cuenta de Azure Databricks actualice la configuración de notificación de eventos del cubo, cree un tema de SNS, cree una cola de SQS y suscriba la cola de SQS al tema SNS.

    Reemplace <BUCKET> por el nombre del cubo S3.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ManagedFileEventsSetupStatement",
          "Effect": "Allow",
          "Action": [
            "s3:GetBucketNotification",
            "s3:PutBucketNotification",
            "sns:ListSubscriptionsByTopic",
            "sns:GetTopicAttributes",
            "sns:SetTopicAttributes",
            "sns:CreateTopic",
            "sns:TagResource",
            "sns:Publish",
            "sns:Subscribe",
            "sqs:CreateQueue",
            "sqs:DeleteMessage",
            "sqs:ReceiveMessage",
            "sqs:SendMessage",
            "sqs:GetQueueUrl",
            "sqs:GetQueueAttributes",
            "sqs:SetQueueAttributes",
            "sqs:TagQueue",
            "sqs:ChangeMessageVisibility",
            "sqs:PurgeQueue"
          ],
          "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
        },
        {
          "Sid": "ManagedFileEventsListStatement",
          "Effect": "Allow",
          "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
          "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
        },
        {
          "Sid": "ManagedFileEventsTeardownStatement",
          "Effect": "Allow",
          "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
          "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
        }
      ]
    }
    

    Consulte también Paso 1: Crear un rol de IAM.

  6. Si falta esta directiva, agréguela al rol IAM.

Paso 2: Habilitar eventos de archivo para la ubicación externa mediante el Explorador de catálogos

Para habilitar eventos de archivo:

  1. En la barra lateral, haga clic en Icono de datos.Catálogo.

  2. En la página Acceso rápido, haga clic en el botón Datos externos> para ir a la pestaña Ubicaciones externas.

  3. Seleccione la ubicación externa.

  4. Haga clic en el icono de menú Kebab. Menú kebab situado junto al botón Probar conexión y seleccione Editar.

  5. En el cuadro de diálogo de edición, haga clic en Opciones avanzadas.

  6. Seleccione Habilitar eventos de archivo.

  7. Seleccione el tipo de evento de archivo:

    Automático: (Recomendado) seleccione esto si quiere que Azure Databricks configure suscripciones y eventos automáticamente.

    Si ya está configurado: seleccione esto si ya ha configurado una cola de Azure Storage o cola de SQS usted mismo.

  8. Si seleccionó el tipo de evento de archivo proporcionado, escriba la dirección URL de cola de la cola de almacenamiento existente.

    • Cola de almacenamiento de Azure: https://<storage account>.queue.core.windows.net/<queue>

    • Cola de SQS de AWS: https://sqs.<region>.amazonaws.com/<account-ID>/<queue-name>

  9. Haga clic en Actualizar.

  10. Espere unos segundos y haga clic en Probar conexión en la página de edición de ubicación externa principal para confirmar que los eventos de archivo se han habilitado correctamente.

Limitaciones de eventos de archivo

Los eventos de archivo en ubicaciones externas tienen las siguientes limitaciones:

  • El rendimiento del evento se limita a 2000 archivos ingeridos por segundo.

  • No se pueden etiquetar recursos en la nube mediante la resourceTags opción . En su lugar, utilice la consola de la nube para etiquetar los recursos una vez que el servicio Auto Loader haya creado sus recursos de cola y suscripción.

  • No puede configurar eventos de archivo para la ubicación de almacenamiento raíz del metastore del catálogo de Unity si no se define ninguna ubicación externa para esa ubicación de almacenamiento.

    No puede configurar eventos de archivo en ubicaciones de almacenamiento que no tengan ningún objeto de ubicación externo definido en el catálogo de Unity. Algunas implementaciones del catálogo de Unity incluyen una ubicación de almacenamiento raíz de metastore que no está asociada a una ubicación externa. Para determinar si este es el caso de la ubicación de almacenamiento raíz de metastore:

    1. Como administrador de la cuenta, inicie sesión en la consola de la cuenta.

    2. Haga clic en el icono Datos.Catálogo.

    3. Haga clic en el nombre del metastore.

    4. Vaya a la pestaña Configuración .

    5. Si hay un valor de ruta ADLS Gen 2, la raíz del metastore no tiene ningún objeto de ubicación externa definido.

      Para actualizar el almacenamiento raíz de metastore para usar una ubicación externa, haga clic en el botón Quitar . Se creará una ubicación externa para usted. Para obtener más información, consulte Eliminación del almacenamiento de nivel de metastore.

  • Azure Blob Storage no se admite.

Modificación de una ubicación externa

El propietario de una ubicación externa o un usuario con el MANAGE privilegio pueden cambiar el nombre, cambiar el URI y cambiar la credencial de almacenamiento de la ubicación externa.

Para cambiar el nombre de una ubicación externa, haga lo siguiente:

Ejecute el siguiente comando en un cuaderno o en el editor de Databricks SQL: Reemplace los valores de marcador de posición:

  • <location-name>: nombre de la ubicación.
  • <new-location-name>: nuevo nombre de la ubicación.
ALTER EXTERNAL LOCATION <location-name> RENAME TO <new-location-name>;

Para cambiar el URI al que apunta una ubicación externa en su inquilino de la nube, haga lo siguiente:

Ejecute el siguiente comando en un cuaderno o en el editor de Databricks SQL: Reemplace los valores de marcador de posición:

  • <location-name>: nombre de la ubicación externa.
  • <url>: nueva dirección URL de almacenamiento a la que la ubicación debe autorizar el acceso en el inquilino en la nube.
ALTER EXTERNAL LOCATION location_name SET URL '<url>' [FORCE];

La opción FORCE cambia la dirección URL aunque haya tablas externas que dependan de la ubicación externa.

Para cambiar la credencial de almacenamiento que usa una ubicación externa, haga lo siguiente:

Ejecute el siguiente comando en un cuaderno o en el editor de Databricks SQL: Reemplace los valores de marcador de posición:

  • <location-name>: nombre de la ubicación externa.
  • <credential-name>: nombre de la credencial de almacenamiento que concede acceso a la dirección URL de la ubicación en el inquilino en la nube.
ALTER EXTERNAL LOCATION <location-name> SET STORAGE CREDENTIAL <credential-name>;

Eliminación de una ubicación externa

Para eliminar (quitar) una ubicación externa, debe ser su propietario o tener el privilegio MANAGE en la ubicación externa. Para eliminar una ubicación externa, haga lo siguiente:

Ejecute el siguiente comando en un cuaderno o en el editor de Databricks SQL: Los elementos entre corchetes son opcionales. Reemplace <location-name> por el nombre de la ubicación externa.

DROP EXTERNAL LOCATION [IF EXISTS] <location-name>;