暗号化のための顧客管理キーの構成
アカウント 管理者は、 Databricks アカウント コンソールを使用して、暗号化用の顧客管理キーを構成できます。 また、アカウント Key Configurations APIを使用して、顧客管理のキーを設定することもできます。
顧客管理キーの追加には、次の 2 つの Databricks ユースケースがあります。
-
Databricksコントロールプレーン内のマネージドサービスデータ (ノートブック、シークレット、Databricks SQLクエリデータ)。
-
ワークスペースストレージ (ワークスペース ストレージ バケットと、クラシック コンピュート平面内のコンピュート リソースの EBS ボリューム)。
EBS ボリュームの顧客管理キーは、サーバレス コンピュート リソース には適用されません 。 サーバレス コンピュート リソースのディスクは有効期間が短く、サーバレス ワークロードのライフサイクルに関連付けられています。 コンピュート リソースを停止またはスケールダウンすると、VM とそのストレージは破棄されます。
顧客管理キーのユースケースを比較するには、「 顧客管理キーのユースケースの比較」を参照してください。
顧客管理キーをサポートするリージョンの一覧については、「 Databricks クラウドとリージョン」を参照してください。 この機能には 、Enterprise 価格レベルが必要です。
暗号化キーの設定とは何ですか?
顧客管理キーは、暗号化キー構成で管理されます。 暗号化キーの設定は、クラウドのキーを参照するアカウントレベルのオブジェクトです。
アカウント admins は、アカウントコンソールで暗号化キーの設定を作成し、暗号化キーの設定を 1 つ以上のワークスペースにアタッチできます。
Databricks キー設定オブジェクトは、2 つの異なる暗号化ユースケース (マネージドサービスとワークスペースストレージ) 間で共有できます。
ワークスペースの作成時に Databricks ワークスペースに暗号化キー構成を追加することも、暗号化キー構成を使用して既存のワークスペースを更新することもできます。
ステップ 1: AWS KMS でキーを作成または選択する
ワークスペースストレージとマネージドサービスのユースケース間で同じ AWS KMS キーを使用できます。
- 「 対称 CMK の作成 」または 「キーの表示」の手順に従って、AWS KMS で対称キーを作成または選択します。
KMS キーは、ワークスペースと同じ AWS リージョンにある必要があります。
-
これらの値をコピーします。これは、後の手順で必要になります。
- キー ARN : コンソールまたは API (JSON レスポンスの
Arn
フィールド) から ARN を取得します。 - キーエイリアス : エイリアスは、AWS KMS の CMK の表示名を指定します。
- キー ARN : コンソールまたは API (JSON レスポンスの
-
[ キー ポリシー ] タブで、ポリシー ビューに切り替えます。 キーポリシーを編集して、以下の JSON を
"Statement"
セクション に追加します 。既存のキー ポリシーは削除しないでください。以下の暗号化の使用例のタブを選択し、[ コピー ] をクリックします。
このポリシーでは、AWS アカウント ID
414351767826
を使用します。 を使用している場合は、 には Databricks on AWSGovCloudAWSアカウントID044793339203
AWSGovCloud170661010020
AWSGovCloud、DoDには を使用します 。
- Both managed services and workspace storage
- Managed services
- Workspace storage
To allow Databricks to encrypt cluster EBS volumes, replace the <cross-account-iam-role-arn>
in the policy with the ARN for the cross-cloud IAM role that you created to allow Databricks to access your account. This is the same Role ARN that you use to register a Databricks credential configuration for a Databricks workspace.
{
"Sid": "Allow Databricks to use KMS key for DBFS",
"Effect": "Allow",
"Principal":{
"AWS":"arn:aws:iam::414351767826:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalTag/DatabricksAccountId": ["<databricks-account-id>(s)"]
}
}
},
{
"Sid": "Allow Databricks to use KMS key for managed services in the control plane",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::414351767826:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalTag/DatabricksAccountId": ["<databricks-account-id>(s)"]
}
}
},
{
"Sid": "Allow Databricks to use KMS key for EBS",
"Effect": "Allow",
"Principal": {
"AWS": "<cross-account-iam-role-arn>"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*",
"kms:CreateGrant",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"kms:ViaService": "ec2.*.amazonaws.com"
}
}
}
{
"Sid": "Allow Databricks to use KMS key for managed services in the control plane",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::414351767826:root"
},
"Action": ["kms:Encrypt", "kms:Decrypt"],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalTag/DatabricksAccountId": ["<databricks-account-id>(s)"]
}
}
}
To allow Databricks to encrypt cluster EBS volumes, replace the <cross-account-iam-role-arn>
in the policy with the ARN for the cross-cloud IAM role that you created to allow Databricks to access your account. This is the same Role ARN that you use to register a Databricks credential configuration for a Databricks workspace.
{
"Sid": "Allow Databricks to use KMS key for DBFS",
"Effect": "Allow",
"Principal":{
"AWS":"arn:aws:iam::414351767826:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalTag/DatabricksAccountId": ["<databricks-account-id>(s)"]
}
}
},
{
"Sid": "Allow Databricks to use KMS key for EBS",
"Effect": "Allow",
"Principal": {
"AWS": "<cross-account-iam-role-arn>"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*",
"kms:CreateGrant",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"kms:ViaService": "ec2.*.amazonaws.com"
}
}
}
Databricks アカウント ID を取得するには、「 アカウント ID を見つける」に従ってください。
ステップ 2: アクセス ポリシーを cross-account IAMロールに追加する (オプション)
キーが、ワークスペースのデプロイに使用したクロスアカウントIAM ロール KMSとは異なるAWS アカウントにある場合は、そのクロスアカウント ロールにポリシーを追加する必要があります。IAMこのポリシーにより、Databricks はキーにアクセスできます。 キーが、ワークスペースのデプロイに使用したクロス アカウント KMSロールと同じ アカウントにある場合は、この手順を実行する必要はありません。AWSIAM
-
管理者権限を持つユーザーとして AWS マネジメントコンソール にログインし、 IAM コンソールに移動します。
-
左側のナビゲーションペインで、[ ロール] をクリックします。
-
IAMロールのリストで、 用に作成した クロスアカウント ロールDatabricks をクリックします。
-
インラインポリシーを追加します。
-
[アクセス許可 ] タブで、[ インライン ポリシーの追加 ] をクリックします。
-
ポリシーエディターで、「 JSON 」タブをクリックします。
-
以下のアクセスポリシーをコピーします
JSON{
"Sid": "AllowUseOfCMKInAccount <AccountIdOfCrossAccountIAMRole>",
"Effect": "Allow",
"Action": ["kms:Decrypt", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey"],
"Resource": "arn:aws:kms:<region>:<AccountIdOfKMSKey>:key/<KMSKeyId>",
"Condition": {
"ForAnyValue:StringLike": {
"kms:ViaService": "ec2.*.amazonaws.com"
}
}
} -
「 ポリシーの確認 」をクリックします。
-
「 名前 」フィールドにポリシー名を入力します。
-
「 ポリシーの作成 」をクリックします。
-
ステップ 3: 新しいキー設定を作成する
Databricks アカウント コンソールを使用して、Databricks 暗号化キー構成オブジェクトを作成します。 暗号化キー構成は、複数のワークスペースで使用できます。
-
アカウント管理者として、アカウントコンソールにログインします。
-
サイドバーで、 [クラウドリソース ] をクリックします。
-
[暗号化キーの設定 ] タブをクリックします。
-
[ 暗号化キーの追加 ] をクリックします。
-
この暗号化キーの使用例を選択します。
- マネージドサービスとワークスペースストレージの両方
- マネージドサービス
- ワークスペースストレージ
-
[AWS key ARN ] フィールドに、上記でコピーしたキー ARN を入力します。
-
[AWS キーエイリアス ] フィールドに、上記でコピーしたキーエイリアスを入力します。
-
[ 追加 ] をクリックします。
-
[構成] で、 ID をコピーします。
手順 4: キー設定をワークスペースに追加する
暗号化キー設定を使用して新しいワークスペースを作成するには、「カスタムAWS設定を使用してワークスペースを作成する」または「アカウント APIを使用してワークスペースを作成する」の手順に従います。
アカウントコンソールを使用して、既存のワークスペースに暗号化キーを追加することはできません。 Databricks CLI を使用して既存のワークスペースに暗号化キーを追加するには、次の手順を実行します。
アカウント APIを使用することもできます。
-
Databricksワークスペースで実行中のすべてのコンピュート リソースを終了します。
-
キー構成でワークスペースを更新します。
マネージドサービスのキーを追加するには、上記でコピーしたキーIDに
managed_services_customer_managed_key_id
を設定します。ワークスペース ストレージのキーを追加するには、
storage-customer-managed-key-id
を上記でコピーしたキー ID に設定します。<workspace-id>
を Databricks ワークスペース ID に置き換えます。例えば:
Bashdatabricks account workspaces update <workspace-id> --json '{
"managed_services_customer_managed_key_id": "<databricks-encryption-key-id>",
"storage-customer-managed-key-id": "<databricks-encryption-key-id>",
}' -
ワークスペース ストレージのキーを追加する場合は、少なくとも 20 分待ってコンピュートを開始するか、 DBFS APIを使用します。
-
前の手順で終了したコンピュートを再起動します。
既存のキーをローテーションする
既存のキーをローテーション(更新)できるのは、マネージドサービスの顧客管理キーのみです。 既存のキーをストレージの顧客管理キーにローテーションすることはできません。 ただし、AWS は自動 CMK マスターキーローテーションを提供しており、キー ARN を変更せずに基礎となるキーをローテーションします。 CMK マスターキーの自動ローテーションは、ストレージ用の Databricks 顧客管理キーと互換性があります。 詳細については、「AWS KMS キーのローテーション」を参照してください。
マネージドサービスの既存のキーをローテーションするには、「 ステップ 4: キー設定をワークスペースに追加する」の手順に従います。 古い KMS キーを Databricks で 24 時間使用できるようにしておく必要があります。