暗号化のための顧客管理キーの構成
このページでは、マネージドサービスおよびワークスペースストレージの暗号化用に顧客管理キーを構成する方法について説明します。
暗号化キーの設定とは何ですか?
顧客管理キーは、暗号化キー構成で管理されます。暗号化キーの構成は、クラウドのキーを参照するアカウント レベルのオブジェクトです。アカウント管理者は、アカウント コンソールで暗号化キー構成を作成します。 暗号化キー構成は、1 つ以上のワークスペースに添付できます。
アカウント 管理者は、 Databricks アカウント コンソールを使用して、暗号化用の顧客管理キーを構成できます。 また、アカウント Key Configurations APIを使用して、顧客管理のキーを設定することもできます。
顧客管理キーの追加には、次の 2 つの Databricks ユースケースがあります。
- 
Databricksコントロール プレーン内のマネージド サービス データ (ノートブック、シークレット、 Databricks SQLクエリ データ、およびサーバーレス ワークスペースへの一応の保存)。 
- 
ワークスペース ストレージ データには、クラシック コンピュート プレーン内の コンピュート リソースの DBFSルートと EBS ボリュームが含まれます。 サーバレス ワークスペースの デフォルトストレージ には適用されません。 
サーバレス ワークスペースでは、マネージドサービスキーを設定するだけで済みます。これは、サーバレス ワークスペースのデフォルトストレージがマネージドサービスであるためです。
また、EBS ボリュームのキーは、サーバレス コンピュート リソースには適用 されません 。 サーバレス コンピュート リソースのディスクは存続期間が短く、サーバレス ワークロードのライフサイクルに関連付けられます。 コンピュート リソースが停止またはスケールダウンされると、VM とそのストレージが破棄されます。
顧客管理キーのユースケースを比較するには、「 顧客管理キーのユースケースの比較」を参照してください。
Databricks キー設定オブジェクトは、2 つの異なる暗号化ユースケース (マネージドサービスとワークスペースストレージ) 間で共有できます。
顧客管理キーをサポートするリージョンの一覧については、「 Databricks クラウドとリージョン」を参照してください。 この機能には Enterprise レベルが必要です。
ステップ 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 AWSGovCloud170661010020AWSGovCloud、DoDには を使用します 。
- Both managed services and workspace storage
- Managed services
- Workspace storage
DatabricksがクラスターEBSボリュームを暗号化できるように、ポリシーの<cross-account-iam-role-arn>を、Databricksがアカウントにアクセスできるように作成したクロスクラウドIAMロールのARNに置き換えてください。これは、Databricksワークスペース用にDatabricks認証情報を登録するために使用するのと同じロールのARNです。
{
  "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)"]
    }
  }
}
DatabricksがクラスターEBSボリュームを暗号化できるように、ポリシーの<cross-account-iam-role-arn>を、Databricksがアカウントにアクセスできるように作成したクロスクラウドIAMロールのARNに置き換えてください。これは、Databricksワークスペース用にDatabricks認証情報を登録するために使用するのと同じロールのARNです。
{
  "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"
    }
  }
}
To retrieve your Databricks account ID, follow Locate your account 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またはUpdate ワークスペース構成 API を使用してください。
Databricks CLIを使用するには、次のステップを完了します。
ワークスペース ストレージの顧客管理キーの更新が有効になるまでに最大 24 時間かかる場合があります。
- 
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>",
 }'
- 
前の手順で終了したコンピュートを再起動します。 
既存のキーをローテーションする
既存のキーをローテーション(更新)できるのは、マネージドサービスの顧客管理キーのみです。 既存のキーをストレージの顧客管理キーにローテーションすることはできません。 ただし、AWS は自動 CMK マスターキーローテーションを提供しており、キー ARN を変更せずに基礎となるキーをローテーションします。 CMK マスターキーの自動ローテーションは、ストレージ用の Databricks 顧客管理キーと互換性があります。 詳細については、「AWS KMS キーのローテーション」を参照してください。
マネージドサービスの既存のキーをローテーションするには、「 ステップ 4: キー設定をワークスペースに追加する」の手順に従います。 古い KMS キーを Databricks で 24 時間使用できるようにしておく必要があります。