Azure Data Lake Storage Gen2 を使っ てみる Get started with Azure Data Lake Storage Gen2

Azure ストレージアカウントのアクセスキーを使用して、 Azure Data Lake Storage Gen2 (ADLS Gen2) ストレージアカウントを簡単に認証し、アクセスすることができます。You can easily authenticate and access Azure Data Lake Storage Gen2 (ADLS Gen2) storage accounts using an Azure storage account access key.

アクセスキーの使用は、 サービスプリンシパル または 資格情報のパススルー を使用する場合よりも安全性が低くなりますが、ノートブックの開発やテストなどの非運用環境では便利です。Using an access key is less secure than using a service principal or credential passthrough but can be convenient for non-production scenarios such as developing or testing notebooks.

Azure Databricks ワークスペースからアクセスキーを直接使用することもできますが、秘密の スコープ にキーを格納すると、追加のセキュリティ層が提供されます。Although you can use an access key directly from your Azure Databricks workspace, storing the key in a secret scope provides an additional security layer. シークレットのスコープは、セキュリティで保護されたシークレットの保管と管理を提供し、Azure Databricks ワークスペースに直接含めずに、認証にアクセスキーを使用できるようにします。Secret scopes provide secure storage and management of secrets and allow you to use the access key for authentication without including it directly in your Azure Databricks workspace.

この記事では、Azure ストレージアカウントのアクセスキーを取得し、そのアクセスキーを Azure Key Vault によってサポートされる シークレットスコープに保存し、それを使用して Azure Databricks notebook から ADLS Gen2 ストレージアカウントにアクセスする方法について説明します。This article explains how to obtain an Azure storage account access key, save that access key in an Azure Key Vault-backed secret scope, and use it to access an ADLS Gen2 storage account from an Azure Databricks notebook. 次に、アクセスキーを構成し、それを使用して ADLS Gen2 ストレージアカウントにアクセスするためのタスクの概要を示します。The following is an overview of the tasks to configure an access key and use it to access an ADLS Gen2 storage account:

  1. Azure ストレージアカウントからアクセスキーを取得します。Obtain an access key from the Azure storage account.
  2. Azure キー コンテナーを作成します。Create an Azure key vault.
  3. Azure key vault に Azure アクセスキーを追加します。Add the Azure access key to the Azure key vault.
  4. Azure key vault によってバックアップされた Azure Databricks ワークスペースにシークレットスコープを作成します。Create a secret scope in your Azure Databricks workspace backed by the Azure key vault.
  5. シークレットスコープのアクセスキーを使用して、ストレージアカウントに対する認証を行います。Use the access key from the secret scope to authenticate to the storage account.

この記事では、Azure Key Vault によってサポートされるシークレットスコープの使用方法について説明しますが、Databricks によってサポートされる シークレットスコープ を使用してアクセスキーを格納することもできます。This article describes using an Azure Key Vault-backed secret scope, but you can also use a Databricks-backed secret scope to store the access key.

要件 Requirements

Azure adls アクセスキーを取得する Get an Azure ADLS access key

Azure portal を使用して ADLS Gen2 ストレージアカウントのアクセスキーを取得します。You obtain an access key for the ADLS Gen2 storage account using the Azure portal:

  1. Azure portal の ADLS Gen2 ストレージアカウントにアクセスします。Go to your ADLS Gen2 storage account in the Azure portal.

  2. [設定] で、[アクセス キー] を選択します。Under Settings, select Access keys.

  3. 使用可能ないずれかのアクセスキーの値をコピーします。Copy the value for one of the available access keys.

    アクセスキーの取得Get access key

Azure key vault とシークレットのスコープを作成する Create an Azure key vault and secret scope

Azure key vault と、そのキーコンテナーによってサポートされる Azure Databricks シークレットスコープを作成するには、次のようにします。To create the Azure key vault and an Azure Databricks secret scope backed by that key vault:

  1. Azure portal に Azure Key Vault インスタンスを作成します。Create an Azure Key Vault instance in the Azure portal.
  2. Azure Key Vault インスタンスによってサポートされる Azure Databricks シークレットスコープを作成します。Create the Azure Databricks secret scope backed by the Azure Key Vault instance.

手順 1: Azure Key Vault インスタンスを作成する Step 1: Create an Azure Key Vault instance

  1. Azure portal で、[ key vault > + 追加 ] を選択し、キーコンテナーに名前を付けます。In the Azure portal, select Key vaults > + Add and give your key vault a name.

  2. [確認および作成] をクリックします。Click Review + create.

  3. 検証が完了したら、[ 作成] をクリックします。After validation completes, click Create.

  4. Key vault を作成したら、新しい key vault の [ プロパティ ] ページにアクセスします。After creating the key vault, go to the Properties page for the new key vault.

  5. コンテナーの URIリソース ID をコピーして保存します。Copy and save the Vault URI and Resource ID.

    Azure キー コンテナーのプロパティAzure key vault properties

手順 2: Azure Key Vault によってサポートされるシークレットスコープを作成する Step 2: Create an Azure Key Vault-backed secret scope

