prise en main de Azure Data Lake Storage Gen2

vous pouvez facilement authentifier les comptes de stockage Azure Data Lake Storage Gen2 (ADLS Gen2) et y accéder à l’aide d’une clé d’accès au compte de stockage Azure.

L’utilisation d’une clé d’accès est moins sécurisée que l’utilisation d’un principal de service ou d’informations d’identification , mais peut être pratique pour des scénarios de non-production tels que le développement ou le test de blocs-notes.

Bien que vous puissiez utiliser une clé d’accès directement à partir de votre espace de travail Azure Databricks, le stockage de la clé dans une étendue secrète fournit une couche de sécurité supplémentaire. Les étendues secrètes fournissent un stockage et une gestion sécurisés des secrets et vous permettent d’utiliser la clé d’accès pour l’authentification sans l’inclure directement dans votre espace de travail Azure Databricks.

Cet article explique comment obtenir une clé d’accès de compte de stockage Azure, enregistrer cette clé d’accès dans une étendue de secret Azure Key Vaultet l’utiliser pour accéder à un compte de stockage ADLS Gen2 à partir d’un bloc-notes Azure Databricks. Voici une vue d’ensemble des tâches permettant de configurer une clé d’accès et de l’utiliser pour accéder à un ADLS Gen2 compte de stockage :

  1. Obtenez une clé d’accès à partir du compte de stockage Azure.
  2. Créez un coffre de clés Azure.
  3. Ajoutez la clé d’accès Azure au coffre de clés Azure.
  4. Créez une étendue secrète dans votre Azure Databricks espace de travail sauvegardé par le coffre de clés Azure.
  5. Utilisez la clé d’accès de l’étendue du secret pour vous authentifier auprès du compte de stockage.

Cet article décrit l’utilisation d’une étendue de secret Azure Key Vault, mais vous pouvez également utiliser une étendue de secret Databricks pour stocker la clé d’accès.

Configuration requise

Obtient une clé d’accès Azure ADLS

Vous obtenez une clé d’accès pour le compte de stockage ADLS Gen2 à l’aide de la Portail Azure :

  1. Accédez à votre compte de stockage ADLS Gen2 dans le Portail Azure.

  2. Sous Paramètres, sélectionnez Clés d’accès.

  3. Copiez la valeur de l’une des clés d’accès disponibles.

    Récupérer la clé d’accès

Créer un coffre de clés Azure et une étendue secrète

Pour créer le coffre de clés Azure et une Azure Databricks étendue secrète sauvegardée par ce coffre de clés :

  1. Créez une instance Azure Key Vault dans le portail Azure.
  2. Créez l’étendue de secrets Azure Databricks étendue reposant sur l’instance Azure Key Vault.

Étape 1 : Créer une instance Azure Key Vault

  1. Dans le Portail Azure, sélectionnez coffres de clés + Ajouter et donnez un nom à votre coffre de clés.

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

  3. Une fois la validation terminée, cliquez sur créer.

  4. Après avoir créé le coffre de clés, accédez à la page Propriétés du nouveau coffre de clés.

  5. Copiez et enregistrez l’URI du coffre et l’ID de la ressource.

    Propriétés du coffre de clés Azure

Étape 2 : créer une étendue du secret sauvegardée par le Azure Key Vault

Les ressources Azure Databricks peuvent faire référence à des secrets stockés dans un coffre de clés Azure en créant une étendue de secrets reposant sur Key Vault. Vous pouvez utiliser l’interface utilisateur Azure Databricks, l’interface CLI Databricks secretsou l' API 2,0 de secrets Databricks pour créer l’étendue du secret sauvegardé Azure Key Vault. Cet article décrit l’utilisation de l’interface utilisateur et de l’interface CLI.

Créer l’étendue du secret Azure Databricks dans l’interface utilisateur Azure Databricks
  1. Accédez à la page Azure Databricks créer une étendue secrète à l’adresse . Remplacez per-workspace-url par l' per-workspace-url pour votre espace de travail Azure Databricks.

  2. Entrez le nom de l’étendue.

  3. Entrez les valeurs URI du coffre et ID de la ressource du coffre de clés Azure que vous avez créé à l’étape 1 : Créer une instance Azure Key Vault.

  4. Cliquez sur Créer.

    Créer une étendue secrète

Créer l’étendue du secret Azure Databricks dans l’interface CLI

Pour créer une étendue secrète sauvegardée par le coffre de clés Azure à l’aide de l’interface CLI Databricks, ouvrez un terminal et exécutez la commande suivante :

databricks secrets create-scope \
--scope <scope-name> \
--scope-backend-type AZURE_KEYVAULT \
--resource-id <azure-keyvault-resource-id> \
--dns-name <azure-keyvault-dns-name>

