Se connecter à un emplacement externe Azure Data Lake Storage Gen2 (ADLS Gen2)

Cette page explique comment se connecter à un emplacement externe Azure Data Lake Storage Gen2 (ADLS Gen2). Une fois cette connexion terminée, vous pouvez régir l’accès à ces objets ADLS Gen2 à l’aide du catalogue Unity.

Pour vous connecter à un chemin de conteneur ADLS Gen2, vous avez besoin de deux objets sécurisables du catalogue Unity. Les premières sont des informations d’identification pour le stockage, qui définissent une identité managée Azure permettant d’accéder au conteneur ADLS Gen2. Vous avez besoin de ces informations d’identification de stockage pour le deuxième objet obligatoire : un emplacement externe, qui définit le chemin d’accès à votre emplacement de stockage ADLS Gen2 et les informations d’identification requises pour accéder à cet emplacement.

Requirements

Dans Azure Databricks :

  • Espace de travail Azure Databricks activé pour Unity Catalog.
  • Privilège CREATE STORAGE CREDENTIAL sur le metastore Unity Catalog associé à l'espace de travail. Les administrateurs de compte et les administrateurs de metastore disposent de ce privilège par défaut.
  • CREATE EXTERNAL LOCATION privilège sur le metastore Unity Catalog et l’identifiant de stockage référencé par l’emplacement externe. Les administrateurs de metastore et les administrateurs d’espace de travail ont ce privilège par défaut.

Dans votre compte Azure :

  • Un compte de stockage et un conteneur ADLS Gen2. Pour éviter les frais de sortie, cela doit se trouver dans la même région que l’espace de travail à partir duquel vous souhaitez accéder aux données.

    • Les chemins d’accès d’emplacement externe doivent contenir uniquement des caractères ASCII standard (lettres A–Z, a–zchiffres 0–9et symboles communs tels que /, _, -).

    • Les comptes de stockage Azure Data Lake Storage que vous utilisez comme emplacements externes doivent avoir un espace de noms hiérarchique.

    • Vous ne pouvez pas utiliser des conteneurs de stockage Azure avec des stratégies d’immuabilité (WORM - Write Once, Read Many) activées en tant qu’emplacements externes. Unity Catalog nécessite des autorisations de suppression (DELETE) sur les conteneurs de stockage, ce que les stratégies d'immuabilité empêchent. Pour plus d’informations sur les stratégies d’immuabilité, consultez Configurer des stratégies d’immuabilité pour les conteneurs.

    • Si l’accès au réseau public est désactivé sur le compte de stockage, vous devez activer l’option Autoriser les services approuvés Azure pour autoriser Azure Databricks à se connecter au compte de stockage. Vous pouvez configurer ce paramètre à l’aide d’Azure CLI :

      # Check current network rule set
      az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet"
      
      # Set bypass for Azure Services
      az storage account update \
        --name <storage_account_name> \
        --resource-group <resource_group_name> \
        --bypass AzureServices
      
  • Autorisation de créer un connecteur d’accès pour Azure Databricks dans votre abonnement Azure. Pour ce faire, vous devez être un Contributor ou Owner d’un groupe de ressources Azure.

  • Autorisation de modifier la stratégie d’accès pour le compte de stockage. Pour ce faire, vous devez être le propriétaire ou un utilisateur disposant du rôle RBAC User Access Administrator Azure sur votre compte de stockage.

Créer des informations d’identification de stockage qui accèdent à ADLS Gen2

Pour créer des informations d’identification de stockage pour l’accès à un conteneur ADLS Gen2, vous créez d’abord un connecteur d’accès pour Azure Databricks avec une identité managée, puis accordez l’accès à l’identité managée à votre compte de stockage.

Step 1 : Créer un connecteur d’accès pour Azure Databricks

