顧客管理キーの暗号化を構成する

アカウント管理者は、Databricks アカウント コンソールを使用して、顧客管理キーの暗号化を構成できます。 アカウント キー構成 APIを使用して顧客管理キーを構成することもできます。

顧客管理キーを追加するには、Databricks の使用例が 2 つあります。

  • ワークスペース ストレージ (ワークスペースのルート S3 バケットと、クラシック コンピュート プレーン内のコンピュート リソースの EBS ボリューム)。

注:

EBS ボリュームの顧客管理キーは、サーバレス コンピュート リソースには適用されませ。 サーバレス コンピュート リソースのディスクの寿命は短く、サーバレス ワークロードのライフサイクルに関連付けられています。 コンピュート リソースが停止またはスケールダウンされると、VM とそのストレージは破壊されます。

カスタマー マネージド キーの使用例を比較するには、 「カスタマー マネージド キーの使用例の比較」を参照してください。

顧客管理キーをサポートするリージョンのリストについては、 「Databricks のクラウドとリージョン」を参照してください。 この機能には、 Enterprise 価格レベルが必要です。

暗号化キーの構成とは

顧客管理キーは、暗号化キー構成を使用して管理されます。 暗号化キー構成は、クラウドのキーを参照するアカウント レベルのオブジェクトです。

アカウント管理者はアカウント コンソールで暗号化キー構成を作成し、暗号化キー構成を 1 つ以上のワークスペースに添付できます。

Databricks キー構成オブジェクトは、2 つの異なる暗号化ユース ケース (マネージド サービスとワークスペース ストレージ) 間で共有できます。

ワークスペースの作成時に暗号化キー構成を Databricks ワークスペースに追加したり、暗号化キー構成を使用して既存のワークスペースを更新したりできます。

ステップ 1: AWS KMS でキーを作成または選択する

ワークスペースストレージとマネージドサービスのユースケース間で同じ AWS KMS キーを使用できます。

  1. 対称 CMKの作成」または「キーの表示」の手順に従って、AWS KMS で対称キーを作成または選択します。

KMS キーは、ワークスペースと同じ AWS リージョンに存在する必要があります。

  1. 後のステップで必要になるこれらの値をコピーします。

    • キー ARN : コンソールまたは API (JSON 応答のArnフィールド) から ARN を取得します。

    • キーのエイリアス: エイリアスは、AWS KMS の CMK の表示名を指定します。

  2. [キー ポリシー]タブで、ポリシー ビューに切り替えます。 キー ポリシーを編集して以下のテキストを追加し、Databricks がキーを使用して暗号化および復号化操作を実行できるようにします。

    以下の暗号化ユースケースのタブを選択し、 「コピー」をクリックします。

    JSON を"Statement"セクションのキー ポリシーに追加します。 既存のキー ポリシーは削除しないでください。

    ポリシーでは、Databricks AWS アカウント ID 414351767826を使用します。 Databricks on AWS GovCloudで Databricksを使用している場合は、 Databricksアカウント ID 044793339203 を使用してください。

    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 DBFS (Grants)",
        "Effect": "Allow",
        "Principal":{
          "AWS":"arn:aws:iam::414351767826:root"
        },
        "Action": [
          "kms:CreateGrant",
          "kms:ListGrants",
          "kms:RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
          "Bool": {
            "kms:GrantIsForAWSResource": "true"
          },
          "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 DBFS (Grants)",
        "Effect": "Allow",
        "Principal":{
          "AWS":"arn:aws:iam::414351767826:root"
        },
        "Action": [
          "kms:CreateGrant",
          "kms:ListGrants",
          "kms:RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
          "Bool": {
            "kms:GrantIsForAWSResource": "true"
          },
          "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: クロスアカウント IAM ロールにアクセス ポリシーを追加する (オプション)

KMS キーが、ワークスペースのデプロイに使用されたクロスアカウント IAM ロールとは異なる AWS アカウントにある場合は、そのクロスアカウント IAM ロールにポリシーを追加する必要があります。 このポリシーにより、Databricks がキーにアクセスできるようになります。 KMS キーが、ワークスペースのデプロイに使用されたクロスアカウント IAMroll と同じ AWS アカウントにある場合は、このステップを実行する必要はありません。

  1. 管理者権限を持つユーザーとして AWS マネジメントコンソールにログインし、 IAMコンソールに移動します。

  2. 左側のナビゲーション ウィンドウで、[ ロール] をクリックします。

  3. ロールのリストで、Databricks 用に作成したクロスアカウント IAM ロールをクリックします。

  4. インラインポリシーを追加します。

    1. [アクセス許可]タブで、 [インライン ポリシーの追加]をクリックします。

      インラインポリシー
    2. ポリシーエディターで、「JSON」タブをクリックします。

      JSONエディター
    3. 以下のアクセスポリシーをコピーします

      {
        "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"
          }
        }
      }
      
    4. ポリシーの確認」をクリックします。

    5. 名前」フィールドにポリシー名を入力します。

    6. ポリシーの作成」をクリックします。

