この記事は2024.03.13時点で作成されました。
関連Official Document:
https://learn.microsoft.com/ja-jp/azure/databricks/security/secrets/secret-scopes
はじめに
Azure Databricksでは以下の二つのタイプのSecret Scopeがあります。
- Azure Key Vault-backed scopes
- Databricks-backed scopes
この記事では1. Azure Key Vault-backed scopesを使ったDatabricks Secretsの作成および管理方法を説明します。
Secret作成の始め方
- Azure portalでKey vault instanceを作成
- Azure Databricks UIでSecret Scopeを作成
- Azure portalのkey vault画面でSecretを作成
- SecretをDatabricks Notebookで読み込む(
dbutils利用) - 作成されたSecretを他のPrincipal(GroupやUser)に権限付与
- 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を作成してください。
Azure portalでKey vault instanceを作成
Azure portalでKey vaults iconをクリックします。

Key vault nameを決めます。
Nextボタンを押します。

Permission modelはVault access policyを選択します。
Nextボタンを押します。

一旦Networkingは後で調整できるため、DefaultのままNextボタンを押します。

Createボタンをクリックして新しいKey vaultを作成します。

Azure Databricks UIでSecret Scopeを作成
Secret scope作成
https://#secrets/createScope でCreate Secret Scope UIにアクセスします。
DNS NameとResource IDはAzure Key vaultのPropertiesメニューで取得します。
| Databricks UI | Azure UI |
|---|---|
| DNS Name | Vault URI |
| Resource ID | Resource ID |
作成された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メニューをクリックします。

SecretのNameとSecret Valueを入力し、Createボタンをクリックします。
作成されたSecret確認
Azure portalのSecretsメニューかDatabricks NotebookでSecrets APIを利用し、作成されたSecretが確認できます。
Azure portalのSecretsメニューで確認した場合
新しく作成したjdbc-usernameが表示されます。
ただ、Public accessを制限すると見えなくなる可能性があります。

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で通信できるようになります。






