Was this page helpful?
claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"Panduan ini menjelaskan langkah-langkah mengonfigurasi kunci Azure Key Vault sebagai "customer-managed encryption key" (kunci enkripsi yang dikelola pelanggan), atau CMEK, untuk organisasi Anthropic Anda.
Mengaktifkan CMEK bersifat permanen. Jika kunci Key Vault Anda dihapus atau dinonaktifkan, Anthropic tidak dapat memulihkan data yang dienkripsi dengan kunci tersebut. Tinjau peringatan dan batasan sebelum Anda memulai.
enableRbacAuthorization: true) dan akses jaringan publik diizinkan. Anthropic memanggil vault Anda melalui endpoint data-plane publik; private endpoint tidak didukung.enablePurgeProtection: true) pada vault. Tanpa ini, kunci yang dihapus dapat dihapus secara permanen selama periode retensi soft-delete, yang menyebabkan hilangnya data yang dilindungi CMEK secara permanen. Purge protection tidak dapat dinonaktifkan setelah diaktifkan.Application Administrator, Cloud Application Administrator, atau peran kustom yang setara).az CLI terinstal dan terautentikasi.AuditEvent ke Log Analytics, storage account, atau event hub. Azure Key Vault tidak mengeluarkan log audit data-plane (seperti KeyWrap, KeyUnwrap, dan KeyGet) secara default, sehingga tanpa ini Anda tidak mendapatkan jejak audit untuk operasi kunci yang dilakukan Anthropic.Agar Anthropic dapat menggunakan kunci enkripsi Anda, Anda harus mengonfigurasi ID aplikasi multi-tenant dan nama tampilan Anthropic. Nilai-nilai tersebut adalah:
| Field | Nilai |
|---|---|
| Multi-tenant app client ID (US) | 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 |
| App display name | anthropic-cmek-client-us |
Gunakan hanya client ID dan nama tampilan yang dipublikasikan ini. Jangan pernah memercayai pengidentifikasi yang diberikan melalui email, chat, atau saluran onboarding apa pun.
Untuk deployment infrastructure-as-code, langkah-langkah yang sama dipetakan ke provider azurerm dan azuread.
Berikan persetujuan untuk aplikasi multi-tenant Anthropic
Langkah ini membuat service principal di tenant Entra Anda untuk aplikasi klien CMEK Anthropic. Aplikasi ini tidak meminta izin Microsoft Graph apa pun; aplikasi ini ada semata-mata sebagai target federasi untuk akses data-plane Key Vault.
az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87Dari output, catat field id. Ini adalah object ID service principal di tenant Anda, yang Anda gunakan saat menetapkan peran RBAC.
{
"appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87",
"displayName": "anthropic-cmek-client-us",
"id": "<sp-object-id>"
}Jika service principal sudah ada di tenant Anda (dari percobaan sebelumnya atau integrasi lain), az ad sp create akan keluar dengan error "already exists". Ambil object ID-nya sebagai gantinya:
az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsvLangkah ini tidak memiliki padanan di Portal. Jika Anda tidak memiliki Azure CLI yang terinstal secara lokal, buka Cloud Shell dari bilah navigasi atas Portal. Setelah perintah berhasil, Anda dapat menemukan object ID service principal di Microsoft Entra ID > Enterprise applications dengan menghapus filter tipe aplikasi default dan mencari anthropic-cmek-client-us.

Buat kunci RSA di vault Anda
Azure Key Vault tidak mendukung symmetric key wrapping, sehingga kunci harus berupa RSA (3072-bit atau lebih besar) dengan wrapKey dan unwrapKey dalam operasi yang diizinkan.
az keyvault key create \
--vault-name <your-vault-name> \
--name <your-key-name> \
--kty RSA --size 3072 \
--ops wrapKey unwrapKeyUntuk kunci yang didukung HSM, gunakan --kty RSA-HSM (memerlukan vault dengan SKU Premium). Kunci RSA yang dilindungi perangkat lunak dapat diterima untuk integrasi ini.
Dari Portal, buka Key Vault Anda, pilih Keys, lalu Generate/Import. Atur tipe kunci ke RSA dan ukurannya ke 3072 atau lebih besar. Untuk membatasi kunci hanya pada wrap dan unwrap, buka versi kunci, gulir ke Permitted operations, dan hapus centang semuanya kecuali Wrap Key dan Unwrap Key.


