Important
この機能は パブリック プレビュー段階です。
このページでは、Unity カタログでシークレットを作成、読み取り、管理、管理する方法について説明します。 Unity カタログ シークレットは、パスワード、トークン、API キーなどの機密性の高いマテリアルを格納するセキュリティ保護可能なオブジェクトです。 ノートブックとジョブは、コード内の値を公開せずにシークレットを参照できます。
Unity カタログ シークレットは 3 レベルの名前空間 (catalog.schema.secret) を使用し、メタストアにアタッチされているワークスペース全体で使用できます。 それらには Unity カタログの権限が適用されます。 これにより、他のデータ資産に使用するのと同じアクセス モデルと監査をシークレットに適用できます。
Note
Unity カタログ シークレットは、シークレット スコープに編成されたワークスペース レベルのAzure Databricks シークレットとは異なります。 Unity カタログ特権でシークレットを管理し、3 レベルの名前空間で参照する場合は、Unity カタログ シークレットを使用します。
Unity Catalog シークレットの仕組み
Unity カタログ シークレットは、完全修飾名が catalog.schema.secretされたスキーマのセキュリティ保護可能なオブジェクトです。 他の Unity カタログのセキュリティ保護可能なオブジェクトと同様に、シークレットはカタログとスキーマからの特権の継承をサポートします。 セキュリティ保護可能なオブジェクトと継承の詳細については、 Unity カタログのセキュリティ保護可能なオブジェクトのリファレンスを参照してください。
Unity カタログ シークレットは、次の方法で使用できます。
- コード内の値を取得します。
READ SECRETアクセス権を持つユーザーは、dbutilsまたは Unity カタログ REST API を使用して、ノートブックとジョブからシークレット値を取得できます。 その後、外部システムで認証を行ったり、データの暗号化と暗号化解除を行ったりするために使用できます。 - Unity カタログ オブジェクトの値を参照します。 Unity カタログ接続などの Unity Catalog オブジェクトは、名前によってシークレットを参照できるため、統合ではユーザーに値へのアクセスを許可せずにシークレットを使用できます。 オブジェクトに応じて、シークレットを参照するには、
REFERENCE SECRETまたはREAD SECRETが必要です。
Azure Databricksは、暗号化された Unity カタログ シークレット値を格納し、シークレットの再処理を適用して、出力とログの偶発的な露出を減らします。 シークレットをローテーションするには、UI または Unity Catalog REST API でその値を定期的に更新します。
Unity Catalog シークレットの権限
次の特権によってシークレットが管理されます。 カタログ、スキーマ、または個々のシークレット レベルで付与できます。これらは Unity カタログの特権の継承に従います。
| 権限 | Description |
|---|---|
CREATE SECRET |
ユーザーがスキーマにシークレットを作成できるようにします。 カタログ レベルまたはスキーマ レベルで付与されます。 |
READ SECRET |
ユーザーがシークレット値を取得できるようにします。 |
WRITE SECRET |
ユーザーがシークレット値を更新できるようにします。 |
REFERENCE SECRET |
ユーザーが値にアクセスせずに、たとえば Unity カタログ接続からシークレットを参照できるようにします。 |
スキーマにシークレットを作成するには、ユーザーが USE CATALOG 権限を持ち、スキーマを所有しているか、スキーマに CREATE SECRET して USE SCHEMA している必要があります。 権限を付与する方法については、「 Unity カタログでの権限の管理」を参照してください。
始める前の準備
Unity カタログ シークレットを使用するには、次の要件を満たす必要があります。
- ワークスペースが Unity Catalog に対して有効にされている必要があります。 概要については、「 Unity カタログとは」を参照してください。
- Unity カタログ対応コンピューティングからシークレットにアクセスする必要があります。 Azure Databricksでは、次のいずれかをお勧めします。
- 環境バージョン 4 以降を使用するサーバーレス ジョブとノートブック。
- Databricks Runtime 17.3 LTS 以降を実行する、標準アクセス モード のクラシック コンピュート。
-
dbutilsを使用してシークレットを取得するには、コンピューティングで Databricks Runtime 17.3 LTS 以降、またはサーバーレス環境バージョン 4 以降を実行する必要があります。
シークレットを作成する
シークレットを作成するには、 USE CATALOG アクセス許可を持ち、スキーマを所有しているか、スキーマに対する CREATE SECRET と USE SCHEMA が必要です。
Unity カタログ シークレットの特権を参照してください。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[カタログ] をクリックしてカタログ エクスプローラーを開きます。
- シークレットを作成するスキーマに移動します。
- [> シークレットの作成] をクリックします。
- 名前と値を入力します。 必要に応じて、 コメント と有効期限を追加 します。 シークレットの有効期限が切れると、カタログ エクスプローラーに警告が表示されます。
- Create をクリックしてください。
REST API
/api/2.1/unity-catalog/secrets エンドポイントを使用して、次の cURL コマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"catalog_name": "main",
"schema_name": "default",
"name": "example_secret",
"value": "your_secret_value",
"comment": "your secret description"
}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets"
シークレットを読み取る
シークレット値を読み取る場合は、シークレットまたは親カタログまたはスキーマに対する READ SECRET が必要です。
Secrets ユーティリティ (dbutils.secrets)
Azure Databricks では、シークレットのマスキングが適用されるため、シークレットを読み取るには dbutils を推奨しています。 このオプションには、Databricks Runtime 17.3 LTS 以降、またはサーバーレス環境バージョン 4 以降が必要です。
# Read a specific secret
my_secret = dbutils.secrets.get(catalog="main", schema="default", key="example_secret")
詳細については、「 シークレット ユーティリティ (dbutils.secrets)」を参照してください。
REST API
Warning
Unity カタログ REST API で取得されたシークレット値はシークレットの編集の対象になりませんが、アクセスは監査ログに記録されます。 Azure Databricksは、代わりにdbutilsすることをお勧めします。
値を返すには、 include_value=true 設定し、応答の effective_value フィールドを読み取ります。
curl -G \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
--data-urlencode "include_value=true" \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets/main.default.example_secret"
シークレットに対するアクセス許可を管理する
シークレットを作成できるユーザーを制御するには、カタログレベルまたはスキーマ レベルで CREATE SECRET を付与します。 アクセスを制御するには、カタログ、スキーマ、または個々のシークレット レベルで READ SECRET、 WRITE SECRET、または REFERENCE SECRET を付与します。 特権の継承が適用されます。 権限の付与と取り消しの詳細については、 Unity カタログでの権限の管理に関するページを参照してください。
シークレットを作成する権限を付与する
カタログ エクスプローラー
カタログ エクスプローラーで、スキーマに移動します。
[Permissions] タブをクリックします。
[許可] をクリックします。
アクセス権を付与するプリンシパルを選択し、[ CREATE SECRET] を選択します。
プリンシパルに
USE SCHEMAがない場合は、それを許可するように求める警告メッセージが表示されます。USE SCHEMAは、スキーマにシークレットを作成するためにも必要です。[Confirm](確認) をクリックします。
SQL
GRANT CREATE SECRET, USE SCHEMA ON SCHEMA main.default TO `user@example.com`;
REST API
/api/2.1/unity-catalog/permissions/schema/{schema_name} エンドポイントを使用して、次の cURL コマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"changes": [{
"principal": "user@example.com",
"add": ["CREATE_SECRET", "READ_SECRET", "REFERENCE_SECRET", "WRITE_SECRET"]
}]
}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/permissions/schema/{schema_name}"
シークレットへのアクセスを許可する
カタログ エクスプローラー
- カタログ エクスプローラーで、シークレットに移動してクリックします。
- [Permissions] タブをクリックします。
- [許可] をクリックします。
- プリンシパルと付与する特権を選択し、[ 確認] をクリックします。
SQL
GRANT READ SECRET ON SECRET main.default.example_secret TO `user@example.com`;
REST API
/api/2.1/unity-catalog/permissions/secret/{catalog.schema.secret} エンドポイントを使用して、次の cURL コマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"changes": [{
"principal": "user@example.com",
"add": ["READ_SECRET", "REFERENCE_SECRET", "WRITE_SECRET"]
}]
}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/permissions/secret/{catalog.schema.secret}"
シークレットの一覧表示、更新、削除
シークレットのリスト
カタログ エクスプローラー
- カタログ エクスプローラーで、スキーマに移動します。
- [ 概要 ] ウィンドウで、[ シークレット ] をクリックして、スキーマ内のすべてのシークレットを表示します。
Secrets ユーティリティ (dbutils.secrets)
# List all secrets in a schema
all_secrets = dbutils.secrets.list(catalog="main", schema="default")
REST API
リスト要求では、 page_size を使用して結果の数を制御します。
curl -G \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
--data-urlencode "catalog_name=main" \
--data-urlencode "schema_name=default" \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets"
シークレットを更新する
シークレット値を更新するには、シークレットに WRITE SECRET が必要です。
カタログ エクスプローラー
- カタログ エクスプローラーでスキーマに移動し、[概要] ウィンドウの [シークレット] をクリックします。
- 更新するには、シークレットをクリックします。
- 右上隅のケバブ メニュー (垂直ドット) をクリックし、[ 編集] を選択します。
- 新しい値または有効期限を入力し、[ 確認] をクリックします。
REST API
更新要求には、 update_mask パラメーターが必要です。
update_maskと要求本文の両方に含まれるフィールドのみが更新されます。
curl -X PATCH \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"value": "new_secret_value"}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets/main.default.example_secret?update_mask=*"
シークレットを削除します
カタログ エクスプローラー
- カタログ エクスプローラーでスキーマに移動し、[概要] ウィンドウの [シークレット] をクリックします。
- 削除するシークレットをクリックします。
- 右上隅にあるケバブ メニュー (垂直ドット) をクリックし、[削除] を選択 します。
- シークレットの完全な名前を入力し、[ 削除] をクリックします。
REST API
curl -X DELETE \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets/main.default.example_secret"
Unity Catalog のシークレットの監査イベント
system.access.audit システム テーブルには、Unity カタログ シークレットに関連するイベントが記録されます。 たとえば、特定の日付のユーザーのすべてのシークレット イベントを表示するには、次のクエリを実行します。
SELECT * FROM system.access.audit
WHERE
user_identity.email = "user@example.com"
AND event_date = "2026-02-20"
AND service_name = "unityCatalog"
AND action_name LIKE "%Secret%";
監査ログの詳細については、「 監査ログ システム テーブルリファレンス」を参照してください。
カスタマー マネージド キーを使用してシークレット値を暗号化する
既定では、Azure Databricksは Databricks マネージド キーを使用してシークレット値を暗号化します。 代わりにカスタマー マネージド キー (CMK) を使用できます。 CMK で暗号化されたマネージド カタログ機能を有効にし、アカウントに CMK 構成をアタッチする場合、Azure Databricksは CMK を使用してシークレット値を暗号化します。 詳細については、「 Unity カタログのカスタマー マネージド キー」を参照してください。
Limitations
Unity カタログ シークレットには、次の制限があります。
- SQL ウェアハウスはありません。 Unity カタログ シークレットは、SQL ウェアハウスではサポートされていません。 Unity カタログ対応コンピューティングまたはサーバーレスでは、Databricks Runtime 17.3 LTS 以降が必要です。
- グローバル検出なし。 Unity カタログシークレットはグローバル検索には表示されません。
- BROWSE 権限はサポートされません。
BROWSEは Unity カタログ シークレットには適用されません。 シークレットを検出できるようにするには、個々のシークレットまたはそのスキーマにREAD SECRETまたはREFERENCE SECRETを付与します。 - init スクリプトはありません。 Unity カタログ シークレットは、グローバル スクリプトまたはクラスター初期化スクリプトでは使用できません。 Azure Databricksでは、可能な限りスクリプトを初期化するのではなく、専用の機能を使用することをお勧めします。
- 情報スキーマがありません。 シークレット用の information schema テーブルはまだ利用できません。 カタログ エクスプローラーまたは REST API を使用して検出します。
-
dbutilsランタイム スコープ。dbutils取得は、Databricks ランタイムベースのノートブックとジョブでサポートされています。 リモート開発やコンパイル済み JAR 実行モードなど、Databricks 以外のランタイム コンテキストはサポートされていません。 - OAuth API スコープ。 Unity カタログ シークレット API には、
unity-catalogOAuth API スコープでのみアクセスできます。secretsAPI スコープは、ワークスペース レベルのAzure Databricks シークレットにのみ使用します。 - クォータ制限 スキーマあたり最大 100 個のシークレットと、メタストアあたり 1,000 個。