Tutoriel : Se connecter à Azure Data Lake Storage Gen2

Remarque

Cet article décrit les modèles hérités pour la configuration de l’accès à Azure Data Lake Storage Gen2. Databricks recommande l’utilisation d’Unity Catalog. Consultez Créer un metastore Unity Catalog et Connexion au stockage d’objets cloud à l’aide de Unity Catalog.

Ce tutoriel vous guide tout au long des étapes nécessaires pour vous connecter à partir d’Azure Databricks à Azure Data Lake Storage Gen2 à l’aide d’OAuth 2.0 avec un principal de service Microsoft Entra ID.

Spécifications

Avant de commencer ce tutoriel, effectuez les tâches suivantes :

Étape 1 : Créer un principal de service Microsoft Entra ID

Pour utiliser des principaux de service afin de se connecter à Azure Data Lake Storage Gen2, un utilisateur administrateur doit créer une application Microsoft Entra ID (anciennement Azure Active Directory). Si vous disposez déjà d’un principal de service Microsoft Entra ID, passez à l’Étape 2 : créer une clé secrète client pour votre principal de service.

Pour créer un principal de service Microsoft Entra ID, suivez ces instructions :

  1. Connectez-vous au portail Azure.

    Remarque

    Le portail à utiliser est différent selon que votre application Microsoft Entra ID s’exécute dans le cloud public Azure ou dans un cloud national ou souverain. Pour plus d’informations, voir Clouds nationaux

  2. Si vous avez accès à plusieurs locataires, abonnements ou répertoires, cliquez sur l’icône Répertoires + abonnements (répertoire avec filtre) dans le menu supérieur pour basculer vers le répertoire dans lequel vous souhaitez approvisionner le principal de service.

  3. Recherchez et sélectionnez <Microsoft Entra ID.

  4. Dans Gérer, cliquez sur Inscriptions d’applications > Nouvelle inscription.

  5. Dans Nom, entrez le nom de l’application.

  6. Dans la section Types de comptes pris en charge, sélectionnez Comptes de cet annuaire organisationnel uniquement (Locataire unique).

  7. Cliquez sur S'inscrire.

Étape 2 : Créer une clé secrète client pour votre principal de service

  1. Dans Gérer, cliquez sur Certificats et secrets.

  2. Sous l’onglet Clés secrètes client, cliquez sur Nouvelle clé secrète client.

    Nouvelle clé secrète client

  3. Dans le volet Ajouter une clé secrète client, pour Description, entrez une description pour la clé secrète client.

  4. Pour Expirer, sélectionnez une période d’expiration pour la clé secrète client, puis cliquez sur Ajouter.

  5. Copiez et stockez la valeur de la clé secrète client dans un endroit sûr, car cette clé secrète client est le mot de passe de votre application.

  6. Dans la page Présentation de la page d’application, dans la section Essentials, copiez les valeurs suivantes :

    • ID d’application (client)
    • ID de l’annuaire (locataire)

    Vue d’ensemble de l’application inscrite dans Azure

Étape 3 : Accordez l'accès aux principaux services aux comptes Azure Data Lake Storage Gen2

Vous accordez l’accès aux ressources de stockage en attribuant des rôles à votre principal de service. Dans ce tutoriel, vous affectez le Contributeur aux données blob de stockage au principal de service sur votre compte Azure Data Lake Storage Gen2. Vous devrez peut-être attribuer d’autres rôles en fonction d’exigences spécifiques.

  1. Dans le portail Azure, accédez au service Comptes de stockage.
  2. Sélectionnez le compte de stockage Azure à utiliser.
  3. Cliquez sur Contrôle d’accès (IAM).
  4. Cliquez sur + Ajouter et sélectionnez Ajouter une attribution de rôle dans le menu déroulant.
  5. Définissez le champ Sélectionner sur le nom de l’application Microsoft Entra ID que vous avez créée au cours de l’étape 1, puis définissez le Rôle sur Contributeur aux données Blob du stockage.
  6. Cliquez sur Enregistrer.

Étape 4 : Ajouter la clé secrète client à Azure Key Vault

Vous pouvez stocker la clé secrète client de l’étape 1 dans Azure Key Vault.

  1. Dans le portail Microsoft Azure, accédez au service Key vault.
  2. Sélectionnez un coffre Azure Key Vault à utiliser.
  3. Dans les pages des paramètres de coffre de clés, sélectionnez Secrets.
  4. Cliquez sur + Générer/Importer.
  5. Dans les Options de chargement, sélectionnez Manuel.
  6. Dans le champ Nom, attribuez un nom au secret. Le nom du secret doit être unique dans le coffre de clés.
  7. Pour Valeur, collez la clé secrète client que vous avez stockée à l’étape 1.
  8. Cliquez sur Créer.

Étape 5 : Créer une étendue de secrets Azure Key Vault dans votre Azure Databricks espace de travail

