Unity Catalog の顧客管理キー
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。
この機能には、エンタープライズ層が必要です。
Unity Catalogの顧客管理キー (CMK) を使用すると、 Databricksによって管理されるデータを独自の暗号化キーで保護できます。 データの機密性やコンプライアンス要件に基づいて、カタログごとに個別のキーを使用して、カタログ レベルで暗号化を構成できます。
マネージド サービスおよびワークスペース ストレージの CMK については、 「マネージド サービスの顧客管理キー」を参照してください。
tc
Unity Catalog の CMK とは何ですか?
Unity Catalogの CMK を使用すると、Google クラウド キー管理サービス ( KMS ) からの独自の暗号化キーを使用して、マルチキー保護を備えた確実なストレージによってバックアップされたUnity Catalogカタログ内のデータを保護できます。
CMK を使用すると、Databricks はデフォルトでマネージド キーを使用して保存中のすべてのデータを暗号化します。きめ細かな制御のために、CMK では特定のカタログに対して個別の顧客管理キーを設定できます。データ アクセスを拒否するには、Google KMSのキーを取り消します。
Unity CatalogにおけるCMKの利点
- きめ細かな暗号化制御: カタログ レベルで暗号化を管理し、データの機密性やコンプライアンス要件に基づいて、異なるカタログで異なる暗号化キーを使用できるようにします。
- マルチキー保護: CMK は、ストレージ層でのアクセスからデータを保護します。データにアクセスできるのは、きめ細かな Unity Catalog ポリシーに基づいて承認されたワークスペースのみです。
- コンプライアンスと監査: 顧客が管理する暗号化キーの規制要件を満たし、キーのアクセスと使用の監査証跡を維持します。
- キーの取り消し: Google KMSの CMK へのアクセスを取り消して、データの完全な所有権を保持します。
- 一元的なキー管理: 既存のGCPセキュリティ プラクティスに準拠しながら、すべての暗号化キーを Google クラウドKMSを通じて管理します。
Unity CatalogのCMKの仕組み
GCP上のUnity Catalogの CMK は、Google クラウドKMSキー、 Databricks - マネージドサービス アカウント、およびカタログレベルの暗号化設定を使用して、顧客制御の暗号化を強制します。 GCP 上の Unity Catalog の CMK の中心となるコンポーネントは次のとおりです。
-
Google クラウドKMSキー: Google クラウド キー管理サービスで暗号化キーを作成および管理します。 これらのキーは、Unity Catalog カタログのルート暗号化キーとして機能します。
-
CMK 構成: Databricksアカウント コンソールで CMK 構成を作成し、 Databricksで Google KMSキーを登録します。 CMK 構成は、カタログに CMK を適用する前に作成する必要があるアカウント レベルのオブジェクトです。CMK 構成を作成すると、 Databricks Databricks Google クラウド プロジェクトのサービス アカウントを自動的にプロビジョニングし、 KMSキーへのアクセスを許可します。
-
サービス アカウント: Databricks 、 KMSキーへのアクセスを許可されたサービス アカウントをDatabricks Google クラウド アカウントに作成します。 このサービス アカウントの形式は
db-cmk-{id}@databricks-<REGION_SUFFIX>.iam.gserviceaccount.comです。Databricks は、暗号化と復号化に必要な IAM 権限をサービス アカウントに自動的に付与します。- Databricks は、セキュリティの分離を維持し、サービス アカウントが不要なアクセス許可を継承しないようにするために、各 CMK インスタンスに対して一意の最小権限のサービス アカウントを生成し、
-
カタログ レベルの暗号化: Catalog Explorer またはUnity Catalog APIを使用して、個々のカタログで直接暗号化を構成します。 CMK 設定を使用してカタログを作成または更新すると、Databricks は顧客管理キーを使用してそのカタログに書き込まれたすべてのデータを暗号化します。これは、デフォルトのストレージによってバックアップされるカタログにのみ適用されます。
-
動的適用: CMK で保護されたカタログにデータが書き込まれると、Databricks は KMS キーを使用してデータを暗号化します。データが読み取られると、 Databricks Google KMSに復号化を要求します。 キーへの Databricks アクセスを取り消すと、復号化が失敗し、データにアクセスできなくなります。
制限事項
- この機能は、Databricks アカウント コンソールまたは REST API を使用してのみ構成できます。Terraform サポートは利用できません。
- この機能は、デフォルトのストレージによってバックアップされるカタログにのみ適用されます。外部保存場所を持つカタログには適用されません。
前提条件
GCP 上の Unity Catalog 用に CMK を構成する前に、次のものがあることを確認してください。
-
アカウント管理者のアクセス許可: アカウント コンソールで CMK 構成を作成するには、 Databricksアカウント管理者である必要があります。
-
GCP IAM権限: 次の Google Cloud IAM権限が必要です。
cloudkms.cryptoKeys.setIamPolicy- Databricks サービス アカウントに KMS キーへのアクセスを許可する必要がありますcloudkms.cryptoKeys.getIamPolicy- KMS キーのサービス アカウント権限を確認するために必要です
-
Google クラウドKMSキー: Google クラウド アカウントに既存のクラウドKMSキーが必要です。 必要に応じて、 Google CloudKMS KMSスタート ガイドに従ってキーを作成します。 このキーは、Databricks ワークスペースをサポートするリージョンでアクティブな状態になっている必要があります。KMS キーのリソース ID をコピーします。形式は次の通りです:
projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}。 -
Unity Catalog権限: CMK を使用してカタログを作成または更新するには、 Unity Catalogで
CREATE CATALOGおよびUSE CATALOG権限が必要です。
Unity Catalog用のCMKを構成する
次のステップに従って、 GCP上のUnity Catalogカタログのカスタマー管理キーを構成します。
ステップ 1: アカウントコンソールで CMK 構成を作成する
必要な権限: アカウント管理者
CMK 構成を作成して、 Databricksで Google クラウドKMSキーを登録し、 Databricksキーへのアクセスに使用するサービス アカウントをプロビジョニングします。
-
Databricks アカウント コンソールで、 [セキュリティ] > [暗号化キー] に移動します。
-
[暗号化キーの追加] をクリックします。
-
暗号化キーの設定を構成します。
- 名前 :
finance-catalog-cmkやpii-data-cmkなど、CMK 構成のわかりやすい名前を入力します。 - クラウド プロバイダー : [Google クラウド プラットフォーム] を選択します。
- 使用例 : マネージドサービス または マネージドサービスとワークスペースストレージの 両方を選択します。
- キー リソース ID : KMSキー リソース ID を
projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}の形式で入力します。
[追加] をクリックすると、 Databricks Databricks Google クラウド アカウントに新しいサービス アカウントを作成し、 KMSキーに対する
Cloud KMS CryptoKey Encrypter/Decrypter権限を自動的に付与します。 - 名前 :
-
[追加] をクリックして CMK 構成を作成します。
-
アカウント コンソールから CMK 構成 ID をコピーします。カタログを作成または更新するときにこの ID を使用します。
ステップ 2: サービス アカウントの承認を確認する
CMK 構成を作成した後、 Databricksサービス アカウントにKMSキーに対する正しいアクセス許可があることを確認します。
-
GetCustomerManagedKey API を呼び出してサービス アカウント ID を取得します。
Bashcurl -X GET \
-H "Authorization: Bearer <DATABRICKS_TOKEN>" \
https://accounts.cloud.databricks.com/api/2.0/accounts/<ACCOUNT_ID>/customer-managed-keys/<CUSTOMER_MANAGED_KEY_ID>次の値を置き換えます。
<DATABRICKS_TOKEN>: Databricksアカウント管理者の個人アクセス<ACCOUNT_ID>: Databricksアカウント ID<CUSTOMER_MANAGED_KEY_ID>: ステップ 1 の CMK 構成 ID
応答には、
db-cmk-{id}@databricks-<REGION_SUFFIX>.iam.gserviceaccount.comの形式でサービス アカウントが含まれます。サービス アカウント文字列は動的に生成されるため、検証のために API レスポンスから正確にコピーする必要があります。 -
Google クラウド コンソールで、クラウドKMSキーに移動します。
-
「 アクセス許可 」タブをクリックします。
-
ステップ 1 のサービス アカウントが
Cloud KMS CryptoKey Encrypter/Decrypterロールとともにリストされていることを確認します。
ステップ 3: CMK を使用して新しいカタログを作成する
必要な権限: Unity Catalog内のCREATE CATALOG
CMK 保護を備えた新しいカタログを作成するには、Unity Catalog API を使用します。
curl -X POST \
-H "Authorization: Bearer <api_token>" \
-H "Content-Type: application/json" \
https://<workspace_url>/api/2.1/unity-catalog/catalogs \
-d '{
"name": "<catalog_name>",
"comment": "Catalog with customer-managed encryption",
"storage_mode": "DEFAULT_STORAGE",
"encryption_settings": {
"customer_managed_key_id": "<cmk-id>"
}
}'
次の値を置き換えます。
<workspace_url>: Databricks ワークスペースの URL (例:https://dbc-1234567-a8b9.cloud.databricks.com)<api_token>: Databricks個人アクセストークン<catalog_name>: 新しいカタログの名前 (例:finance_dataまたはcustomer_pii)<cmk-id>: ステップ 1 の CMK 構成 ID
ステップ 4: CMK を使用して既存のカタログを更新する
必要な権限: カタログまたはカタログの所有権に対するMANAGE
デフォルトのストレージを使用する既存のカタログで CMK 保護を追加または変更するには:
- カタログ エクスプローラーで、カタログ名をクリックします。
- [詳細] タブをクリックします。
- [詳細設定] で、 [暗号化設定] をクリックします。
- ダイアログで、顧客管理キーを選択します。
- 保存 をクリックします。
これらのステップを繰り返すことで、いつでもカタログに関連付けられたキーを変更できます。 カタログで CMK を有効にした後は、無効にすることはできません。
既存のカタログに CMK を追加すると、Databricks は顧客管理キーを使用してカタログに書き込まれた新しいデータのみを暗号化します。Databricks が管理するキーは既存のデータを引き続き暗号化します。すべてのデータを顧客管理キーで暗号化するには、既存のデータを書き換える必要があります。
CMK構成を確認する
カタログが CMK で構成されていることを確認するには、 Unity Catalog API使用してカタログの詳細を取得します。
curl -X GET \
-H "Authorization: Bearer <api_token>" \
-H "Content-Type: application/json" \
"https://<workspace_url>/api/2.1/unity-catalog/catalogs/<catalog_name>"
応答には、CMK で構成されたカタログのencryption_settingsフィールドが含まれます。
{
"name": "<catalog_name>",
"storage_mode": "DEFAULT_STORAGE",
"encryption_settings": {
"customer_managed_key_id": "<cmk-id>"
}
}
暗号化されたデータへのアクセスを取り消す
カスタマー管理のキーで暗号化されたデータへのDatabricksアクセスを拒否するには、Google KMSでキーを無効にします。
- Google クラウド コンソールで、クラウドKMSキーに移動します。
- キー バージョンを無効にします。
キーを無効にすると、Databricks はこの CMK 構成を使用してカタログ内のデータを復号化できなくなります。これらのカタログからデータを読み取ろうとすると、復号化エラーが発生して失敗します。
キーを無効にしてからデータ アクセスが拒否されるまでの間に遅延が発生する可能性があります。
アクセスを復元するには、Google KMSでキー バージョンを再度有効にします。