Compartir vía


Creación de un almacenamiento administrado del catálogo de Unity mediante una entidad de servicio (heredada)

Importante

Esta documentación se ha retirado y es posible que no se actualice. Los productos, servicios o tecnologías mencionados en este contenido ya no se admiten. Para ver la documentación de administración actual, consulte Administración de la cuenta de Azure Databricks.

En este artículo se describe un método heredado de creación de ubicaciones externas y almacenamiento administrado mediante una entidad de servicio. En lugar de las entidades de servicio, Databricks recomienda encarecidamente usar una identidad administrada de Azure como identidad que proporciona acceso al contenedor de almacenamiento. Consulte Uso de identidades administradas de Azure en el catálogo de Unity para acceder al almacenamiento.

Sin embargo, si todavía desea usar una entidad de servicio o si tiene un almacenamiento administrado de Unity Catalog o ubicaciones externas que usan una entidad de servicio y desea comprender el proceso, se proporcionan las instrucciones de este artículo de archivo.

Creación de un metastore al que se accede mediante una entidad de servicio (heredada)

Para crear un metastore del catálogo de Unity al que pueda acceder una entidad de servicio, siga los pasos que se muestran a continuación:

  1. Cree una cuenta de almacenamiento para Azure Data Lake Storage Gen2.

    Un contenedor de almacenamiento de esta cuenta almacena todas las tablas administradas de metastore, excepto las que se encuentran en un catálogo o esquema con su propia ubicación de almacenamiento administrada.

    Consulte Creación de una cuenta de almacenamiento para su uso con Azure Data Lake Storage Gen2 habilitado. Debe ser una cuenta de rendimiento Premium Azure Data Lake Storage Gen2 en la misma región que las áreas de trabajo de Azure Databricks.

  2. Cree un contenedor en la nueva cuenta de almacenamiento.

    Anote el URI de ADLSv2 del contenedor, que tiene el formato siguiente:

    abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<metastore-name>
    

    Durante los siguientes pasos, reemplace el elemento <storage-container> con el siguiente URI.

  3. En Microsoft Entra ID, cree una entidad de servicio y asígnele permisos a la cuenta de almacenamiento mediante las instrucciones de Acceso al almacenamiento mediante una entidad de servicio y Microsoft Entra ID (Azure Active Directory).

    Unity Catalog utilizará esta entidad de servicio para acceder a los contenedores de la cuenta de almacenamiento en nombre de los usuarios de Unity Catalog. Genere un secreto de cliente para la entidad de servicio. Vea Autenticación de la entidad de servicio de MS Entra. Anote el secreto de cliente de la entidad de servicio, el identificador de la aplicación cliente y el identificador del directorio en el que creó esta entidad de servicio. En los pasos siguientes, reemplace <client-secret>, <client-application-id> y <directory-id> por estos valores.

  4. Toma nota de estas propiedades, que usarás al crear un metastore:

    • <aad-application-id>
    • Región de la cuenta de almacenamiento
    • <storage-container>
    • <client-secret>, <client-application-id> y <directory-id> de la entidad de servicio
  5. No se puede crear un metastore al que se accede mediante una entidad de servicio en la interfaz de usuario de la consola de la cuenta. En su lugar, use la API de Metastores de cuenta. Por ejemplo:

    curl -n -X POST --header 'Content-Type: application/json' https://<account-domain>/api/2.0/accounts/<account-id>/metastores
    --data '{
       "metastore_info": {
          "name": "<metastore-name>",
          "storage_root": "<storage-container>",
          "region": "<region>"
          "storage_root_credential_id"
       }
    }'
    

    Para obtener información sobre cómo autenticarse en las API de nivel de cuenta, consulte Autenticación de entidad de servicio de MS Entra.

    El usuario que crea un metastore es su propietario. Databricks recomienda reasignar la propiedad del metastore a un grupo. Consulte Asignación de un administrador de metastore.

  6. Anote el identificador del metastore. Si se observan las propiedades del metastore, su id. es la parte de la URL que aparece después de /data y antes de /configuration.

  7. Se creó el metastore, pero Unity Catalog aún no puede escribir datos en él. Para finalizar la configuración del metastore:

    1. En un explorador independiente, inicie sesión como administrador en un área de trabajo que esté asignada al metastore.

    2. Anote la dirección URL del área de trabajo, que es la primera parte de la dirección URL, después de https:// e incluido azuredatabricks.net.

    3. Genere un token de acceso personal. Consulte la API de administración.

    4. Agregue el token de acceso personal al archivo .netrc en el directorio principal. Al hacerlo, mejora la seguridad, ya que se impide que el token de acceso personal aparezca en el historial de comandos del shell. Consulte la API de administración.

    5. Ejecute el comando cURL siguiente para crear la credencial de almacenamiento raíz del metastore. Reemplace los valores de marcador de posición:

      • <workspace-url>: dirección URL del área de trabajo donde se generó el token de acceso personal.
      • <credential-name>: nombre de la credencial de almacenamiento.
      • <directory-id>: identificador del directorio de la entidad de servicio que ha creado.
      • <application-id>: identificador de la aplicación de la entidad de servicio que ha creado.
      • <client-secret>: valor del secreto de cliente que ha generado para la entidad de servicio (no el identificador del secreto de cliente).
      curl -n -X POST --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/storage-credentials --data "{
         \"name\": \"<credential-name>\",
         \"azure_service_principal\": {
         \"directory_id\": \"<directory-id>\",
         \"application_id\": \"<application-id>\",
         \"client_secret\": \"<client-secret>\"
         }
      }"
      

      Anote el identificador de la credencial de almacenamiento, que es el valor de id de la respuesta del comando cURL.

  8. Ejecute el comando cURL siguiente para actualizar el metastore con la credencial de almacenamiento raíz nueva. Reemplace los valores de marcador de posición:

    • <workspace-url>: dirección URL del área de trabajo donde se generó el token de acceso personal.
    • <metastore-id>: el identificador del metastore.
    • <storage-credential-id>: el identificador de la credencial de almacenamiento del comando anterior.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"
    

Ahora podrá agregar áreas de trabajo al metastore.

Crear una credencial de almacenamiento que use una entidad de servicio (heredada)

Para crear una credencial de almacenamiento mediante una entidad de servicio, debe ser administrador de la cuenta de Azure Databricks. El administrador de la cuenta que crea la credencial de almacenamiento de la entidad de servicio puede delegar la propiedad a otro usuario o grupo para administrar los permisos en ella.

En primer lugar, cree una entidad de servicio y conceda acceso a su cuenta de almacenamiento siguiendo Acceso al almacenamiento mediante una entidad de servicio y Microsoft Entra ID (Azure Active Directory).

No se puede agregar una credencial de almacenamiento de entidad de servicio mediante el Explorador de catálogos. En su lugar, use la API de credenciales de almacenamiento. Por ejemplo:

curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
   "name": "<storage-credential-name>",
   "read_only": true,
   "azure_service_principal": {
      "directory_id": "<directory-id>",
      "application_id": "<application-id>",
      "client_secret": "<client-secret>"
   },
   "skip_validation": "false"
   }'

También puede crear una credencial de almacenamiento mediante el uso del proveedor Databricks Terraform y databricks_storage_credential.