Berikan akses ke kunci Anda untuk service principal Anthropic
Tetapkan peran Key Vault Crypto User ke service principal dari langkah pertama, dengan cakupan pada kunci individual dan bukan seluruh vault.
VAULT_ID=$(az keyvault show --name <your-vault-name> --query id -o tsv)
az role assignment create \
--role "Key Vault Crypto User" \
--assignee-object-id <sp-object-id> \
--assignee-principal-type ServicePrincipal \
--scope "${VAULT_ID}/keys/<your-key-name>"Peran bawaan Key Vault Crypto User memberikan operasi kriptografi kunci (encrypt, decrypt, wrap, unwrap, sign, verify) ditambah pembacaan kunci pada cakupan yang ditetapkan. Pembatasan --ops wrapKey unwrapKey yang Anda atur pada kunci di langkah sebelumnya semakin mempersempit operasi mana yang dapat berhasil terhadap kunci ini, sehingga dalam praktiknya Anthropic hanya dapat melakukan wrap dan unwrap.
Dari Portal, buka kunci (bukan vault), pilih tab Access control (IAM), klik Add > Add role assignment, pilih Key Vault Crypto User, dan tetapkan ke service principal anthropic-cmek-client-us.
Alternatif vault khusus: Microsoft merekomendasikan vault khusus per aplikasi dengan peran yang ditetapkan pada cakupan vault. Jika Anda menyediakan vault yang hanya berisi kunci CMEK Anthropic ini, Anda dapat menetapkan peran pada cakupan vault sebagai gantinya dan efeknya identik. Gunakan cakupan pada kunci individual ketika kunci berada di vault bersama.

Verifikasi konfigurasi vault Anda
az keyvault show --name <your-vault-name> \
--query "{rbac:properties.enableRbacAuthorization, purge:properties.enablePurgeProtection, pub:properties.publicNetworkAccess, net:properties.networkAcls.defaultAction, ipRules:properties.networkAcls.ipRules, uri:properties.vaultUri, tenantId:properties.tenantId}"Pastikan bahwa:
rbac bernilai true.purge bernilai true. Jika bernilai false atau null, aktifkan purge protection pada vault sebelum melanjutkan. Tanpa ini, kunci yang di-soft-delete dapat dihapus secara permanen selama periode retensi, sehingga data yang dilindungi CMEK Anda tidak dapat dipulihkan.pub bernilai "Enabled". Jika bernilai "Disabled", Anthropic tidak dapat menjangkau vault melalui endpoint data-plane publiknya dan validasi akan gagal.net bernilai "Allow", atau, jika bernilai "Deny", pastikan ipRules menyertakan rentang egress Anthropic (hubungi Anthropic untuk daftar terkini).uri adalah URI vault yang Anda gunakan saat mendaftarkan kunci.tenantId adalah tenant yang mengatur vault. Gunakan nilai ini sebagai tenant_id saat Anda mendaftarkan kunci, bukan tenant dari subscription yang sedang aktif (keduanya dapat berbeda dalam pengaturan cross-tenant).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": "azure",
"vault_uri": "https://<your-vault-name>.vault.azure.net/",
"key_name": "<your-key-name>",
"tenant_id": "<your-tenant-id>"
}
}'Respons berisi ID kunci eksternal:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Validasi kunci
Picu round-trip enkripsi dan dekripsi terhadap kunci Anda. Ini mengonfirmasi bahwa Anthropic dapat mengautentikasi ke tenant Anda dan melakukan operasi wrap dan unwrap.
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, field error menjelaskan masalahnya. Penyebab umum adalah:
ipRules seperti yang dijelaskan di langkah verifikasi.Lampirkan kunci ke workspace
Setelah kunci divalidasi, lampirkan ke workspace untuk mengaktifkan CMEK bagi data workspace tersebut.
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>"
}'