Claude Platform Docs
管理暗号化キー(CMEK)

CMEK用のAWS KMSを設定する

AWS KMSを使用して、組織の暗号化キーを提供します。

Claude Code

Claude Codeにこの機能を設定させる

/claude-api AWS KMSで顧客管理暗号化キーを設定するのを手伝ってください

このガイドでは、AWS KMSキーをAnthropic組織の顧客管理暗号化キー(CMEK)として設定する手順を説明します。

前提条件

  • KMSキーを作成しキーポリシーを設定する権限(kms:CreateKeyおよびkms:PutKeyPolicy)を持つAWSアカウント。
  • 組織のAnthropic Admin APIキー。
  • インストールおよび認証済みのAWS CLI。

Anthropic用のAmazon Resource Name(ARN)

Anthropicに暗号化キーを使用させるには、AnthropicのIAMロールにデータの暗号化に使用できるKMSキーを付与する必要があります。Anthropic CMEK用のARNは次のとおりです。

arn:aws:iam::915198916910:role/anthropic-cmek-client-us

暗号化キーのセットアップ

  1. クロスアカウントキーポリシーでKMSキーを作成する

    キーポリシーはAnthropicのIAMロールにクロスアカウントアクセスを付与します。3つのステートメントが必要です。

    1. アカウントルート管理者: 標準的なKMSパターン。アカウントは完全な管理制御を保持します。
    2. Anthropicの暗号化と復号: kms:Encryptおよびkms:Decryptアクション。Anthropicはこれを使用して、ワークスペースデータを保護するデータキーを暗号化および復号します(エンベロープ暗号化)。
    3. Anthropicのdescribe: Anthropicが起動時に実行するメタデータの読み取り。DescribeKeyにはEncryptionContextパラメータがないため、このアクションにEncryptionContext条件を設定すると常に拒否されるため、別途付与されます。

    AWSアカウントIDを確認するには、aws sts get-caller-identity --query Account --output textを実行します。

    ポリシー内で、<AWS_ACCOUNT_ID>をAWSアカウントIDに、<ORGANIZATION_UUID>を組織IDに置き換えます。kms:EncryptionContext:anthropic:org_uuidのStringEquals条件はキーをAnthropic組織にバインドし、検証ではこれがないキーを拒否します。1つのキーを複数のAnthropic組織で共有するには、条件値に各組織IDをリストします。

    ポリシーをkey-policy.jsonとして保存します。代わりにAWS Consoleでキーを作成するには、このステップの後半で説明するように、そこにポリシーを貼り付けます。

    key-policy.json
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AccountRootAdmin",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>:root"
          },
          "Action": "kms:*",
          "Resource": "*"
        },
        {
          "Sid": "AllowAnthropicCMEKCrypto",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
          },
          "Action": ["kms:Encrypt", "kms:Decrypt"],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "kms:EncryptionContext:anthropic:org_uuid": ["<ORGANIZATION_UUID>"]
            }
          }
        },
        {
          "Sid": "AllowAnthropicCMEKDescribe",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
          },
          "Action": "kms:DescribeKey",
          "Resource": "*"
        }
      ]
    }
    aws kms create-key \
      --region <REGION> \
      --description "Anthropic CMEK" \
      --key-usage ENCRYPT_DECRYPT \
      --policy file://key-policy.json

    出力からKeyMetadata.Arnを取得します。次のステップでキーを登録する際に必要になります。

    Anthropicは、キーを検証するとき、またはワークスペースにアタッチするときにキーを検証します。各検証はCloudTrailに4つのアクセス拒否エラーを追加します。これらは想定されたものです。これらをフィルタリングする必要がある場合は、次の3つの値すべてでフィルタリングします。最初の値だけでは不十分です。なぜなら、どの呼び出し元でも設定できるからです。

    • requestParameters.encryptionContext.associatedData: Y21lay12YWxpZGF0aW9u
    • userIdentity.accountId: 915198916910
    • resources.ARN: arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>

    AWS Consoleからキーを作成することもできます。暗号化と復号のキー使用法を持つ対称キー、単一リージョンキー、およびKMSキーマテリアルオリジンを選択します。キー作成ウィザードはReviewステップでキーポリシーをコミットします。そこでキー使用権限の下にAnthropicのアカウントID 915198916910を追加すると、生成されたポリシーはAnthropicアカウント全体にEncryptionContext条件なしでより広範なアクション(kms:ReEncrypt*やkms:GenerateDataKey*など)を付与し、検証はそれを拒否します。過度に許可されたキーを残さないようにするには、管理権限のみでウィザードを完了し、キーのKey policyタブを開いて、JSONをこのステップの前半で示したkey-policy.jsonポリシーに置き換えます。

    AWS KMSのキー作成ウィザードのConfigure keyステップ。対称キータイプ、暗号化と復号のキー使用法、単一リージョンキーが選択されています。

    キーの設定: 対称、暗号化と復号、単一リージョンキー。

    AWS KMSのAdd labelsステップ。エイリアスにanthropic-cmek、説明にAnthropic CMEKが入力されています。

    キーのエイリアスと説明を追加します。

    AWS KMSのDefine key administrative permissionsステップ。キーを管理できるIAMロールが一覧表示されています。

    キー管理権限を定義します(オプション)。アカウントは完全な管理制御を保持します。

    AWS KMSのDefine key usage permissionsステップ。Other AWS accountsの下にAnthropicのアカウントIDが入力されています。

    ここにAnthropicのアカウントIDを追加しないでください。このウィザードステップは過度に許可されたポリシーを生成します。使用権限を空のままにして、作成後にKey policy JSONを編集してください(前述のキーポリシーを参照)。

