Unity Catalogのシークレット
プレビュー
この機能は パブリック プレビュー段階です。
このページでは、Unity Catalogでシークレットを作成、読み取り、管理、およびガバナンスする方法について説明します。Unity Catalogシークレットは、パスワード、トークン、またはAPIキーなどの機密情報を格納するセキュリティ保護可能なオブジェクトです。ノートブックとジョブは、コードで値を公開することなくシークレットを参照できます。
Unity Catalogシークレットは3レベルの名前空間(catalog.schema.secret)を使用し、メタストアにアタッチされているワークスペース全体で利用できます。Unity Catalogの権限がそれらを管理します。これにより、他のデータ資産に使用しているのと同じアクセスモデルと監査をシークレットに適用できます。
Unity Catalog シークレットは、Secret Scope に整理されるワークスペース レベルのDatabricks シークレットとは異なります。Unity Catalog シークレットは、Unity Catalog の権限でシークレットを管理し、3レベルの名前空間で参照したい場合に使用します。
Unity Catalogシークレットの仕組み
Unity Catalog シークレットは、スキーマの下のセキュリティ保護可能なオブジェクトであり、完全修飾名 catalog.schema.secret を持ちます。他の Unity Catalog セキュリティ保護可能なオブジェクトと同様に、シークレットはカタログとスキーマからの特権継承をサポートします。セキュリティ保護可能なオブジェクトと継承に関する詳細については、Unity Catalog セキュリティ保護可能なオブジェクトのリファレンスを参照してください。
Unity Catalog シークレットは、以下の方法で使用できます。
- コードで値を取得します。
READ SECRETアクセスを使用すると、ユーザーはdbutilsまたは Unity Catalog REST API を使用して、ノートブックとジョブからシークレット値を取得できます。その後、それを使用して外部システムとの認証を行うか、データを暗号化および復号化できます。 - Unity Catalog オブジェクトから値を参照します。 Unity Catalog 接続などの Unity Catalog オブジェクトは、インテグレーションがユーザーに値へのアクセスを許可することなくシークレットを使用できるように、シークレットを名前で参照できます。オブジェクトに応じて、シークレットを参照するには
REFERENCE SECRETまたはREAD SECRETのいずれかが必要です。
DatabricksはUnity Catalogシークレット値を暗号化して保存し、出力やLogsでの偶発的な露出を減らすためにシークレットの伏字処理を適用します。シークレットをローテーションするには、UIまたはUnity Catalog REST APIを使用してその値を定期的に更新します。
Unity Catalog シークレットの権限
次の権限はシークレットを管理します。カタログ、スキーマ、または個々のシークレットレベルで付与でき、Unity Catalog の権限継承に従います。
権限 | 説明 |
|---|---|
| ユーザーがスキーマ内にシークレットを作成できるようにします。カタログまたはスキーマレベルで付与されます。 |
| ユーザーがシークレット値を取得できるようにします。 |
| ユーザーがシークレット値を更新できるようにします。 |
| ユーザーは、値へのアクセスなしで、たとえばUnity Catalog接続からシークレットを参照できます。 |
スキーマにシークレットを作成するには、ユーザーはUSE CATALOG権限を持ち、スキーマを所有しているか、スキーマに対するCREATE SECRETとUSE SCHEMAを持っている必要があります。権限を付与する方法については、Unity Catalogでの権限の管理を参照してください。
始める前に
Unity Catalog シークレットを使用するには、次の要件を満たす必要があります:
-
ワークスペースは Unity Catalog に対して有効になっている必要があります。概要については、Unity Catalog とはを参照してください。
-
シークレットには、Unity Catalog対応のコンピュートからアクセスする必要があります。Databricksでは、次のいずれかを推奨しています。
- Serverlessジョブとノートブックは環境バージョン4以降を使用します。
- 標準アクセスモードで Databricks Runtime 17.3 LTS 以降を実行しているクラシック コンピュート。
-
dbutilsでシークレットを取得するには、コンピュートはDatabricks Runtime 17.3 LTS以降、またはServerless環境バージョン4以降を実行する必要があります。
シークレットを作成します
シークレットを作成するには、USE CATALOG権限を持ち、スキーマの所有者であるか、スキーマに対するCREATE SECRET権限とUSE SCHEMA権限を持っている必要があります。Unity Catalog シークレットの権限を参照してください。
- Catalog Explorer
- REST API
- Databricks ワークスペースで、 カタログ をクリックしてカタログ エクスプローラを開きます。
- シークレットを作成するスキーマに移動します。
- 作成 > シークレット をクリックします。
- 名前 と 値 を入力します。オプションで、 コメント と 有効期限 を追加します。シークレットの有効期限が切れると、カタログエクスプローラに警告が表示されます。
- 作成 をクリックします。
/api/2.1/unity-catalog/secretsendpointを使用して、次の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 utility (dbutils.secrets)
- REST API
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)を参照してください。
Unity Catalog REST APIで取得されたシークレット値はシークレットのマスキングの対象ではありませんが、アクセスは引き続き監査Logsに記録されます。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 Catalog での権限の管理を参照してください。
シークレットを作成する権限を付与します
- Catalog Explorer
- SQL
- REST API
-
カタログ エクスプローラーで、スキーマに移動します。
-
「 アクセス許可 」タブをクリックします。
-
付与 をクリックします。
-
アクセスを許可するプリンシパルを選択し、 シークレットを作成 します。
プリンシパルが
USE SCHEMAを持っていない場合、警告が表示され、それを付与するよう求められます。スキーマにシークレットを作成するには、USE SCHEMAも必要です。 -
確認 をクリックします。
GRANT CREATE SECRET, USE SCHEMA ON SCHEMA main.default TO `user@example.com`;
/api/2.1/unity-catalog/permissions/schema/{schema_name}endpointを使用して、次の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}"
シークレットへのアクセス権を付与します
- Catalog Explorer
- SQL
- REST API
- カタログエクスプローラーで、シークレットに移動し、クリックします。
- 「 アクセス許可 」タブをクリックします。
- 付与 をクリックします。
- プリンシパルと付与する権限を選択し、 確認 をクリックします。
GRANT READ SECRET ON SECRET main.default.example_secret TO `user@example.com`;
/api/2.1/unity-catalog/permissions/secret/{catalog.schema.secret}endpointを使用して、次の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}"
シークレットの一覧表示、更新、削除
シークレットを一覧表示
- Catalog Explorer
- Secrets utility (dbutils.secrets)
- REST API
- カタログ エクスプローラーで、スキーマに移動します。
- 「**概要**」ペインで、「**シークレット**」をクリックすると、スキーマ内のすべてのシークレットが表示されます。
# List all secrets in a schema
all_secrets = dbutils.secrets.list(catalog="main", schema="default")
リスト要求は、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が必要です。
- Catalog Explorer
- 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=*"
シークレットを削除する
- Catalog Explorer
- 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 Catalogシークレットに関連するイベントが記録されます。たとえば、特定の日付におけるユーザーのすべてのシークレットイベントを表示するには、次のクエリーを実行します。
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%";
監査Logsの詳細については、監査ログシステムテーブルのリファレンスを参照してください。
顧客管理キーでシークレット値を暗号化する
Databricksはdefaultで、Databricksが管理するキーでシークレット値を暗号化します。代わりに顧客管理キー(CMK)を使用できます。CMKで暗号化されたマネージドカタログ機能を有効にし、CMK構成をアカウントにアタッチすると、DatabricksはCMKを使用してシークレット値を暗号化します。詳細については、Unity Catalogの顧客管理キーを参照してください。
制限事項
Unity Catalogのシークレットには次の制限があります。
- SQLウェアハウスがありません。 Unity Catalog シークレットは SQLウェアハウスではサポートされていません。これらは、Unity Catalog対応コンピュート上で Databricks Runtime 17.3 LTS 以降、またはServerlessを必要とします。
- グローバル検索はありません。 Unity Catalog シークレットはグローバル検索に表示されません。
- BROWSE 権限はサポートされていません。 カタログ上の
BROWSEは Unity Catalog シークレットには適用されません。シークレットを検出可能にするには、個別のシークレットまたはそのスキーマに対してREAD SECRETまたはREFERENCE SECRETを付与します。 - initスクリプトはありません。 Unity Catalog シークレットは、グローバル initスクリプトまたはクラスター initスクリプトでは使用できません。Databricks は、可能な場合は initスクリプトの代わりに専用機能を使用することをお勧めします。
- 情報スキーマがありません。 シークレットの情報スキーマテーブルはまだ利用できません。検出には、カタログエクスプローラまたはREST APIを使用します。
dbutilsランタイム スコープ。 Databricks Runtime を基盤とするノートブックとジョブでは、dbutilsの取得がサポートされています。リモート開発やコンパイル済み JAR ラン モードなど、Databricks Runtime 以外のコンテキストはサポートされていません。- OAuth APIスコープ。 Unity CatalogシークレットAPIは、
unity-catalogOAuth APIスコープでのみアクセス可能です。Databricksワークスペースレベルのシークレットにのみ、secretsAPIスコープを使用してください。 - 「**クォータ制限**」。 スキーマごとに最大 100 個、メタストアごとに 1,000 個のシークレット。