Un connecteur d’accès pour Azure Databricks est une ressource de Azure de première partie qui vous permet de connecter des identités managées à un compte Azure Databricks. Chaque connecteur d’accès pour Azure Databricks peut inclure une identité managée affectée par le système, une ou plusieurs identités managées affectées par l’utilisateur, ou les deux.

  1. Connectez-vous au Portail Azure en tant que contributeur ou propriétaire d’un groupe de ressources.

  2. Cliquez sur + Créer ou créer une ressource.

  3. Recherchez Access Connector pour Azure Databricks et sélectionnez-le.

  4. Cliquez sur Créer.

  5. Sous l’onglet De base, acceptez, sélectionnez ou entrez des valeurs pour les champs suivants :

    • Subscription : il s’agit de l’abonnement Azure dans lequel le connecteur d’accès sera créé. La valeur par défaut est l’abonnement Azure que vous utilisez actuellement. Ce peut être tout abonnement dans le locataire.
    • Resource group : il s’agit du groupe de ressources Azure dans lequel le connecteur d’accès sera créé.
    • Nom : saisissez un nom qui indique la finalité du connecteur.
    • Région : il devrait s’agir de la région dans laquelle se trouve le compte de stockage auquel vous souhaitez vous connecter.
  6. Cliquez sur suivant, entrez des balises, puis cliquez sur suivant.

  7. Sous l’onglet Identité managée, créez les identités managées comme suit :

    • Pour utiliser une identité managée affectée par le système, définissez Status sur Activé.
    • Pour ajouter des identités managées affectées par l’utilisateur, cliquez sur + Ajouter, puis sélectionnez une ou plusieurs identités managées affectées par l’utilisateur.

    configurer des identités managées pour un connecteur d’accès.

  8. Cliquez sur Vérifier + créer.

  9. Passez en revue vos paramètres de configuration, puis cliquez sur Créer.

  10. Une fois le déploiement terminé, cliquez sur Accéder à la ressource.

  11. Notez l’ID de ressource.

    L’ID de ressource est au format suivant :

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Étape 2 : accorder à l’identité managée l’accès au compte de stockage

Pour accorder les autorisations à cette étape, vous devez disposer du rôle RBAC Azure Owner ou User Access Administrator sur votre compte de stockage.

Vous disposez des options suivantes lorsque vous accordez à l’identité managée l’accès au compte de stockage et au conteneur :

  • Accordez un accès en lecture et en écriture à l’ensemble du compte de stockage à l’aide du Storage Blob Data Contributor rôle.
  • Accordez un rôle plus limité sur le compte de stockage à l’aide du Storage Blob Delegator rôle et lisez et écrivez l’accès à un conteneur spécifique à l’aide du Storage Blob Data Contributor rôle.

Les instructions qui suivent supposent que vous accordez le Storage Blob Data Contributor rôle sur le compte de stockage, mais vous pouvez remplacer les autres options en fonction des besoins :

  1. Connectez-vous à votre compte Azure Data Lake Storage.
  2. Accédez à Contrôle d'accès (IAM), cliquez sur + Ajouter, puis sélectionnez Ajouter une attribution de rôle.
  3. Sélectionnez le rôle Contributeur aux données Blob du stockage, puis cliquez sur Suivant.
  4. Sous Attribuer l’accès à, sélectionnez Identité managée.
  5. Cliquez sur +Sélectionner des membres, puis sélectionnez ConnecteurAccess pour Azure Databricks ou Identité managée affectée par l’utilisateur.
  6. Recherchez le nom de votre connecteur ou de l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Vérifier et affecter.

Étape 3 : Accorder à l’identité managée l’accès aux événements de fichier

L’octroi à votre identité managée de l’accès aux événements de fichier permet à Azure Databricks de s’abonner aux notifications d’événements de fichier émises par les fournisseurs cloud. Cela rend le traitement des fichiers plus efficace. Pour plus d’informations, consultez Configurer des événements de fichier pour un emplacement externe.

Pour octroyer les autorisations à cette étape, vous devez disposer du rôle Azure RBAC Propriétaire ou Administrateur de l’accès utilisateur sur votre compte de stockage.

  1. Connectez-vous à votre compte Azure Data Lake Storage.
  2. Accédez à Contrôle d'accès (IAM), cliquez sur + Ajouter, puis sélectionnez Ajouter une attribution de rôle.
  3. Sélectionnez le rôle Contributeur aux données en file d’attente du stockage, puis cliquez sur Suivant.
  4. Sous Attribuer l’accès à, sélectionnez Identité managée.
  5. Cliquez sur +Sélectionner des membres, puis sélectionnez ConnecteurAccess pour Azure Databricks ou Identité managée affectée par l’utilisateur.
  6. Recherchez le nom de votre connecteur ou de l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Vérifier et affecter.

Step 4 : Accorder l’accès Azure Databricks pour configurer des événements de fichier en votre nom

Note

Si vous n’accordez pas à Azure Databricks l’accès pour configurer des événements de fichier en votre nom, vous devez les configurer manuellement pour chaque emplacement. Ignorer cette configuration manuelle limite votre accès à plusieurs fonctionnalités Databricks. Pour plus d’informations sur les événements de fichier, consultez Configurer des événements de fichier pour un emplacement externe.