Anthropicにキーを登録する

キーの登録方法は、使用する製品によって異なります。

Claude ConsoleまたはAdmin APIを通じてキーをセットアップでき、結果は同じです。

  1. Anthropicにキーを登録する

    Claude Consoleで、Data retentionページ(platform.claude.com/settings/privacy)に移動します。Encryption keysが表示されない場合は、ページ上部のドロップダウンメニューからOrganizationを選択します。Encryption keysの下でAdd keyをクリックします。表示名を入力し、AWS KMSを選択してContinueをクリックします。キーARNをKMS key ARNに貼り付け、Addをクリックします。

    キー詳細ステップには組織IDが表示されます。Addをクリックする前に、それをキーポリシーに追加してください。

  2. キーを検証する

    Encryption keysリストで、キーの横にあるVerifyをクリックします。チェックに合格するとConnectedが表示されます。失敗した場合は、メッセージに理由が表示されます。

  3. キーをワークスペースにアタッチする

    Claude Consoleで、Data retentionページ(platform.claude.com/settings/privacy)に移動し、ページ上部のドロップダウンメニューからワークスペースを選択します。Encryption keyの下でキーを選択し、Saveをクリックして確認します。キーのアタッチは元に戻せません。すでにリクエストを受信しているワークスペースの場合、キーが有効になるまで最大1日かかることがあります。

Claude Platform on AWSでCMEKを設定する

Claude Platform on AWSでは、CMEKはAWS KMSキーのみを使用し、セットアップは前述のセクションと次の点で異なります。

  • プリンシパル: キーポリシーはAWSサービスプリンシパルaws-external-anthropic.amazonaws.comにアクセスを付与します。AnthropicのIAMロールとアカウントIDは使用されないため、Anthropic用のARNは適用されません。
  • キー要件: キーは、暗号化と復号の使用法を持つ対称KMSキーで、単一リージョンであり、アタッチするワークスペースと同じAWSアカウントおよびリージョンにある必要があります。クロスアカウントキーはサポートされていません。キーは組織をホストするAWSアカウントにある必要があります。マルチリージョンキー(mrk-で始まるキーID)とエイリアスARNは、キーを登録するときに拒否されます。キーARNを使用してください。
  • 個別の検証ステップなし: 登録時のキーARNに対するこれらのチェックを除き、キーはワークスペースにアタッチするときに検証されます。アタッチ呼び出しは、そのワークスペースのコンパートメントIDを暗号化コンテキストとしてキーに対して暗号化/復号ラウンドを実行するため、キーポリシーの問題は登録時ではなくアタッチ時に表面化します。したがって、EncryptionContext条件にはすべてゼロのエントリは必要ありません。
  • キーの管理場所: Adminロールを使用してAWS経由でサインインし、Claude Consoleでキーを登録してアタッチします。外部キーエンドポイントはClaude Platform on AWSでも利用可能で、IAMアクションを通じて認可されます。そこでは、キーはekey_ IDではなくKMSキーARNで識別されます。

