チュートリアル:Azure Databricks と Azure Key Vault を使用して Azure Blob Storage にアクセスする

このチュートリアルでは、Azure Key Vault に格納されたシークレットを使用して Azure Databricks から Azure Blob Storage にアクセスする方法について説明します。

このチュートリアルでは、以下の内容を学習します。

  • Azure CLI を使用してストレージ アカウントと BLOB コンテナーを作成する
  • キー コンテナーを作成し、シークレットを設定する
  • Azure Databricks ワークスペースを作成し、キー コンテナー シークレット スコープを追加する
  • Azure Databricks ワークスペースから自分の BLOB コンテナーにアクセスする

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

このチュートリアルを開始する前に、Azure CLI をインストールします。

Azure CLI を使用してストレージ アカウントと BLOB コンテナーを作成する

BLOB を使用するには、まず汎用ストレージ アカウントを作成する必要があります。 リソース グループがない場合は、コマンドを実行する前に作成します。 次のコマンドを実行すると、ストレージ コンテナーのメタデータが作成され、表示されます。 ID をメモします。

az storage account create --name contosoblobstorage5 --resource-group contosoResourceGroup --location eastus --sku Standard_ZRS --encryption-services blob

上記のコマンドのコンソール出力。エンドユーザーが確認するために、ID が緑色で強調表示されています。

BLOB をアップロードするコンテナーを作成する前に、ストレージ BLOB データ共同作成者ロールを自分に割り当てる必要があります。 この例では、このロールは前に作成したストレージ アカウントに割り当てられます。

az role assignment create --role "Storage Blob Data Contributor" --assignee t-trtr@microsoft.com --scope "/subscriptions/{subscription-id}/resourceGroups/contosoResourceGroup5/providers/Microsoft.Storage/storageAccounts/contosoblobstorage5

これで、ストレージ アカウントにロールを割り当てることができました。次は、BLOB のコンテナーを作成します。

az storage container create --account-name contosoblobstorage5 --name contosocontainer5 --auth-mode login

コンテナーが作成されたら、そのコンテナーに BLOB (任意のファイル) をアップロードできます。 この例では、helloworld という名前の .txt ファイルがアップロードされます。

az storage blob upload --account-name contosoblobstorage5 --container-name contosocontainer5 --name helloworld --file helloworld.txt --auth-mode login

コンテナー内の BLOB を一覧表示して、コンテナーに対象の BLOB が含まれていることを確認します。

az storage blob list --account-name contosoblobstorage5 --container-name contosocontainer5 --output table --auth-mode login

上記のコマンドのコンソール出力。前の手順でコンテナーに格納されたファイルが表示されます。

次のコマンドを使用して、ストレージ コンテナーの key1 値を取得します。 値をメモします。

az storage account keys list -g contosoResourceGroup5 -n contosoblobstorage5

上記のコマンドのコンソール出力。key1 の値が緑色のボックスで強調表示されています。

キー コンテナーを作成し、シークレットを設定する

次のコマンドを使用して、キー コンテナーを作成します。 このコマンドを実行すると、キー コンテナーのメタデータも表示されます。 IDvaultUri をメモします。

az keyvault create --name contosoKeyVault10 --resource-group contosoResourceGroup5 --location eastus

イメージ上記のコマンドのコンソール出力。ユーザーが確認できるように、ID と vaultUri の両方が緑色で強調表示されています。

シークレットを作成するには、次のコマンドを使用します。 シークレットの値を、対象のストレージ アカウントの key1 値に設定します。

az keyvault secret set --vault-name contosoKeyVault10 --name storageKey --value "value of your key1"

Azure Databricks ワークスペースを作成し、キー コンテナー シークレット スコープを追加する

このセクションは、コマンド ラインを使用して完了することはできません。 次の操作を行うには、Azure portal にアクセスする必要があります。

  1. Azure Databricks リソースを作成する
  2. ワークスペースを起動する
  3. キー コンテナーを利用するシークレットのスコープを作成する

Azure Databricks ワークスペースから自分の BLOB コンテナーにアクセスする

このセクションは、コマンド ラインを使用して完了することはできません。 次の操作を行うには、Azure Databricks ワークスペースを使用する必要があります。

  1. 新しいクラスターを作成する
  2. 新しいノートブックを作成する
  3. Python スクリプトの対応するフィールドに入力する
  4. Python スクリプトを実行する
dbutils.fs.mount(
source = "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

df = spark.read.text("/mnt/<mount-name>/<file-name>")

df.show()

次のステップ

キー コンテナーが回復可能であることを確認します。