Se connecter à Azure Data Lake Storage et Azure Stockage Blob

Important

Cette documentation a été supprimée et peut ne pas être mise à jour.

Cet article décrit les modèles hérités de configuration de l’accès à Azure Data Lake Storage. Databricks recommande d’utiliser Unity Catalog pour configurer l’accès à Azure Data Lake Storage et aux volumes pour une interaction directe avec des fichiers. Consultez Utiliser des identités managées Azure dans Unity Catalog pour accéder au stockage.

Cet article explique comment se connecter à Azure Data Lake Storage et stockage Blob à partir d’Azure Databricks.

Remarque

Le pilote Windows stockage Azure Blob (WASB) hérité est déconseillé. ABFS présente de nombreux avantages par rapport à WASB. Consultez la documentation Azure sur ABFS. Pour accéder à de la documentation sur l’utilisation du pilote WASB hérité, consultez Se connecter à Stockage Blob Azure avec WASB (hérité).

Étape 1 : Inscrire une application Microsoft Entra ID

L’inscription d’une application dans Microsoft Entra ID crée un principal de service que vous pouvez utiliser pour fournir l’accès aux comptes de stockage Azure.

Pour inscrire une application Microsoft Entra ID, vous devez avoir le rôle Application Administrator ou l’autorisation Application.ReadWrite.All dans Microsoft Entra ID.

  1. Dans le portail Azure, accédez au service Microsoft Entra ID.
  2. Sous Gérer, cliquez sur Inscriptions des applications.
  3. Cliquez sur + Nouvelle inscription. Entrez un nom pour l’application et cliquez sur Inscrire.
  4. Cliquez sur Certificats et secrets.
  5. Cliquez sur + Nouveau secret client.
  6. Ajoutez une description pour le secret, puis cliquez sur Ajouter.
  7. Copiez et enregistrez la valeur du nouveau secret.
  8. Dans la vue d’ensemble de l’inscription d’application, copiez et enregistrez l’ID d’application (client) et l'ID de répertoire (locataire).

Étape 2 : Attribuer des rôles au principal de service

Vous contrôlez l’accès aux ressources de stockage en attribuant des rôles à une inscription d’application Microsoft Entra ID associée au compte de stockage. Il se peut que vous deviez attribuer d’autres rôles en fonction d’exigences spécifiques.

Pour attribuer des rôles sur un compte de stockage, vous devez disposer du rôle Propriétaire ou du rôle RBAC d'Azure Administrateur de l'accès utilisateur sur le compte de stockage.

  1. Dans le portail Azure, accédez au service Comptes de stockage.
  2. Sélectionnez un compte de stockage Azure à utiliser avec cette inscription d’application.
  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, puis définissez Rôle sur Contributeur aux données Blob du stockage.
  6. Cliquez sur Enregistrer.

Étape 3 : Configurer les informations d’identification Azure dans Azure Databricks

Configurez votre cluster ou notebook Azure Databricks avec les informations d’identification du compte de stockage Azure auquel vous souhaitez accéder.

Types d’informations d’identification pris en charge et stockage secret

Les informations d’identification suivantes peuvent être utilisées pour accéder à Azure Data Lake Storage ou Au Stockage Blob :

  • OAuth 2.0 avec une entité de service Microsoft Entra ID : Databricks recommande d’utiliser les entités de service Microsoft Entra ID pour la connexion à Azure Data Lake Storage. Pour créer un principal de service Microsoft Entra ID et lui fournir l’accès à Azure comptes de stockage, effectuez les étapes 1 et 2 ci-dessus.

    Pour créer un principal de service Microsoft Entra ID, vous devez disposer du rôle Application Administrator ou de l’autorisation Application.ReadWrite.All dans Microsoft Entra ID. Pour attribuer des rôles pour un compte de stockage, vous devez être Propriétaire ou être un utilisateur disposant du rôle Azure RBAC Administrateur de l’accès utilisateur sur le compte de stockage.

    Important

    Le stockage Blob ne prend pas en charge les principaux de service de Microsoft Entra ID.

  • Signatures d’accès partagé (SAP) : vous pouvez utiliser des jetons SAP de stockage pour accéder au stockage Azure. Grâce aux SAP, vous pouvez restreindre l’accès à un compte de stockage à l’aide de jetons temporaires avec un contrôle d’accès affiné.

    Vous pouvez uniquement accorder à un jeton SAP les autorisations dont vous disposez vous-même sur le compte de stockage, le conteneur ou le fichier.

  • Clés de compte : vous pouvez utiliser des clés d’accès de compte de stockage pour gérer l’accès au Stockage Azure. Les clés d’accès au compte de stockage fournissent un accès complet à la configuration d’un compte de stockage, ainsi qu’aux données. Databricks recommande d’utiliser un principal de service Microsoft Entra ID ou un jeton SAP pour la connexion au stockage Azure au lieu de clés de compte.

    Pour afficher les clés d’accès d’un compte, vous devez disposer du rôle Propriétaire, Contributeur ou Service d’opérateur de clé de compte de stockage sur le compte de stockage.