Cette étape permet à Azure Databricks de configurer automatiquement des événements de fichier. Pour accorder les autorisations de cette étape, vous devez disposer des rôles RBAC Azure de propriétaire ou d'administrateur d'accès utilisateur sur votre identité managée et sur le groupe de ressources dans lequel se trouve votre compte Azure Data Lake Storage.

  1. Suivez les instructions de l’étape 3 : Accordez à l’identité managée l’accès aux événements de fichier et affectez le contributeur de compte de stockage à votre identité managée.

    Ce rôle ne remplace pas les rôles accordés aux étapes 2 ou 3 de cette page, mais est en plus d’eux.

  2. Accédez au groupe de ressources Azure dans lequel se trouve votre compte Azure Data Lake Storage.

  3. Accédez à Contrôle d'accès (IAM), cliquez sur + Ajouter, puis sélectionnez Ajouter une attribution de rôle.

  4. Sélectionnez le rôle Contributeur EventGrid EventSubscription, puis cliquez sur Suivant.

  5. Sous Attribuer l’accès à, sélectionnez Identité managée.

  6. Cliquez sur +Sélectionner des membres, puis sélectionnez ConnecteurAccess pour Azure Databricks ou Identité managée affectée par l’utilisateur.

  7. Recherchez le nom de votre connecteur ou de l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Vérifier et affecter.

Étape 5 : Créer les informations d’identification de stockage dans Databricks

Maintenant que vous avez créé un connecteur d’accès avec une identité managée et que vous lui avez accordé des autorisations pour votre compte de stockage, vous pouvez créer les informations d’identification de stockage dans Azure Databricks.

  1. Connectez-vous à votre espace de travail Azure Databricks compatible avec Unity Catalog en tant qu’utilisateur disposant du privilège CREATE STORAGE CREDENTIAL sur le metastore.

  2. Dans la barre latérale, cliquez sur l’icône Données.Catalogue.

  3. Cliquez sur Ajouter ou ajouter une icône, puis sur Créer des informations d’identification.

  4. Sélectionnez un type d'authentification d'une identité managée Azure.

  5. Entrez un nom de l’identifiant de stockage et un commentaire facultatif.

  6. Entrez l’ID du connecteur Access (l’ID de ressource que vous avez noté à l’étape 1).

    L’ID de ressource est au format suivant :

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  7. (Facultatif) Si vous avez créé le connecteur d’accès à l’aide d’une identité managée assignée par l’utilisateur, entrez l’ID de l’identité managée (l’ID de ressource de l’identité managée).

  8. (Facultatif) Si vous souhaitez que les utilisateurs aient un accès en lecture seule aux emplacements externes qui utilisent ces informations d’identification de stockage, cliquez sur Options avancées et sélectionnez Limiter pour une utilisation en lecture seule. Pour plus d’informations, consultez Marquer les données d'identification de stockage comme en lecture seule.

  9. Cliquez sur Créer.

  10. (Facultatif) Lier l’identifiant de stockage à des espaces de travail spécifiques.

    Par défaut, tout utilisateur privilégié peut se servir des informations d’identification du stockage sur n’importe quel espace de travail attaché au metastore. Si vous souhaitez autoriser l’accès uniquement à partir d’espaces de travail spécifiques, accédez à l’onglet Espaces de travail et attribuez des espaces de travail. Consultez Affecter un identifiant de stockage à des espaces de travail spécifiques.

Vous pouvez maintenant créer un emplacement externe qui référence vos informations d’identification de stockage.

Créer un emplacement externe pour un conteneur ADLS Gen2

Cette section explique comment créer un emplacement externe à l’aide de l’Explorateur de catalogues ou de SQL. Il part du principe que vous disposez déjà d’informations d’identification de stockage qui autorisent l’accès à votre conteneur ADLS Gen2. Si vous n’avez pas d’informations d’identification de stockage, suivez les étapes décrites dans Créer des informations d’identification de stockage qui accèdent à ADLS Gen2.

Option 1 : Créer un emplacement externe manuellement à l’aide de l’Explorateur de catalogues

Vous pouvez créer manuellement un emplacement externe à l’aide de Catalog Explorer.

