LoginSignup
4
2

Azure Key Vault-backed scopesを使ったDatabricks Secretsの作成および管理

Last updated at Posted at 2024-03-13

この記事は2024.03.13時点で作成されました。

関連Official Document:
https://learn.microsoft.com/ja-jp/azure/databricks/security/secrets/secret-scopes

はじめに

Azure Databricksでは以下の二つのタイプのSecret Scopeがあります。

  1. Azure Key Vault-backed scopes
  2. Databricks-backed scopes

この記事では1. Azure Key Vault-backed scopesを使ったDatabricks Secretsの作成および管理方法を説明します。

Secret作成の始め方

  1. Azure portalでKey vault instanceを作成
  2. Azure Databricks UIでSecret Scopeを作成
  3. Azure portalのkey vault画面でSecretを作成
  4. SecretをDatabricks Notebookで読み込む(dbutils利用)
  5. 作成されたSecretを他のPrincipal(GroupやUser)に権限付与
  6. Public access制限(Optional)

Azure Key Vault-backed scopesを使ったDatabricks Secretsを管理するにあたって、ツールによってできる作業がそれぞれ違います。

この記事では一番簡単に行けるAzure Web UI + Databricks Secrets APIで説明します。

オペレーション Azure Web UI Databricks CLI Databricks Secrets API
Create a scope O O(AAD Token必要) X
List all scopes O O O
Create a secret O X X
Delete a secret O O X
List all secrets in a scope O O O
Get ACL X O O
Create update an ACL X O O

Azure Key vault、Scope、Secretの関係

Azure key vaultに一つのSecret Scopeを作成し、そのScopeの中に複数のSecretを作成します。

Use caseでScopeを別途作りたい場合、別途Azure key vaultを作成し新しいScopeを作成してください。

Screenshot 2024-03-13 at 15.46.44.png

Azure portalでKey vault instanceを作成

Azure portalでKey vaults iconをクリックします。
Screenshot 2024-03-13 at 15.49.05.png

+Createボタンを押します。
Screenshot 2024-03-13 at 15.50.13.png

Key vault nameを決めます。
Nextボタンを押します。
Screenshot 2024-03-13 at 15.51.54.png

Permission modelはVault access policyを選択します。
Nextボタンを押します。
Screenshot 2024-03-13 at 15.53.22.png

一旦Networkingは後で調整できるため、DefaultのままNextボタンを押します。
Screenshot 2024-03-13 at 15.55.06.png

Createボタンをクリックして新しいKey vaultを作成します。
Screenshot 2024-03-13 at 15.55.59.png

Azure Databricks UIでSecret Scopeを作成

Secret scope作成

https://#secrets/createScope でCreate Secret Scope UIにアクセスします。

Screenshot 2024-03-13 at 16.00.36.png

DNS NameとResource IDはAzure Key vaultのPropertiesメニューで取得します。

Databricks UI Azure UI
DNS Name Vault URI
Resource ID Resource ID

Screenshot 2024-03-13 at 16.02.00.png

作成されたSecret scope確認

Secrets APIを利用し、

Secret scopeが正常に作成されているかを確認します。
まずPAT(Personal Access Token)を用意します。
Databricksパーソナルアクセストークンを参照

Databricks notebookで以下のコードを実行します。
<workspace uri><token value>はカスタマイズします。

import requests
workspace_uri='<workspace uri>'

TOKEN = '<token value>'

response= requests.get(
    f"https://{workspace_uri}/api/2.0/secrets/scopes/list",
    headers={'Authorization': 'Bearer {}'.format(TOKEN)}
)
print(response)
print(response.text)

Sample responseは以下のようです。

<Response [200]>
{"scopes":[{"name":"[REDACTED]-demo-akv","backend_type":"AZURE_KEYVAULT","keyvault_metadata":{"resource_id":"/subscriptions/xxxx/resourceGroups/[REDACTED]-akv/providers/Microsoft.KeyVault/vaults/[REDACTED]-demo-akv","dns_name":"https://[REDACTED]-xxxx/"}}]}

Azure portalのkey vault画面でSecretを作成

Secret作成

Azure key vault instanceのSecretsメニューをクリックします。
Screenshot 2024-03-13 at 16.17.20.png

Generate/Importボタンをクリックします。
Screenshot 2024-03-13 at 16.19.01.png

SecretのNameとSecret Valueを入力し、Createボタンをクリックします。

Screenshot 2024-03-13 at 16.20.07.png

作成されたSecret確認

Azure portalのSecretsメニューかDatabricks NotebookでSecrets APIを利用し、作成されたSecretが確認できます。

Azure portalのSecretsメニューで確認した場合

新しく作成したjdbc-usernameが表示されます。
ただ、Public accessを制限すると見えなくなる可能性があります。
Screenshot 2024-03-13 at 16.20.59.png

Databricks NotebookでSecrets APIを利用し、作成されたSecretを確認

Secrets APIを利用し、

Secretが正常に作成されているかを確認します。
まずPAT(Personal Access Token)を用意します。
Databricksパーソナルアクセストークンを参照

Databricks notebookで以下のコードを実行します。
<workspace uri><token value><scope name>はカスタマイズします。

import json
import requests
workspace_uri='<workspace uri>'

TOKEN = '<token value>'

response= requests.get(
    f"https://{workspace_uri}/api/2.0/secrets/list",
    headers={'Authorization': 'Bearer {}'.format(TOKEN)},
    data=json.dumps({
  "scope": "<scope name>"
    }
))
print(response)
print(response.text)

作成されたSecretを他のPrincipal(GroupやUser)に権限付与

Secretに権限付与

Secrets APIを利用し、

作成されたSecretを他のPrincipal(GroupやUser)に権限付与します。
まずPAT(Personal Access Token)を用意します。
Databricksパーソナルアクセストークンを参照

Databricks notebookで以下のコードを実行します。
<workspace uri><token value><scope name>>principal name>はカスタマイズします。permissionはREAD | WRITE | MANAGEのうち選びます。

import json
import requests
workspace_uri='<workspace uri>'

TOKEN = '<token value>'
response= requests.post(
    f"https://{workspace_uri}/api/2.0/secrets/acls/put",
    headers={'Authorization': 'Bearer {}'.format(TOKEN)},
    data=json.dumps({
  "scope": "<scope name>",
  "principal": "<principal name>",
  "permission": "<READ | WRITE | MANAGE>"
})
)
print(response)
print(response.text)

Secretの権限確認

Databricks notebookで以下のコードを実行します。

Databricks notebookで以下のコードを実行します。
<workspace uri><token value><scope name>はカスタマイズします。

response= requests.get(
    f"https://{workspace_uri}/api/2.0/secrets/acls/list",
    headers={'Authorization': 'Bearer {}'.format(TOKEN)},
    data=json.dumps({
  "scope": "<scope name>"
})
)
print(response)
print(response.text)

Public access制限(Optional)

Azure PortalのAzure key vault instanceのNetworkingメニューでPublic accessを制限することができます。

Disable public accessを選択し、Allow trusted Microsoft services to bypass this firewallにチェックを入れます。

この設定でPublic accessが制限されますが、Azure DatabricksとKey vault instance間はAzure backboneで通信できるようになります。

Screenshot 2024-03-13 at 16.57.09.png

Databricks 無料トライアル

Databricks 無料トライアル

4
2
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
4
2