ステップ 3: 新しいキー構成を作成する

Databricks アカウント コンソールを使用して、Databricks 暗号化キー構成オブジェクトを作成します。 複数のワークスペースにわたって暗号化キー構成を使用できます。

  1. アカウント管理者として、アカウントコンソールにログインします。

  2. サイドバーで、 「クラウド リソース」をクリックします。

  3. 「暗号化キー構成」タブをクリックします。

  4. 暗号化キーの追加」をクリックします。

  5. この暗号化キーのユースケースを選択します。

    • マネージドサービスとワークスペースストレージの両方

    • マネージドサービス

    • ワークスペースストレージ

  6. [AWS キー ARN]フィールドに、上でコピーしたキー ARN を入力します。

  7. [AWS キー エイリアス]フィールドに、上でコピーしたキー エイリアスを入力します。

  8. 追加」をクリックします。

  9. 名前をコピーします。

ステップ 4: キー構成をワークスペースに追加する

作成した暗号化キー構成をワークスペースに追加します。 アカウント コンソールを使用して暗号化キーをワークスペースに追加することはできません。 このセクションでは、 Databricks CLIを使用して暗号化キーをワークスペースに追加します。 アカウント APIを使用することもできます。

暗号化キー構成を使用して新しいワークスペースを作成するには、「アカウント API を使用してワークスペースを作成する」の手順に従ってください。

  1. ワークスペースで実行中のコンピュートをすべて終了します。

  2. キー構成でワークスペースを更新します。

    マネージドサービスのキーを追加するには、 managed_services_customer_managed_key_idを上でコピーしたキー名に設定します。

    ワークスペース ストレージのキーを追加するには、 storage-customer-managed-key-idを上でコピーしたキー名に設定します。

    <workspace-id>を Databricks ワークスペース ID に置き換えます。

    例:

    databricks account workspaces update <workspace-id> --json '{
      "managed_services_customer_managed_key_id": "<databricks-key-name>",
      "storage-customer-managed-key-id": "<databricks-key-name>",
    }'
    
  3. ワークスペースストレージのキーを追加する場合は、コンピュートを開始するか DBFS API を使用するまで少なくとも 20 分待ってください。

  4. 前のステップで終了したコンピュートを再開します。

既存のキーをローテーションする

マネージドサービスの顧客管理キーについては、既存のキーのみローテーション (更新) できます。 顧客管理キーの既存のキーをストレージ用にローテーションすることはできません。 ただし、AWS は、キー ARN を変更せずに基になるキーをローテーションする自動 CMK マスターキー ローテーションを提供します。 CMK マスター キーの自動ローテーションは、Databricks カスタマーが管理するストレージ用のキーと互換性があります。 詳細については、 「AWS KMS キーのローテーション」を参照してください。

マネージドサービスの既存のキーをローテーションするには、 「ステップ 4: キー構成をワークスペースに追加する」の指示に従います。 古い KMS キーを Databricks で利用できるように 24 時間維持する必要があります。