Azure Databricks リソースは、Key Vault によってサポートされるシークレットスコープを作成することによって、Azure key vault に格納されているシークレットを参照できます。Azure Databricks resources can reference secrets stored in an Azure key vault by creating a Key Vault-backed secret scope. Azure Databricks UI、Databricks secret CLI、または DATABRICKS secret API を使用して、Azure Key Vault によってサポートされるシークレットスコープを作成できます。You can use the Azure Databricks UI, the Databricks Secrets CLI, or the Databricks Secrets API to create the Azure Key Vault-backed secret scope. この記事では、UI と CLI の使用方法について説明します。This article describes using the UI and CLI.

Azure Databricks UI で Azure Databricks シークレットスコープを作成する Create the Azure Databricks secret scope in the Azure Databricks UI
  1. 「」の Azure Databricks [ シークレットスコープの作成 ] ページにアクセスし https://<per-workspace-url>/#secrets/createScope ます。Go to the Azure Databricks Create Secret Scope page at https://<per-workspace-url>/#secrets/createScope. を、 per-workspace-url Azure Databricks ワークスペースの ワークスペースごと の一意の URL に置き換えます。Replace per-workspace-url with the unique per-workspace URL for your Azure Databricks workspace.

  2. スコープ名 を入力してください。Enter a Scope Name.

  3. 「手順 1: Azure Key Vault インスタンスを作成する」で作成した Azure key Vault の コンテナー URIリソース ID の値を入力します。Enter the Vault URI and Resource ID values for the Azure key vault you created in Step 1: Create an Azure Key Vault instance.

  4. [作成] をクリックします。Click Create.

    シークレットスコープの作成Create secret scope

CLI で Azure Databricks シークレットスコープを作成する Create the Azure Databricks secret scope in the CLI

Databricks CLI を使用して Azure key vault によってサポートされるシークレットスコープを作成するには、ターミナルを開き、次のコマンドを実行します。To create a secret scope backed by the Azure key vault using the Databricks CLI, open a terminal and run the following command:

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

ReplaceReplace

  • <scope-name> 新しいスコープの名前を指定します。<scope-name> with a name for the new scope.
  • <azure-keyvault-resource-id> key vault リソース ID を使用します。<azure-keyvault-resource-id> with the key vault Resource ID.
  • <azure-keyvault-dns-name> コンテナーの URI を使用します。<azure-keyvault-dns-name> with the Vault URI.

手順 1: Azure Key Vault インスタンスを作成する」の値を使用した例を次に示します。An example using the values from Step 1: Create an Azure Key Vault instance:

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

ストレージアカウントのアクセスキーを Azure key vault に保存する Save the storage account access key in the Azure key vault

  1. Azure portal で、 キーコンテナー サービスにアクセスします。In the Azure portal, go to the Key vaults service.

  2. 手順 1: Azure Key Vault インスタンスを作成する」で作成したキーコンテナーを選択します。Select the key vault created in Step 1: Create an Azure Key Vault instance.

  3. [ 設定 > シークレット] で、[ 生成/インポート] をクリックします。Under Settings > Secrets, click Generate/Import.

  4. [ 手動 アップロード] オプションを選択し、[ ] フィールドにストレージアカウントアクセスキーを入力します。Select the Manual upload option and enter the storage account access key in the Value field.

    シークレットを作成しますCreate a secret

シークレット CLI を使用して、シークレットが正常に作成されたことを確認します。Use the Secrets CLI to verify the secret was created successfully:

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

アクセスキーを使用して認証する Authenticate with the access key

認証用の資格情報を設定する方法は、データフレーム API と Dataset API のどちらを使用するか、または RDD API を使用するかによって異なります。The way you set credentials for authentication depends on whether you plan to use the DataFrame or Dataset API, or the RDD API.

データフレームまたは DataSet API DataFrame or DataSet API

Spark データフレームまたは Dataset Api を使用している場合、Databricks はノートブックのセッション構成でアカウントの資格情報を設定することをお勧めします。If you are using Spark DataFrame or Dataset APIs, Databricks recommends that you set your account credentials in your notebook’s session configs:

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>"))

ReplaceReplace

  • <storage-account-name> ADLS Gen2 ストレージアカウント名を使用します。<storage-account-name> with the ADLS Gen2 storage account name.
  • <scope-name> Azure Databricks シークレットスコープ名を使用します。<scope-name> with the Azure Databricks secret scope name.
  • <storage-account-access-key-name> には、Azure ストレージアカウントのアクセスキーを含むキーの名前を指定します。<storage-account-access-key-name> with the name of the key containing the Azure storage account access key.

RDD API RDD API