Pour créer l’emplacement externe :

  1. Connectez-vous à un espace de travail associé au metastore.

  2. Dans la barre latérale, cliquez sur l’icône Données.Catalogue.

  3. Cliquez sur Ajouter ou ajouter une icône, puis sur Créer un emplacement externe.

  4. Entrez un nom d’emplacement externe.

  5. Sous TypeStorage, sélectionnez Azure.

  6. Sous URL, entrez le chemin du conteneur ADLS Gen2. Par exemple : abfss://mycontainer@mystorageaccount.dfs.core.windows.net/<path>.

  7. Sous Informations d’identification de stockage, sélectionnez les informations d’identification de stockage qui accordent l’accès à l’emplacement externe.

  8. (Facultatif) Si vous souhaitez que les utilisateurs aient un accès en lecture seule à l’emplacement externe, cliquez sur Options avancées et sélectionnez Limiter pour une utilisation en lecture seule. Pour plus d’informations, consultez Marquer un emplacement externe en lecture seule.

  9. (Facultatif) Si l’emplacement externe est destiné à un catalogue fédéré de metastore Hive, cliquez sur Options avancées et activez Mode de secours.

    Consultez Activer le mode de secours sur des emplacements externes.

  10. (Facultatif) Pour permettre la possibilité de s’abonner aux notifications de modification sur l’emplacement externe, cliquez sur Options avancées , puis sélectionnez Activer les événements de fichier.

    Pour plus d’informations, consultez Configurer les événements de fichier pour un emplacement externe.

  11. Cliquez sur Créer.

  12. (Facultatif) Liez l’emplacement externe à des espaces de travail spécifiques.

    Par défaut, tout utilisateur disposant des privilèges requis peut utiliser l’emplacement externe sur n’importe quel espace de travail associé au metastore. Si vous souhaitez autoriser l’accès uniquement à partir d’espaces de travail spécifiques, accédez à l’onglet Espaces de travail et attribuez des espaces de travail. Consultez Affecter un emplacement externe à des espaces de travail spécifiques.

  13. Accédez à l’onglet Autorisations pour accorder l’autorisation d’utiliser l’emplacement externe.

    Pour que quelqu’un puisse utiliser l’emplacement externe, vous devez accorder des autorisations :

    • Pour utiliser l’emplacement externe afin d’ajouter un emplacement de stockage managé au metastore, au catalogue ou au schéma, accordez le privilège CREATE MANAGED LOCATION.
    • Pour créer des tables ou des volumes externes, accordez les privilèges CREATE EXTERNAL TABLE ou CREATE EXTERNAL VOLUME.

    Suivez ces étapes :

    1. Cliquez sur Accorder.
    2. Dans la boîte de dialogue Accorder sur <external location>, sélectionnez les utilisateurs, les groupes ou les principaux de service dans le champ Principaux, puis sélectionnez le privilège que vous souhaitez accorder.
    3. Cliquez sur Accorder.

Option 2 : Créer un emplacement externe à l’aide de SQL

Pour créer un emplacement externe à l’aide de SQL, exécutez la commande suivante dans un notebook ou dans l’éditeur de requête SQL. Remplacez les valeurs d’espace réservé. Pour connaître les autorisations requises et les prérequis, consultez Configuration requise.

  • <location-name> : nom de l’emplacement externe. Si location_name contient des caractères spéciaux, tels que des traits d’union (-), il doit être entouré d’accents graves (` `). Voir Les noms.
  • <container-path> : chemin d’accès de votre locataire Cloud auquel cet emplacement externe accorde l’accès. Par exemple : abfss://mycontainer@mystorageaccount.dfs.core.windows.net/.
  • <storage-credential-name>: nom des informations d’identification de stockage qui autorisent la lecture et l’écriture dans le conteneur. Si le nom des informations d’identification de stockage contient des caractères spéciaux, tels que des traits d’union (-), il doit être entouré d’accents graves (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<container-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Si vous souhaitez limiter l’accès à un emplacement externe à des espaces de travail spécifiques dans votre compte, également appelé liaison d’espace de travail ou isolation d’emplacement externe, consultez Affecter un emplacement externe à des espaces de travail spécifiques.

Vérifier la connexion

Pour vérifier que vous avez correctement créé l’emplacement externe, essayez de lire un fichier à partir de l’emplacement externe. Par exemple, supposons que vous disposez d’un emplacement abfss://mycontainer@mystorageaccount.dfs.core.windows.net/ externe contenant un fichier CSV nommé example.csv. Pour lire à partir du abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv fichier, procédez comme suit :

  1. Dans la barre latérale, cliquez sur l’icône Bloc-notes.Espace de travail.

  2. Cliquez sur Créer, puis sélectionnez Notebook.

  3. Exécutez l’extrait de code Python suivant :

    display(dbutils.fs.ls('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/'))
    

    Cette opération affiche la liste des chemins d’accès aux fichiers dans l’emplacement externe. Dans cet exemple, le abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv fichier apparaît dans la sortie.

  4. Pour lire un fichier spécifique à l’emplacement externe, exécutez l’extrait de code Python suivant :

    spark.read.format("csv") \
       .option("header", "true") \
       .option("delimiter", ";") \
       .load('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv') \
       .display()
    

    Cela affiche les données dans le abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv fichier.

Étapes suivantes