Important
この機能は ベータ版です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。
このページでは、Unity Catalogスキーマを外部シークレットマネージャーに接続し、そのシークレット値をAzure Key Vaultに保持する方法を示しています。
外部シークレットの仕組みや制限については、 Unity Catalogの外部シークレットを参照してください。
始める前の準備
- Unityカタログの秘密要件を満たしてください。
- 外部秘密のベータはワークスペースで有効にしておく必要があります。
- 外部からバックアップしたいスキーマには、Azure Databricksで管理される秘密を含んではいけません。 バックエンドを切り替える前に既存の秘密を削除してください。
- 外部シークレットマネージャーへのUnity Catalog接続と、認証に使うUnity Catalogサービス認証情報が必要です。 これらを作成するには、既存の接続に
USE CONNECTIONがあるか、メタストアでCREATE CONNECTIONを作成し、サービス認証情報にアクセスするか、メタストアでCREATE CREDENTIAL作成する必要があります。
- Azure Key Vault のサポートは、
AZURE_KEY_VAULT接続を使用する Azure 上の Azure Databricks でのみ利用できます。
外部秘密を設定する
サービス認証情報を作成する
この接続はUnityカタログのサービス認証情報で外部のシークレットマネージャーに認証されます。
管理されたアイデンティティまたはサービスプリンシパルによって裏付けられたサービス認証情報を作成し、ターゲットKey Vaultから秘密をリストアップし読み取る権限を付与します。 例えば、Key Vault Secrets User ロール、または get と list のシークレットに対するアクセス許可を含む同等のアクセス ポリシーを割り当てます。 手順については「 サービス認証情報の作成」をご覧ください。
接続を作成する
前のステップで取得したサービス認証情報を参照し、外部シークレットマネージャを指すUnity Catalog接続を作成します。
カタログ エクスプローラー
- Azure Databricksでカタログエクスプローラーを開き、+メニューをクリックして「接続を作成」を選択します。
- 接続名を入力し、Azure Key Vault接続タイプを選択します。
- 認証するサービス認証情報を選択し、Key Vaultのボールト名を設定します。
- Create をクリックしてください。
Databricks コマンドラインインターフェース (CLI)
AZURE_KEY_VAULT 接続タイプを使用して、接続本体を --json で渡します。
vault_nameをKey Vault名に設定し、credentialサービスを認証名に設定してください:
databricks connections create --json '{
"name": "my_key_vault_connection",
"connection_type": "AZURE_KEY_VAULT",
"options": {
"vault_name": "my-vault",
"credential": "my_key_vault_credential"
}
}'
REST API
/api/2.1/unity-catalog/connectionsエンドポイントをAZURE_KEY_VAULT接続タイプで使います。 Azure Databricks では、vault_name は https://<vault_name>.vault.azure.net に解決されます:
curl -X POST \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "my_key_vault_connection",
"connection_type": "AZURE_KEY_VAULT",
"options": {
"vault_name": "my-vault",
"credential": "my_key_vault_credential"
}
}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/connections"
接続を使用してスキーマをバックアップする
スキーマのシークレットバックエンドをカタログエクスプローラーで設定してください。
Azure DatabricksでCatalog Explorerを開き、スキーマに行きます。
スキーマの詳細で外部シークレットマネージャーの設定を見つけて「 Enable」をクリックします。
スキーマにはAzure Databricks管理の秘密が含まれてはなりません。 もしそうなら、まずそれらを外してください。 Enable は スキーマに秘密がなくなるまで無効のままです。
前のステップで作成した接続を選択し、確認します。
スキーマは外部シークレットマネージャーによって裏付けられ、そのシークレットはUnity Catalogに表示されます。
スキーマを別の接続に向けたい場合は 、Editを使います。 スキーマをAzure Databricks管理ストレージに戻すには、スキーマを編集し外部シークレットを無効にしてください。
スキーマのシークレットバックエンドの設定や変更には、親カタログの USE CATALOG 、スキーマまたは MANAGE の所有権、そして接続上の USE CONNECTION が必要です。
外部の秘密を読む
スキーマが外部からバックアップされると、その秘密はUnity Catalogに現れ、他のUnity Catalogの秘密と同様に読み取ることができます。 スキーマをリストアップするとインポートがトリガーされるため、新たに追加されたシークレットは次のリストの後にしか現れません。 両方のクラウドで読み取りコマンドは同じです。
Dbutils
dbutils 秘密の編集を行い、値の読み方として推奨されています。 Databricks Runtime 17.3 LTS以上、またはサーバーレス環境バージョン4以上が必要です。
# List the secrets in the schema
all_secrets = dbutils.secrets.list(catalog="main", schema="default")
# Read a specific secret value from the external secret manager
my_secret = dbutils.secrets.get(catalog="main", schema="default", key="example_secret")
REST API
include_value=trueを設定し、effective_valueフィールドを読み取って値を返します。 REST APIは返された値を編集しませんが、アクセスは監査します。Azure Databricksは代わりに dbutils を推奨しています。
curl -G \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
--data-urlencode "include_value=true" \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets/main.default.example_secret"
また、Azure Databricks管理の秘密と同様に、Catalog Explorerで外部シークレットを閲覧・リストアップすることもできます。 「 秘密を読む」をご覧ください。
もし秘密がUnityカタログにまだ現れていなくても、名前で読むことは可能です。 外部シークレットマネージャーに表示される名前を提供し、 命名制限 による文字置換を適用してください。
その他のリソース
| 特徴 | Description |
|---|---|
| Unityカタログの外部秘密 | Unity Catalogが外部から裏付けられた秘密をどのようにインポート、管理、読み取るかを学び、制限について確認してください。 |
| ユニティの秘密カタログ | Azure DatabricksがUnity Catalogに保存する秘密を作成、管理します。 |
| サービス資格情報を作成する | 接続が認証に使うUnity Catalogのサービス認証情報を作成します。 |