claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Panduan ini menjelaskan cara 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 kunci KMS kepada IAM role Anthropic yang dapat digunakan untuk mengenkripsi data. ARN untuk Anthropic CMEK 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 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 aksi 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\": [
\"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\": \"*\"
}
]
}"Catat KeyMetadata.Arn dari output. Anda memerlukannya saat mendaftarkan kunci pada langkah berikutnya.
Kondisi EncryptionContext direkomendasikan tetapi opsional. Anthropic selalu menyertakan compartment ID workspace Anda dalam encryption context, sehingga ciphertext terikat secara kriptografis ke compartment tersebut terlepas dari kondisi ini. Menambahkan kondisi memberikan pertahanan berlapis (defense-in-depth) pada lapisan IAM. Untuk memulai tanpa kondisi tersebut, hilangkan blok Condition dari pernyataan AllowAnthropicCMEKCrypto dan tambahkan nanti dengan kms:PutKeyPolicy.
Menemukan compartment ID Anda: Lokasi untuk menemukan compartment ID Anda berbeda antara Claude Platform dan Claude Enterprise. Lihat tab Claude Platform dan Claude Enterprise di bawah Daftarkan kunci ke Anthropic.
Anda juga dapat membuat kunci dari AWS Console. Pilih kunci simetris dengan penggunaan kunci encrypt dan decrypt, kunci single-region, dan asal materi kunci KMS. Wizard Create-key menerapkan kebijakan kunci pada langkah Review-nya: Jika Anda menambahkan ID akun Anthropic 915198916910 di bawah izin penggunaan kunci di sana, kebijakan yang dihasilkan memberikan aksi yang lebih luas kepada seluruh akun Anthropic (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 pada role seperti yang ditunjukkan sebelumnya (tiga pernyataan yang dibatasi pada role anthropic-cmek-client-us, dengan kondisi EncryptionContext).




Cara Anda mendaftarkan kunci bergantung pada produk yang Anda gunakan.
Menemukan compartment ID Anda: Setiap workspace memiliki compartment ID yang membatasi cakupan data CMEK-nya. Temukan di Claude Console di bawah Workspace > Security > Encryption keys (bidang Compartment ID), atau baca bidang compartment_id yang dikembalikan oleh endpoint Get Workspace. Gantikan nilai tersebut untuk <compartment-uuid> dalam kebijakan kunci sebelumnya.
Validasi kunci selalu mengirimkan compartment UUID yang seluruhnya nol (00000000-0000-0000-0000-000000000000) sebagai encryption context, karena validasi berjalan sebelum kunci dilampirkan ke workspace mana pun. Lalu lintas langsung mengirimkan compartment ID dari setiap workspace yang dilampirkan.
Setiap kondisi EncryptionContext harus mengizinkan nilai seluruhnya nol ditambah compartment ID dari setiap workspace tempat kunci dilampirkan. Validasi juga berjalan kembali setiap kali penyiapan kunci dijalankan ulang, jadi pertahankan entri seluruhnya nol secara permanen.
Untuk melampirkan kunci ke workspace tambahan, tambahkan compartment ID workspace tersebut ke kondisi dengan kms:PutKeyPolicy sebelum melampirkan.
Daftarkan kunci ke Anthropic
Buat konfigurasi kunci eksternal melalui Admin API.
Untuk organisasi di Claude Platform on AWS, endpoint kunci eksternal belum tersedia. Sebagai gantinya, daftarkan, validasi, dan lampirkan kunci Anda di 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"
}
}'Respons berisi ID kunci eksternal:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}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 }Jika validasi gagal, penyebab umumnya adalah:
AccessDeniedException yang tidak jelas ketika kondisi kms:EncryptionContext:anthropic:compartment_uuid hanya mengizinkan salah satu dari dua nilai yang dikirim Anthropic. Validasi mengirimkan UUID seluruhnya nol (00000000-0000-0000-0000-000000000000); lalu lintas langsung mengirimkan compartment ID dari workspace yang dilampirkan. Pastikan kondisi mencantumkan keduanya. Untuk sepenuhnya mengesampingkan kondisi tersebut, hapus sementara blok Condition dari pernyataan AllowAnthropicCMEKCrypto dan validasi ulang.aws:PrincipalOrgID tidak cocok dengan organisasi Anda, RCP tersebut memblokir role lintas akun 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.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?