claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Panduan ini menjelaskan langkah-langkah mengonfigurasi kunci AWS KMS sebagai "customer-managed encryption key" (kunci enkripsi yang dikelola pelanggan), atau CMEK, untuk organisasi Anthropic Anda.
Mengaktifkan CMEK bersifat permanen. Jika kunci KMS Anda dihapus atau dinonaktifkan, Anthropic tidak dapat memulihkan data yang dienkripsi dengan kunci tersebut. Tinjau peringatan dan batasan sebelum Anda memulai.
kms:CreateKey dan kms:PutKeyPolicy).Agar Anthropic dapat menggunakan kunci enkripsi Anda, Anda harus memberikan IAM role milik Anthropic sebuah kunci KMS yang dapat digunakan untuk mengenkripsi data. ARN untuk CMEK Anthropic adalah:
arn:aws:iam::915198916910:role/anthropic-cmek-client-usGunakan hanya ARN yang dipublikasikan ini. Jangan pernah memercayai pengidentifikasi yang diberikan melalui email, chat, atau saluran onboarding apa pun.
Buat kunci KMS dengan kebijakan kunci lintas akun
Kebijakan kunci memberikan akses lintas akun kepada IAM role milik Anthropic. Tiga pernyataan diperlukan:
kms:Encrypt dan kms:Decrypt, yang digunakan Anthropic untuk mengenkripsi dan mendekripsi kunci data yang melindungi data workspace Anda (envelope encryption).DescribeKey tidak memiliki parameter EncryptionContext, sehingga kondisi EncryptionContext pada tindakan ini akan selalu menolak.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\": \"<compartment-uuid>\"
}
}
},
{
\"Sid\": \"AllowAnthropicCMEKDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"Catat KeyMetadata.Arn dari output. Anda memerlukannya saat mendaftarkan kunci pada langkah berikutnya.
Kondisi EncryptionContext direkomendasikan tetapi bersifat opsional. Anthropic selalu menyertakan compartment ID workspace Anda dalam encryption context, sehingga ciphertext secara kriptografis terikat ke compartment tersebut terlepas dari kondisi ini. Menambahkan kondisi ini memberikan pertahanan berlapis (defense-in-depth) di lapisan IAM. Untuk memulai tanpa kondisi ini, hilangkan blok Condition dari pernyataan AllowAnthropicCMEKCrypto dan tambahkan nanti dengan kms:PutKeyPolicy.
Menemukan compartment ID Anda: Setiap workspace memiliki compartment ID yang membatasi cakupan data CMEK-nya. Temukan di Claude Console pada Workspace > Security > Encryption keys (kolom Compartment ID), atau baca kolom compartment_id yang dikembalikan oleh endpoint Get Workspace. Substitusikan nilai tersebut untuk <compartment-uuid> dalam kebijakan kunci di atas. Anthropic juga mengirimkannya sebagai encryption context saat memvalidasi kunci, sehingga nilai kondisi harus cocok agar validasi berhasil.
Anda juga dapat membuat kunci dari AWS Console. Pilih kunci simetris dengan penggunaan kunci encrypt and decrypt, kunci single-region, dan asal materi kunci KMS. Wizard Create-key menetapkan kebijakan kunci pada langkah Review: jika Anda menambahkan ID akun Anthropic 915198916910 di bawah key usage permissions di sana, kebijakan yang dihasilkan memberikan seluruh akun Anthropic tindakan yang lebih luas (seperti kms:ReEncrypt* dan kms:GenerateDataKey*) tanpa kondisi EncryptionContext, dan validasi tetap akan berhasil terhadapnya. Untuk menghindari meninggalkan kunci dengan izin berlebihan, selesaikan wizard hanya dengan izin administratif, lalu buka tab Key policy pada kunci tersebut dan ganti JSON dengan kebijakan yang dibatasi ke role seperti yang ditunjukkan di atas (tiga pernyataan yang dibatasi ke role anthropic-cmek-client-us, dengan kondisi EncryptionContext).




Daftarkan kunci ke Anthropic
Buat konfigurasi kunci eksternal melalui Admin API.
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-step-1>",
"role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
}
}'Respons berisi ID kunci eksternal:
Validasi kunci
Picu proses encrypt dan decrypt bolak-balik terhadap kunci Anda.
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 '{}'Respons yang berhasil terlihat seperti ini:
{ "type": "external_key_validation", "status": "success", "error": null }Lampirkan kunci ke workspace
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>"
}'Untuk deployment infrastructure-as-code, langkah-langkah yang sama dipetakan ke provider aws dengan sumber daya aws_kms_key dan aws_kms_alias.
Was this page helpful?
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Jika validasi gagal, penyebab umumnya adalah:
EncryptionContext dalam kebijakan kunci, pastikan Anda telah mengganti <compartment-uuid> dengan compartment ID workspace Anda yang sebenarnya (lihat langkah 1). Nilai yang salah atau belum disubstitusi membuat KMS mengembalikan AccessDeniedException yang tidak jelas. Untuk mengesampingkan kemungkinan ini, hapus sementara blok Condition dari pernyataan AllowAnthropicCMEKCrypto dan validasi ulang.aws:PrincipalOrgID tidak cocok dengan org Anda, RCP tersebut memblokir role lintas akun milik Anthropic. RCP memerlukan pengecualian untuk kunci ini atau untuk ARN role Anthropic. Service control policies tidak berlaku di sini, karena tidak dievaluasi untuk principal eksternal yang memanggil melalui kebijakan berbasis sumber daya.aws kms get-key-policy --key-id <id> --policy-name default.