Databricks recommande d’utiliser des étendues de secret pour stocker toutes les informations d’identification. Vous pouvez accorder aux utilisateurs, aux principaux de service et aux groupes de votre espace de travail un accès pour lire l’étendue du secret. Cette opération protège les informations d’identification Azure tout en permettant aux utilisateurs d’accéder au stockage Azure. Pour créer une portée de secrets, consultez Gérer les portées de secrets.

Remarque

Les principaux de services Microsoft Entra ID peuvent également être utilisés pour accéder au stockage Azure depuis un entrepôt SQL, consultez les configurations d’accès aux données.

Définir les propriétés Spark pour configurer les informations d’identification Azure

Vous pouvez définir des propriétés Spark pour configurer les informations d’identification Azure afin d’accéder au stockage Azure. Les informations d’identification peuvent être étendues à un cluster ou à un notebook. Utilisez à la fois le contrôle d’accès au cluster et le contrôle d’accès au notebook pour protéger l’accès au stockage Azure. Consultez Autorisations de calcul et Collaboration à l’aide des notebooks Databricks.

Pour définir les propriétés Spark, utilisez l’extrait de code suivant dans la configuration Spark d’un cluster ou un notebook :

Principal de service Azure

Utilisez le format suivant pour définir la configuration du cluster Spark :

spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token

Vous pouvez l'utiliser spark.conf.set dans des blocs-notes, comme illustré dans l'exemple suivant :

service_credential = dbutils.secrets.get(scope="<secret-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

  • <secret-scope> par le nom de l’étendue de secrets Databricks.
  • <service-credential-key> par le nom de la clé qui contient le secret client.
  • <storage-account> avec le nom du compte de stockage Azure.
  • <application-id> avec l’ID d’application (client) pour l’application Microsoft Entra ID.
  • <directory-id> par l’ID de répertoire (locataire) de l’application Microsoft Entra ID.

Jetons SAS

Vous pouvez configurer des jetons SAP pour plusieurs comptes de stockage dans la même session Spark.

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))

Replace

  • <storage-account> par le nom du compte Stockage Azure.
  • <scope> par le nom de l'étendue secrète d'Azure Databricks.
  • <sas-token-key> avec le nom de la clé contenant le jeton SAS de stockage Azure.

Clé de compte

spark.conf.set(
    "fs.azure.account.key.<storage-account>.dfs.core.windows.net",
    dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))

Replace

  • <storage-account> avec le nom du compte stockage Azure.
  • <scope> par le nom de l'étendue secrète d'Azure Databricks.
  • <storage-account-access-key> avec le nom de la clé contenant la clé d'accès au compte de stockage Azure.

Étape 4 : Accéder au stockage Azure

Une fois les informations d’identification correctement configurées pour accéder à votre conteneur de stockage Azure, vous pouvez interagir avec des ressources du compte de stockage en utilisant des URI. Databricks recommande d’utiliser le pilote abfss pour plus de sécurité.

spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;

COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');

Exemple de bloc-notes

ADLS OAuth 2.0 avec les principaux de service de Microsoft Entra ID (anciennement Azure Active Directory) dans un notebook

Obtenir le notebook

Problèmes connus liés à Azure Data Lake Storage

Si vous essayez d’accéder à un conteneur de stockage créé via le portail Azure, vous pouvez recevoir l’erreur suivante :

StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.

Quand un espace de noms hiérarchique est activé, vous n’avez pas besoin de créer des conteneurs via le portail Azure. Si vous rencontrez ce problème, supprimez le conteneur Blob via Portail Azure. Après quelques minutes, vous pouvez accéder au conteneur. Vous pouvez également modifier votre URI abfss pour utiliser un autre conteneur, à condition que ce conteneur n’ait pas été créé via Portail Azure.

Consultez les problèmes connus liés à Azure Data Lake Storage dans la documentation Microsoft.

Modèles déconseillés pour le stockage des données et l’accès à celles-ci à partir d’Azure Databricks

Modèles de stockage déconseillés :