前提条件

  • Claude Platform on AWS組織をホストするAWSアカウントで、KMSキーを作成しキーポリシーを設定する権限(kms:CreateKeyおよびkms:PutKeyPolicy)を持つもの。
  • Claude Platform on AWS用のClaude ConsoleのAdminロール。Claude Consoleの使用を参照してください。
  • Claude Consoleへのサインインに使用するIAMプリンシパルには、aws-external-anthropic:AssumeConsoleに加えて、そこで実行する操作のIAMアクションが必要です。キーの登録、一覧表示、アタッチはAWSゲートウェイを経由するためです。キーの登録はRegisterKey(登録を表示するにはListKeysとGetKey)、キーのアタッチはUpdateWorkspaceまたはCreateWorkspaceです。外部キーアクション(およびCreateWorkspace)はアカウントスコープであるため、Resource: "*"に対して付与してください。ワークスペースARNに限定されたポリシーにはこれらは含まれません。
  • キーをワークスペースにアタッチするIAMプリンシパル(Claude Consoleにサインインしたアイデンティティ)について: キーに対するkms:DescribeKey、kms:Encrypt、およびkms:Decrypt。アタッチ時には、サービスプリンシパルに加えて、プリンシパルのキーへのアクセスがチェックされます。
  • オプション、Claude Consoleのキーピッカー用: サインインするプリンシパルのkms:ListKeysおよびkms:DescribeKey。これらがない場合は、代わりにキーARNを貼り付けてください。

KMSキーを作成する

キーポリシーには3つのステートメントがあります。アカウントのルート管理者ステートメント、Claude Platform on AWSサービスプリンシパルがデータキーの暗号化、復号、生成を行えるようにするステートメント、そしてkms:DescribeKey用の個別のステートメントです。暗号化ステートメントには、リストしたワークスペースにキーをバインドするオプションのEncryptionContext条件が含まれます。DescribeKeyにはEncryptionContextパラメータがなく、そのアクションにEncryptionContext条件を付けると常に拒否されるため、個別に付与されます。

ここに示すオプションのEncryptionContext条件を使用する予定の場合は、まずワークスペースを(キーなしで)作成し、そのコンパートメントIDをコピーして、<compartment-uuid>を置き換えてください。Claude ConsoleでIDを確認するには、Data retentionページ(platform.claude.com/settings/privacy)に移動し、ページ上部のドロップダウンメニューからワークスペースを選択します。IDはEncryption keyの下のCompartment IDフィールドにあります。Get Workspaceエンドポイントが返すcompartment_idフィールドから読み取ることもできます。条件を使用する予定がない場合は、そのステートメントからConditionブロックを削除してください。

export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)

aws kms create-key \
  --region <workspace-region> \
  --description "Anthropic CMEK (Claude Platform on AWS)" \
  --key-usage ENCRYPT_DECRYPT \
  --policy "{
    \"Version\": \"2012-10-17\",
    \"Statement\": [
      {
        \"Sid\": \"AccountRootAdmin\",
        \"Effect\": \"Allow\",
        \"Principal\": {\"AWS\": \"arn:aws:iam::${YOUR_ACCOUNT}:root\"},
        \"Action\": \"kms:*\",
        \"Resource\": \"*\"
      },
      {
        \"Sid\": \"AllowClaudePlatformOnAWSCrypto\",
        \"Effect\": \"Allow\",
        \"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
        \"Action\": [\"kms:Encrypt\", \"kms:Decrypt\", \"kms:GenerateDataKey\"],
        \"Resource\": \"*\",
        \"Condition\": {
          \"StringEquals\": {
            \"kms:EncryptionContext:anthropic:compartment_uuid\": [
              \"<compartment-uuid>\"
            ]
          }
        }
      },
      {
        \"Sid\": \"AllowClaudePlatformOnAWSDescribe\",
        \"Effect\": \"Allow\",
        \"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
        \"Action\": \"kms:DescribeKey\",
        \"Resource\": \"*\"
      }
    ]
  }"

出力からKeyMetadata.Arnを取得します。キーを登録する際に必要になります。

EncryptionContext条件はオプションです。アタッチ時のチェックを含め、ワークスペースに対して行われるすべての暗号化、復号、データキーの呼び出しには、そのワークスペースのコンパートメントIDがanthropic:compartment_uuidとして含まれます。そのため、条件にはキーをアタッチする各ワークスペースのコンパートメントIDを列挙し、すべてゼロのエントリは必要ありません。この条件を追加すると、IAMレイヤーでもリストしたワークスペースにキーがバインドされます。コンパートメントIDはワークスペースが存在して初めて存在するため、順序は次のとおりです。ワークスペースを作成し、そのコンパートメントIDを条件に入れ(キー作成時、または後でkms:PutKeyPolicyを使用して)、その後キーをアタッチします。追加の各ワークスペースにキーをアタッチする前に、同じ方法でそのワークスペースのコンパートメントIDを追加してください。条件なしで始めるには、AllowClaudePlatformOnAWSCryptoステートメントからConditionブロックを削除します。後で追加する場合は、キーがすでにアタッチされているすべてのワークスペースのコンパートメントIDを含めてください。

