0
0

More than 1 year has passed since last update.

Azure Key Vaultに格納されたシークレットを利用してAzure DatabricksからBlob Storageへアクセス

Last updated at Posted at 2022-01-25

概要

Storageのアクセス情報をAzureDatabricksのNotebooks上に記載してアクセスするのではなく、AzureKeyVaultを利用してアクセスしてみたいと思います。

必要なリソース

  • StorageAccountとBlobコンテナー
  • AzureDatabricks
  • AzureKeyVault

手順

blobコンテナーの作成

  • 作成したStorageAccountの画面に移動し、[データストレージ]欄の[コンテナー]を選択します。[+コンテナー]を選択し、コンテナー名を入力します。
    スクリーンショット 2022-01-25 10.29.00.png

  • コンテナー内にテスト用のテキストファイルをアップロードしておきます。
    スクリーンショット 2022-01-25 10.29.40.png

  • [セキュリティとネットワーク]の下にある[アクセスキー]を選択します。[StorageAccount名]と[key1のキー]情報をメモしておきます。
    ※キーの情報は、[キーの表示]をクリックすると表示されます。
    スクリーンショット 2022-01-25 10.29.56.png

AzureKeyVaultにシークレットを追加

  • 作成したキーコンテナーの画面に移動し、[設定]欄から[シークレット]を選択します。[+生成/インポート]を選択します。
    スクリーンショット 2022-01-25 10.30.13.png

  • [シークレットの作成]画面で、以下の情報を指定します。残りの値はデフォルトのまま使用します。
    ※ 対象StorageAccountキーのフレンドリ名はメモしておきます。

    • アップロードオプション:手動
    • 名前:対象StorageAccountキーのフレンドリ名
    • 値:先程コピーした対象StorageAccountのKey1の値 スクリーンショット 2022-01-25 10.41.35.png
  • [設定]欄から[プロパティ]を選択します。[コンテナーの URI]と[リソース ID]をメモしておきます。
    スクリーンショット 2022-01-25 10.30.44.png

AzureDatabricksにシークレットスコープを作成

  • 作成したAzureDatabricksのワークスペースを起動します。ワークスペースが別ウィンドウで開かれたら、URLの末尾に[#secrets/createScope]を追加します。

  • [Scope Name]を入力し、メモしておいた[コンテナーの URI]と[リソース ID]を入力します。
    ※ Scope Nameはメモしておきます。
    スクリーンショット 2022-01-25 10.31.05.png

  • AzureDatabricksワークスペースのホームページで[New Cluster]を選択します。[Cluster Name]を入力し、クラスターを作成します。
    スクリーンショット 2022-01-25 10.31.17.png

  • AzureDatabricksワークスペースのホームページで[New Notebook]を選択します。
    スクリーンショット 2022-01-25 10.31.44.png

  • Notebook名を入力し、言語をpythonに設定します。加えて、先ほど作成したクラスターを設定します。
    スクリーンショット 2022-01-25 10.32.00.png

  • 次のコマンドを実行して、コンテナーにマウントします。以下の値は変更してください。

    • your-container-name
      • StorageAccountに作成したコンテナ名
    • your-storage-account-name
      • 作成したStorageAccount名
    • mount-name
      • 任意で指定したmount-nameを使用してディレクトリが作成されます。
    • config-key
      • fs.azure.account.key.[your-storage-account-name].blob.core.windows.net" または、"fs.azure.sas.[your-container-name].[your-storage-account-name].blob.core.windows.net"を選択します。
    • scope-name
      • Databricksで作成したシークレットスコープの名前
    • key-name
      • AzureKeyVault内のStorageAccountキー用に作成したシークレットの名前
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>")})

スクリーンショット 2022-01-25 10.32.14.png

  • BlobStorageコンテナー内のテキストファイルをデータフレームに読み込みます。
df = spark.read.text("/mnt/<指定のmount-name>/<コンテナ内のfile-name>")

スクリーンショット 2022-01-25 10.32.38.png

  • ファイルの内容を表示します。
df.show()

スクリーンショット 2022-01-25 10.32.55.png

  • マウントを解除します。
dbutils.fs.unmount("/mnt/<指定のmount-name>")

スクリーンショット 2022-01-25 10.33.09.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0