Replace

  • <scope-name> avec un nom pour la nouvelle étendue.
  • <azure-keyvault-resource-id> avec l’ID de <azure-keyvault-resource-id>du coffre de clés.
  • <azure-keyvault-dns-name> avec l' <azure-keyvault-dns-name>.

Un exemple utilisant les valeurs de l' étape 1 : créer une instance Azure Key Vault:

databricks secrets create-scope \
--scope example-akv-scope \
--scope-backend-type AZURE_KEYVAULT \
--resource-id /subscriptions/… \
--dns-name https://example-akv.vault.azure.net/

Enregistrer la clé d’accès du compte de stockage dans le coffre de clés Azure

  1. Dans le portail Azure, accédez au service Key Vault.

  2. Sélectionnez le coffre de clés créé à l’étape 1 : Créer une instance Azure Key Vault.

  3. sous Paramètres Secrets, cliquez sur générer/importer.

  4. Sélectionnez l’option chargement Manuel , puis entrez la clé d’accès du compte de stockage dans le champ valeur .

    Créer une clé secrète

Utilisez l' interface CLI de secrets pour vérifier que la clé secrète a été créée correctement :

databricks secrets list --scope example-akv-scope
Key name               Last updated
--------------------   --------------
example-adls2-secret   1605122724000

S’authentifier avec la clé d’accès

La façon dont vous définissez les informations d’identification pour l’authentification varie selon que vous prévoyez d’utiliser l’API tableau ou DataSet, ou l’API RDD.

API tableau ou DataSet

Si vous utilisez Spark tableau ou des API DataSet, Databricks vous recommande de définir les informations d’identification de votre compte dans les configurations de session de votre bloc-notes :

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

Replace

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

API RDD

Si vous utilisez l’API RDD pour accéder à ADLS Gen2, vous ne pouvez pas accéder aux options de configuration de Hadoop définies à l’aide de spark.conf.set() . Vous devez définir les informations d’identification à l’aide de l’une des méthodes suivantes :

  • Spécifiez les options de configuration de Hadoop en tant que configurations Spark lors de la création du cluster. Vous devez ajouter le spark.hadoop. préfixe aux clés de configuration Hadoop correspondantes pour les propager aux configurations Hadoop pour vos travaux RDD :

    spark.hadoop.fs.azure.account.key.<storage-account-name>.dfs.core.windows.net <storage-account-access-key>
    

    Replace

    • <storage-account-name> par le nom du compte de stockage ADLS Gen2.
    • <storage-account-access-key> avec la clé d’accès que vous avez récupérée dans la <storage-account-access-key>

    Avertissement

    Ces informations d’identification sont accessibles à tous les utilisateurs qui accèdent au cluster.

  • Les utilisateurs Scala peuvent définir les informations d’identification dans spark.sparkContext.hadoopConfiguration :

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

Replace

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

Créer un conteneur

Comme les répertoires dans un système de fichiers, les conteneurs permettent d’organiser les objets dans un compte de stockage Azure. Vous devez créer un ou plusieurs conteneurs pour pouvoir accéder à un compte de stockage ADLS Gen2.

Vous pouvez créer un conteneur directement à partir d’un bloc-notes Azure Databricks en exécutant les commandes suivantes. Supprimez la première instruction si vous avez déjà suivi les instructions dans authentifier avec la clé d’accès.

spark.conf.set(
   "fs.azure.account.key.<storage-account-name>.dfs.core.windows.net",
   dbutils.secrets.get(scope="<scope-name>",
   key="<storage-account-access-key-name>"))
spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/")
spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "false")

Replace

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

Vous pouvez également créer un conteneur par le biais de l’interface de ligne de commande Azure, de l’API Azure ou du Portail Azure. Pour créer un conteneur dans le portail :

  1. dans le Portail Azure, accédez à Stockage comptes.

  2. Sélectionnez votre compte ADLS Gen2, puis cliquez sur conteneurs.

  3. Cliquez sur + conteneur.

  4. Entrez un nom pour votre conteneur, puis cliquez sur créer.

    Créez un conteneur.

Accès au stockage ADLS Gen2

Après vous être authentifié auprès du compte de stockage ADLS Gen2, vous pouvez utiliser les API Spark et Databricks standard pour lire à partir du compte :


val df = spark.read.parquet("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>")
dbutils.fs.ls("abfss://<file-system-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>")

Exemple de bloc-notes

Ce bloc-notes montre comment utiliser une clé d’accès de compte de stockage pour :

  1. Authentifiez-vous auprès d’un compte de stockage ADLS Gen2.
  2. Créez un conteneur dans le compte de stockage.
  3. Écrire un fichier JSON contenant les données de l’Internet des objets (IoT) dans le nouveau conteneur.
  4. Répertorie les fichiers dans le conteneur.
  5. Lire et afficher le fichier IoT à partir du conteneur.

Prise en main du bloc-notes ADLS Gen2

Obtenir le notebook