aws:SourceArn条件を使用して、両方のサービスプリンシパルステートメントをさらに制限できます。サービスは、キーを使用して行うすべての呼び出しで、ワークスペースのARN(arn:aws:aws-external-anthropic:<region>:<account-id>:workspace/<workspace-id>)をソースARNとして渡します。そのため、"ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<account-id>:workspace/*"}は付与を自分のAWSアカウント内のワークスペースに限定し、完全なワークスペースARNのリストは付与をそれらのワークスペースに限定します。この条件は必須ではありません。EncryptionContext条件だけで、リストしたワークスペースにキーがバインドされます。

AWS Consoleからキーを作成することもできます。ワークスペースのリージョンで、暗号化と復号のキー使用法を持つ対称キー、単一リージョンキー、およびKMSキーマテリアルオリジンを選択します。キー作成ウィザードでキー使用権限を空のままにして、キーのKey policyタブを開き、JSONをここに示すポリシーに置き換えます。

キーを登録してアタッチする

  1. キーを登録する

    Claude Consoleで、Data retentionページ(platform.claude.com/settings/privacy)に移動します。Encryption keysが表示されない場合は、ページ上部のドロップダウンメニューからOrganizationを選択します。Encryption keysの下でAdd keyをクリックします。表示名を入力し、キーピッカーからキーを選択するか、Enter ARN manuallyを選択してキーARNを貼り付け、Addをクリックします。キーは組織をホストするAWSアカウントにある必要があります。クロスアカウントキーはサポートされていません。ピッカーには、組織のいずれかのリージョンにある、アカウント内の有効な顧客管理の対称単一リージョンキーが一覧表示されます。ピッカーに表示されないキーの場合は、ARNを入力してください。ピッカーにキーが表示されるのは、サインインに使用したプリンシパルがkms:ListKeysとkms:DescribeKeyを呼び出せる場合のみです。

  2. キーをワークスペースにアタッチする

    新しいワークスペースにリクエストを送信する前に、そのワークスペースにキーをアタッチします。すでにリクエストを受信しているワークスペースの場合、キーが有効になるまで最大1日かかることがあります。Claude Consoleで、Data retentionページ(platform.claude.com/settings/privacy)に移動し、ページ上部のドロップダウンメニューからワークスペースを選択します。Encryption keyの下でキーを選択し、Saveをクリックして確認します。Claude Consoleでワークスペースを作成するときにキーを選択することもできますが、ワークスペースのコンパートメントIDは作成時に割り当てられるため、キーポリシーがまだ特定のワークスペースを指定していない場合(EncryptionContext条件がない場合)に限ります。一度アタッチすると、ワークスペースのキーは変更できません。

    これがキーが検証されるときです。アタッチ呼び出しは、プリンシパルのキーへのアクセスをチェックし、ワークスペースのコンパートメントIDを暗号化コンテキストとしてキーに対して暗号化/復号ラウンドを実行するため、キーポリシーまたはプリンシパルの権限のいずれかの問題がその呼び出しでエラーとして表面化します。アタッチがKMSアクセスエラーで失敗した場合は、次を確認してください。

    • キーポリシーがaws-external-anthropic.amazonaws.comサービスプリンシパルを指定し、kms:Encrypt、kms:Decrypt、およびkms:GenerateDataKeyを付与し、さらにEncryptionContext条件のない個別のステートメントでkms:DescribeKeyを付与していること。
    • EncryptionContext条件を使用している場合は、その条件にこのワークスペースのコンパートメントIDが含まれていること。aws:SourceArn条件を追加した場合は、その条件がこのワークスペースのARNと一致していること。
    • キーが有効で、単一リージョンであり、ワークスペースと同じAWSアカウントおよびリージョンにあること。
    • サインインしているプリンシパルがキーに対するkms:DescribeKey、kms:Encrypt、およびkms:Decryptを持っていること。
    • AWS組織内のサービスコントロールポリシーまたはリソースコントロールポリシーが、サービスプリンシパルまたはプリンシパルがキーを使用することを妨げていないこと。
    • ポリシーが正しいように見えてもアタッチが失敗する場合は、キーのアカウントのCloudTrailで拒否されたkms:イベントを見つけ(呼び出し元のプリンシパルと、暗号化呼び出しの場合は暗号化コンテキストが表示されます)、kms:PutKeyPolicyで条件を修正して再試行してください。

Terraform

Infrastructure-as-codeデプロイメントの場合、同じ手順はaws_kms_keyおよびaws_kms_aliasリソースを持つawsプロバイダーにマッピングされます。

Was this page helpful?