Pour référencer des clés secrètes clients stockées dans Azure Key Vault, vous pouvez créer une étendue de secrets sauvegardée par Azure Key Vault dans Azure Databricks.

  1. Atteindre https://<databricks-instance>#secrets/createScope. Cette URL respecte la casse ; l’étendue dans createScope doit être en majuscules.

    Créer une étendue

  2. Entrez le nom de l’étendue de secrets. Les noms d’étendues de secrets ne respectent pas la casse.

  3. Utilisez la liste déroulante Gérer le principal pour spécifier si Tous les utilisateurs disposent de l’autorisation MANAGE pour cette étendue de secrets ou uniquement le Créateur de l’étendue de secrets (autrement dit, vous).

  4. Entrez le nom DNS (par exemple, https://databrickskv.vault.azure.net/) et l'ID de ressource, par exemple :

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Ces propriétés sont disponibles dans l’onglet Propriétés d’un Azure Key Vault dans votre Portail Azure.

    Onglet Propriétés d’Azure Key Vault

  5. Cliquez sur le bouton Créer.

Étape 6 : Se connecter à Azure Data Lake Storage Gen2 à l’aide de python

Vous pouvez désormais accéder de manière sécurisée aux données du compte de stockage Azure à l’aide d’OAuth 2.0 avec votre principal de service d’application Microsoft Entra ID pour l’authentification à partir d’un notebook Azure Databricks.

  1. Accédez à votre espace de travail Azure Databricks et créez une bibliothèque python.

  2. Exécutez le code python suivant, avec les remplacements ci-dessous, pour vous connecter à Azure Data Lake Storage Gen2.

    service_credential = dbutils.secrets.get(scope="<scope>",key="<service-credential-key>")
    
    spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
    spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
    spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
    

    Replace

    • <scope> avec le nom de l’étendue du secret à l’étape 5.
    • <service-credential-key> par le nom de la clé contenant la clé secrète client.
    • <storage-account> par le nom du compte de stockage Azure.
    • <application-id> avec l’ID d’application (client) pour l’application Microsoft Entra ID.
    • <directory-id> avec l’ID d’annuaire (locataire) pour l’application Microsoft Entra ID.

    Vous avez maintenant correctement connecté votre espace de travail Azure Databricks à votre compte Azure Data Lake Storage Gen2.

Accordez à votre espace de travail Azure Databricks l’accès à Azure Data Lake Storage Gen2

Si vous configurez un pare-feu sur Azure Data Lake Storage Gen2, vous devez configurer les paramètres réseau pour permettre à votre espace de travail Azure Databricks de se connecter à Azure Data Lake Storage Gen2. Assurez-vous tout d’abord que votre espace de travail Azure Databricks est déployé dans votre propre réseau virtuel conformément aux instructions Déployer Azure Databricks dans votre réseau virtuel Azure (injection dans le réseau virtuel). Vous pouvez ensuite configurer des points de terminaison privés ou l’accès depuis votre réseau virtuel pour autoriser les connexions de vos sous-réseaux vers votre compte Azure Data Lake Storage Gen2.

Si vous utilisez le calcul serverless comme les entrepôts SQL serverless, vous devez accorder l'accès depuis le plan de calcul serverless à Azure Data Lake Storage Gen2. Consultez Mise en réseau du plan de calcul serverless.

Accorder l’accès au moyen des points de terminaison privés

Vous pouvez utiliser des points de terminaison privés pour votre compte Azure Data Lake Storage Gen2 afin de permettre à votre espace de travail Azure Databricks d’accéder en toute sécurité aux données par une liaison privée.

Pour créer un point de terminaison privé à l’aide du Portail Azure, consultez Tutoriel : Se connecter à un compte de stockage en utilisant un point de terminaison privé Azure. Assurez-vous de créer le point de terminaison privé dans le réseau virtuel dans lequel votre espace de travail Azure Databricks est déployé.

Accorder l’accès depuis votre réseau virtuel

Les Points de terminaison de service de réseau virtuel vous permettent de sécuriser vos ressources de service Azure critiques uniquement sur vos réseaux virtuels. Vous pouvez activer un point de terminaison de service pour stockage Azure dans le réseau virtuel utilisé pour votre espace de travail Azure Databricks.

Pour plus d’informations, notamment sur l’interface CLI Azure et PowerShell, consultez Accorder l’accès à partir d’un réseau virtuel.

  1. Connectez-vous au Portail Azure en tant qu’utilisateur disposant du rôle Contributeur de compte de stockage sur votre compte Azure Data Lake Storage Gen2.
  2. Accédez à votre compte de Stockage Azure, puis à l’onglet Mise en réseau.
  3. Vérifiez la sélection pour autoriser l’accès à partir des adresses IP et des réseaux virtuels sélectionnés.
  4. Sous Réseaux virtuels, sélectionnez Ajouter un réseau virtuel existant.
  5. Dans le panneau latéral, sous Abonnement, sélectionnez l’abonnement contenant votre réseau virtuel.
  6. Sous Réseaux virtuels, sélectionnez le réseau virtuel dans lequel votre espace de travail Azure Databricks est déployé.
  7. Sous Sous-réseaux, choisissez Tout sélectionner.
  8. Cliquez sur Activer.
  9. Sélectionnez Enregistrer pour enregistrer vos modifications.

Dépannage

Erreur : IllegalArgumentException : Le secret n’existe pas avec l’étendue : KeyVaultScope et clé

Cette erreur signifie probablement :

  • L’étendue Databricks qui est référencée dans le code n’est pas valide.

Revoyez le nom de votre secret de l’étape 4 de cet article.

Erreur : com.databricks.common.client.DatabricksServiceHttpClientException : INVALID_STATE : Databricks n’a pas pu accéder au coffre de clés

Cette erreur signifie probablement :

  • L’étendue Databricks qui est référencée dans le code n’est pas valide. ou le secret stocké dans le coffre Key Vault a expiré.

Revoyez l’étape 3 pour vous assurer de la validité du secret de votre coffre Azure Key Vault. Revoyez le nom de votre secret de l’étape 4 de cet article.

Erreur : ADAuthenticator$HttpException : Erreur HTTP 401 : échec du jeton pour l’obtention du jeton à partir de la réponse AzureAD

Cette erreur signifie probablement :

  • La clé secrète client du principal du service a expiré.

Créez une nouvelle clé secrète client en suivant les instructions fournies à l’étape 2 de cet article et mettez à jour le secret dans votre coffre Azure Key Vault.

Ressources