ADLS Gen2 にアクセスするために RDD API を使用している場合は、を使用して設定された Hadoop 構成オプションにアクセスすることはできません spark.conf.set()If you’re using the RDD API to access ADLS Gen2, you cannot access Hadoop configuration options set using spark.conf.set(). 次のいずれかの方法を使用して資格情報を設定する必要があります。You must set the credentials using one of the following methods:

  • クラスターを作成するときに、Hadoop 構成オプションを Spark 構成として指定します。Specify the Hadoop configuration options as Spark configs when you create the cluster. spark.hadoop.RDD ジョブの hadoop 構成に伝達するには、対応する hadoop 構成キーにプレフィックスを追加する必要があります。You must add the spark.hadoop. prefix to the corresponding Hadoop configuration keys to propagate them to the Hadoop configurations for your RDD jobs:

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

    ReplaceReplace

    • <storage-account-name> ADLS Gen2 ストレージアカウント名を使用します。<storage-account-name> with the ADLS Gen2 storage account name.
    • <storage-account-access-key>Azure ADLS アクセスキーを取得する」で取得したアクセスキーを使用します。<storage-account-access-key> with the access key you retrieved in Get an Azure ADLS access key

    警告

    これらの資格情報は、クラスターにアクセスするすべてのユーザーが使用できます。These credentials are available to all users who access the cluster.

  • スケールユーザーは、で資格情報を設定でき spark.sparkContext.hadoopConfiguration ます。Scala users can set the credentials in 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>")
    )
    

ReplaceReplace

  • <storage-account-name> ADLS Gen2 ストレージアカウント名を使用します。<storage-account-name> with the ADLS Gen2 storage account name.
  • <scope-name> Azure Databricks シークレットスコープ名を使用します。<scope-name> with the Azure Databricks secret scope name.
  • <storage-account-access-key-name> には、Azure ストレージアカウントのアクセスキーを含むキーの名前を指定します。<storage-account-access-key-name> with the name of the key containing the Azure storage account access key.

コンテナーを作成する Create a container

コンテナーは、ファイルシステム内のディレクトリと同様に、Azure ストレージアカウント内のオブジェクトを整理する手段を提供します。Like directories in a filesystem, containers provide a way to organize objects in an Azure storage account. ADLS Gen2 ストレージアカウントにアクセスする前に、1つまたは複数のコンテナーを作成する必要があります。You must create one or more containers before you can access an ADLS Gen2 storage account.

次のコマンドを実行して、Azure Databricks notebook から直接コンテナーを作成できます。You can create a container directly from an Azure Databricks notebook by running the following commands. アクセスキーによる認証」に記載されている手順に従っている場合は、最初のステートメントを削除します。Remove the first statement if you’ve already followed the instructions in Authenticate with the access key.

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")

ReplaceReplace

  • <storage-account-name> ADLS Gen2 ストレージアカウント名を使用します。<storage-account-name> with the ADLS Gen2 storage account name.
  • <scope-name> Azure Databricks シークレットスコープ名を使用します。<scope-name> with the Azure Databricks secret scope name.
  • <storage-account-access-key-name> には、Azure ストレージアカウントのアクセスキーを含むキーの名前を指定します。<storage-account-access-key-name> with the name of the key containing the Azure storage account access key.
  • <container-name> 新しいコンテナーの名前を指定します。<container-name> with the name for the new container.

Azure コマンドラインインターフェイス、Azure API、または Azure portal を使用して、コンテナーを作成することもできます。You can also a create container through the Azure command-line interface, the Azure API, or the Azure portal. ポータルでコンテナーを作成するには、次のようにします。To create a container in the portal:

  1. Azure portal で、[ ストレージアカウント] にアクセスします。In the Azure portal, go to Storage accounts.

  2. ADLS Gen2 アカウントを選択し、[ コンテナー] をクリックします。Select your ADLS Gen2 account and click Containers.

  3. [+ コンテナー] をクリックします。Click + Container.

  4. コンテナーの名前を入力し、[ 作成] をクリックします。Enter a name for your container and click Create.

    コンテナーの作成Create a container

<a name="access-adls-gen2-storage">ストレージへの アクセス ADLS Gen2 Access ADLS Gen2 storage

ADLS Gen2 ストレージアカウントを認証した後、標準の Spark Api と Databricks Api を使用してアカウントから読み取ることができます。After authenticating to the ADLS Gen2 storage account, you can use standard Spark and Databricks APIs to read from the account:


val df = spark.read.parquet(&quot;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>")

ノートブックの例Example notebook

この notebook では、次の場合にストレージアカウントアクセスキーを使用する方法を示します。This notebook demonstrates using a storage account access key to:

  1. ADLS Gen2 ストレージアカウントに対して認証します。Authenticate to an ADLS Gen2 storage account.
  2. ストレージアカウントに新しいコンテナーを作成します。Create a new container in the storage account.
  3. モノのインターネット (IoT) データを含む JSON ファイルを新しいコンテナーに書き込みます。Write a JSON file containing internet of things (IoT) data to the new container.
  4. コンテナー内のファイルを一覧表示します。List files in the container.
  5. コンテナーから IoT ファイルを読み取り、表示します。Read and display the IoT file from the container.

ADLS Gen2 notebook の概要Getting started with ADLS Gen2 notebook

ノートブックを入手Get notebook