このチュートリアルでは、Azure Key Vaultに格納されているストレージ アカウント キーを使用して、Azure DatabricksからAzure Blob Storageにアクセスします。
Important
ストレージ アカウント キーのアクセスは従来のパターンです。 新しいワークロードの場合は、(Unity カタログの資格情報または OAuth を使用する ABFS マウントを使用して) Azure DatabricksでMicrosoft Entra ID承認を使用し、ストレージ アカウントで共有キーの承認を無効にします。 Entra ID承認により、ストレージ アカウント キーを格納またはローテーションする必要がなく、きめ細かい監査が提供されます。 この記事の手順は、共有キー アクセスを引き続き使用するストレージ アカウントに対して有効なままです。
このチュートリアルでは、次の操作を行います。
- Azure CLIを使用してストレージ アカウントと BLOB コンテナーを作成します。
- キー コンテナーを作成し、シークレットを設定します。
- Azure Databricks ワークスペースを作成し、Key Vaultシークレット スコープを追加します。
- Azure Databricks ワークスペースから BLOB コンテナーにアクセスします。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
このチュートリアルを開始する前に、 Azure CLI をインストールします。
Azure CLI を使用してストレージ アカウントと BLOB コンテナーを作成する
BLOB を使用する汎用ストレージ アカウントを作成します。 リソース グループがない場合は、コマンドを実行する前に作成します。 次のコマンドは、ストレージ アカウントを作成し、そのメタデータを表示します。 ID 値をコピーします。
az storage account create --name <storage-account-name> --resource-group <resource-group> --location <location> --sku Standard_ZRS --encryption-services blob
BLOB をアップロードするコンテナーを作成する前に、 ストレージ BLOB データ共同作成者 ロールを自分に割り当てます。 この例では、前に作成したストレージ アカウントにロールが割り当てられます。
az role assignment create --role "Storage Blob Data Contributor" --assignee <user-principal-name> --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
ロールを割り当てたら、Blob 用のコンテナーを作成します。
az storage container create --account-name <storage-account-name> --name <container-name> --auth-mode login
コンテナーが作成されたら、BLOB (選択したファイル) をそれにアップロードします。 この例では、 helloworld を含む .txt ファイルがアップロードされます。
az storage blob upload --account-name <storage-account-name> --container-name <container-name> --name helloworld --file helloworld.txt --auth-mode login
確認するコンテナー内の BLOB を一覧表示します。
az storage blob list --account-name <storage-account-name> --container-name <container-name> --output table --auth-mode login
次のコマンドを使用して、ストレージ アカウントの key1 値を取得します。 値をコピーします。
az storage account keys list -g <resource-group> -n <storage-account-name>
キー コンテナーを作成してシークレットを設定する
次のコマンドを使用してキー コンテナーを作成します。 このコマンドは、キー コンテナーのメタデータも表示します。 ID と vaultUri の値をコピーします。
az keyvault create --name <vault-name> --resource-group <resource-group> --location <location> --enable-rbac-authorization true --enable-purge-protection true
シークレットを作成するには、次のコマンドを使用します。 シークレットの値をストレージ アカウントの key1 値に設定します。
az keyvault secret set --vault-name <vault-name> --name storageKey --value "value of your key1"
Azure Databricks ワークスペースを作成し、Key Vaultシークレット スコープを追加する
このセクションには、Azure ポータルが必要です。 これは次の目的で使用されます。
- Azure Databricks リソースを作成します。
- ワークスペースを起動します。
- Key Vaultに基づくシークレット スコープを作成します。
Azure Databricks ワークスペースから BLOB コンテナーにアクセスする
このセクションは、Azure Databricks ワークスペースで完了しています。 ワークスペースで次の手順を実行します。
- 新しい クラスターを作成します。
- 新しい ノートブックを作成します。
- Python スクリプトの対応するフィールドに入力します。
- Python スクリプトを実行します。
dbutils.fs.mount(
source = "wasbs://<container-name>@<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()
次のステップ
Key Vault が回復可能であることを確認します。