claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"このガイドでは、AWS KMSキーをAnthropic組織のcustomer-managed encryption key(顧客管理暗号化キー)、すなわちCMEKとして設定する手順を説明します。
CMEKの有効化は永続的です。KMSキーが削除または無効化された場合、Anthropicはそのキーで暗号化されたデータを復元できません。開始する前に警告と制限事項を確認してください。
kms:CreateKeyおよびkms:PutKeyPolicy)を持つAWSアカウント。Anthropicに暗号化キーを使用させるには、AnthropicのIAMロールに対して、データの暗号化に使用できるKMSキーを付与する必要があります。Anthropic CMEKのARNは次のとおりです。
arn:aws:iam::915198916910:role/anthropic-cmek-client-usこの公開されたARNのみを使用してください。メール、チャット、またはオンボーディングチャネルで提供された識別子を決して信頼しないでください。
クロスアカウントキーポリシーを使用してKMSキーを作成する
キーポリシーは、AnthropicのIAMロールにクロスアカウントアクセスを付与します。3つのステートメントが必要です。
kms:Encryptおよびkms:Decryptアクションです。Anthropicはこれらを使用して、ワークスペースデータを保護するデータキーを暗号化および復号します(エンベロープ暗号化)。DescribeKeyにはEncryptionContextパラメータがないため、このアクションに対するEncryptionContext条件は常に拒否となります。そのため、個別に付与されます。export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
aws kms create-key \
--region <region> \
--description "Anthropic CMEK" \
--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\": \"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:compartment_uuid\": [
\"00000000-0000-0000-0000-000000000000\",
\"<compartment-uuid>\"
]
}
}
},
{
\"Sid\": \"AllowAnthropicCMEKDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"出力からKeyMetadata.Arnを取得してください。次のステップでキーを登録する際に必要になります。
EncryptionContext条件は推奨されますが、オプションです。Anthropicは常にワークスペースのコンパートメントIDを暗号化コンテキストに含めるため、暗号文はいずれにしてもそのコンパートメントに暗号学的にバインドされます。条件を追加することで、IAMレイヤーでの多層防御が提供されます。条件なしで開始するには、AllowAnthropicCMEKCryptoステートメントからConditionブロックを省略し、後でkms:PutKeyPolicyを使用して追加してください。
コンパートメントIDの確認方法: コンパートメントIDの確認場所は、Claude PlatformとClaude Enterpriseで異なります。Anthropicへのキーの登録の下にあるClaude PlatformタブとClaude Enterpriseタブを参照してください。
AWS Consoleからキーを作成することもできます。暗号化と復号のキー使用法を持つ対称キー、単一リージョンキー、およびKMSキーマテリアルオリジンを選択してください。キー作成ウィザードは、確認ステップでキーポリシーをコミットします。そこでキー使用権限の下にAnthropicのアカウントID 915198916910を追加すると、生成されるポリシーはEncryptionContext条件なしで、Anthropicアカウント全体により広範なアクション(kms:ReEncrypt*やkms:GenerateDataKey*など)を付与し、それに対しても検証は成功してしまいます。過剰な権限を持つキーを残さないようにするには、管理権限のみでウィザードを完了し、その後キーのキーポリシータブを開いて、JSONを前述のロールスコープのポリシー(anthropic-cmek-client-usロールにスコープされた3つのステートメントとEncryptionContext条件)に置き換えてください。




キーの登録方法は、使用する製品によって異なります。
コンパートメントIDの確認方法: 各ワークスペースには、そのCMEKデータをスコープするコンパートメントIDがあります。Claude ConsoleのWorkspace > Security > Encryption keys(Compartment IDフィールド)で確認するか、Get Workspaceエンドポイントから返されるcompartment_idフィールドを読み取ってください。前述のキーポリシーの<compartment-uuid>をその値に置き換えてください。
キーの検証は、キーがワークスペースにアタッチされる前に実行されるため、常にすべてゼロのコンパートメントUUID(00000000-0000-0000-0000-000000000000)を暗号化コンテキストとして送信します。実際のトラフィックは、アタッチされた各ワークスペースのコンパートメントIDを送信します。
EncryptionContext条件は、すべてゼロの値に加えて、キーがアタッチされているすべてのワークスペースのコンパートメントIDを許可する必要があります。検証はキーのセットアップが再実行されるたびに再度実行されるため、すべてゼロのエントリは永続的に残しておいてください。
キーを追加のワークスペースにアタッチするには、アタッチする前にkms:PutKeyPolicyを使用してそのワークスペースのコンパートメントIDを条件に追加してください。
Anthropicへのキーの登録
Admin APIを通じて外部キー設定を作成します。
Claude Platform on AWSを利用している組織では、外部キーエンドポイントはまだ利用できません。代わりにClaude Consoleでキーの登録、検証、アタッチを行ってください。
curl -sS https://api.anthropic.com/v1/organizations/external_keys \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"display_name": "<friendly-name>",
"geo": "us",
"provider_config": {
"type": "aws",
"kms_arn": "<key-arn-from-create-key-step>",
"role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
}
}'レスポンスには外部キーIDが含まれます。
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}キーの検証
キーに対して暗号化と復号のラウンドトリップをトリガーします。
curl -sS -X POST https://api.anthropic.com/v1/organizations/external_keys/ekey_<id>/validate \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{}'成功したレスポンスは次のようになります。
{ "type": "external_key_validation", "status": "success", "error": null }検証が失敗した場合、一般的な原因は次のとおりです。
kms:EncryptionContext:anthropic:compartment_uuid条件がAnthropicが送信する2つの値のうち1つのみを許可している場合、検証は失敗するがデータトラフィックは機能する(またはその逆)という状態が、不明瞭なAccessDeniedExceptionとともに発生します。検証はすべてゼロのUUID(00000000-0000-0000-0000-000000000000)を送信し、実際のトラフィックはアタッチされたワークスペースのコンパートメントIDを送信します。条件に両方がリストされていることを確認してください。条件を完全に除外して確認するには、一時的にAllowAnthropicCMEKCryptoステートメントからConditionブロックを削除して再検証してください。aws:PrincipalOrgIDが組織と一致しない場合にKMS操作を拒否するRCPがある場合、Anthropicのクロスアカウントロールがブロックされます。RCPには、このキーまたはAnthropicのロールARNに対する除外設定が必要です。サービスコントロールポリシーは、リソースベースのポリシーを通じて呼び出す外部プリンシパルに対しては評価されないため、ここでは適用されません。aws kms get-key-policy --key-id <id> --policy-name defaultで確認してください。ワークスペースへのキーのアタッチ
curl -sS -X POST https://api.anthropic.com/v1/organizations/workspaces/<workspace-id> \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"external_key_id": "ekey_<id>"
}'Infrastructure-as-Codeによるデプロイメントの場合、同じ手順はawsプロバイダーのaws_kms_keyおよびaws_kms_aliasリソースに対応します。
Was this page helpful?