Créer un stockage managé Unity Catalog à l’aide d’un principal de service (hérité)

Important

Cette documentation a été mise hors service et peut ne pas être mise à jour. Les produits, services ou technologies mentionnés dans ce contenu ne sont plus pris en charge. Pour afficher la documentation d’administration actuelle, consultez Gérer votre compte Azure Databricks.

Cet article décrit une méthode héritée de création d’emplacements externes et de stockage managé à l’aide d’un principal de service. Databricks recommande fortement d'utiliser une identité managée Azure comme identité donnant accès au conteneur de stockage au lieu de principaux de service. Consultez Utiliser des identités managées Azure dans Unity Catalog pour accéder au stockage.

Cependant, si vous souhaitez toujours utiliser un principal de service, ou si vous avez un stockage managé Unity Catalog existant ou des emplacements externes qui utilisent un principal de service et que vous souhaitez comprendre le processus, les instructions sont fournies dans cet article d'archive.

Créer un métastore accessible à l’aide d’un principal de service (hérité)

Pour créer un métastore Unity Catalog accessible par un principal de service :

  1. Créez un compte de stockage pour Azure Data Lake Storage Gen2.

    Un conteneur de stockage dans ce compte stocke toutes les tables managées du metastore, à l’exception de celles qui se trouvent dans un catalogue ou un schéma avec leur propre emplacement de stockage managé.

    Consultez Créer un compte de stockage à utiliser avec Azure Data Lake Storage Gen2. Il doit s’agir d’un compte Azure Data Lake Storage Gen2 de performances Premium dans la même région que vos espaces de travail Azure Databricks.

  2. Créez un conteneur dans le nouveau compte de stockage.

    Prenez note de l’URI ADLSv2 du conteneur, qui est au format suivant :

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

    Dans les étapes suivantes, remplacez <storage-container> par cet URI.

  3. Dans Microsoft Entra ID, créez un principal de service et affectez-lui des autorisations au compte de stockage, en suivant les instructions fournies dans Accéder au stockage en utilisant un principal de service et Microsoft Entra ID (Azure Active Directory).

    Unity Catalog utilisera ce principal de service pour accéder aux conteneurs dans le compte de stockage pour le compte des utilisateurs de Unity Catalog. Générez une clé secrète client pour le principal de service. Consultez Authentification du principal du service Microsoft Entra ID. Prenez note de la clé secrète client pour le principal de service, de l’ID d’application cliente et de l’ID du répertoire où vous avez créé ce principal de service. Lors des étapes suivantes, remplacez <client-secret>, <client-application-id> et <directory-id> par ces valeurs.

  4. Notez ces propriétés, que vous utiliserez lorsque vous créerez un metastore :

    • <aad-application-id>
    • Région du compte de stockage
    • <storage-container>
    • <client-secret>, <client-application-id> et <directory-id> du principal de service
  5. Vous ne pouvez pas créer un métastore accessible à l’aide d’un principal de service dans la console UI du compte. Utilisez plutôt L’API compte métastores. Par exemple :

    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"
       }
    }'
    

    Pour savoir comment s’authentifier auprès des API au niveau du compte, consultez Authentification du principal du service Microsoft Entra ID.

    L’utilisateur qui crée un metastore en est le propriétaire. Databricks vous recommande de réaffecter la propriété du metastore à un groupe. Consultez Attribuer un administrateur de metastore.

  6. Notez l’ID du metastore. Lorsque vous affichez les propriétés du metastore, l’ID du metastore est la portion de l’URL située derrière /data et devant /configuration.

  7. Le metastore a été créé, mais Unity Catalog ne peut pas encore y écrire des données. Pour terminer la configuration du metastore :

    1. Dans un navigateur distinct, connectez-vous à un espace de travail qui est affecté au metastore en tant qu’administrateur d’espace de travail.

    2. Prenez note de l’URL de l’espace de travail, qui est la première partie de l’URL, après https:// (azuredatabricks.net inclus).

    3. Générez un jeton d’accès personnel. Consultez l’API Gestion des jetons.

    4. Ajoutez le jeton d’accès personnel au fichier .netrc dans votre répertoire de base. Cela améliore la sécurité en empêchant le jeton d’accès personnel d’apparaître dans l’historique des commandes de votre interpréteur de commandes. Consultez l’API Gestion des jetons.

    5. Exécutez la commande cURL suivante afin de créer les informations d’identification de stockage racines pour le metastore. Remplacez les valeurs d’espace réservé :

      • <workspace-url> : URL de l’espace de travail dans lequel le jeton d’accès personnel a été généré.
      • <credential-name> : nom des informations d’identification de stockage.
      • <directory-id> : ID de répertoire pour le principal de service que vous avez créé.
      • <application-id> : ID d’application pour le principal de service que vous avez créé.
      • <client-secret> : valeur de la clé secrète client que vous avez générée pour le principal de service (et non l’ID de clé secrète client).
      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>\"
         }
      }"
      

      Prenez note de l’ID d’informations d’identification de stockage, qui est la valeur de id contenue la réponse de la commande cURL.

  8. Exécutez la commande cURL suivante pour mettre à jour le metastore avec les nouvelles informations d’identification de stockage racines. Remplacez les valeurs d’espace réservé :

    • <workspace-url> : URL de l’espace de travail dans lequel le jeton d’accès personnel a été généré.
    • <metastore-id> : ID du metastore.
    • <storage-credential-id> : ID des informations d’identification de stockage mentionné dans la commande précédente.
    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>\"}"
    

Vous pouvez maintenant ajouter des espaces de travail au metastore.

Créer des informations d’identification de stockage qui utilisent un principal de service (hérité)

Pour créer des informations d’identification de stockage en utilisant un principal de service, vous devez être administrateur de compte Azure Databricks. L’administrateur de compte qui crée les informations d’identification de stockage du principal de service peut déléguer la propriété à un autre utilisateur ou groupe pour en gérer les autorisations.

Tout d’abord, créez un principal de service et accordez-lui l’accès à votre compte de stockage en suivant les instructions fournies dans Accéder au stockage en utilisant un principal de service et Microsoft Entra ID (Azure Active Directory).

Vous ne pouvez pas ajouter d’informations d’identification de stockage du principal de service à l’aide de Catalog Explorer. À la place, utilisez l’API d’informations d’identification de stockage. Par exemple :

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"
   }'

Vous pouvez également créer des informations d’identification de stockage à l’aide du fournisseur Databricks Terraform et databricks_storage_credential.