Claude Platform Docs
AdminKunci enkripsi

Mengonfigurasi Google Cloud KMS untuk CMEK

Gunakan Google Cloud KMS untuk menyediakan kunci enkripsi bagi organisasi Anda.

Configure with the /claude-api skill in Claude Code
claude "/claude-api help me configure a customer-managed encryption key with Google Cloud KMS"

Panduan ini menjelaskan langkah-langkah mengonfigurasi kunci Google Cloud KMS sebagai "customer-managed encryption key" (kunci enkripsi yang dikelola pelanggan), atau CMEK untuk organisasi Anthropic Anda.

Prasyarat

  • Proyek Google Cloud dengan penagihan yang diaktifkan.
  • Cloud KMS API diaktifkan (cloudkms.googleapis.com).
  • Izin untuk membuat key ring dan kunci KMS, serta untuk menetapkan kebijakan IAM pada keduanya (roles/cloudkms.admin atau yang setara).
  • Kunci API Admin Anthropic untuk organisasi Anda.
  • CLI gcloud terinstal dan terautentikasi.
  • Data Access audit logs Cloud KMS diaktifkan untuk proyek (IAM & Admin > Audit Logs > Cloud Key Management Service, dengan DATA_READ dan DATA_WRITE). Log ini nonaktif secara default; tanpanya, operasi enkripsi dan dekripsi Anthropic tidak menghasilkan entri apa pun di Cloud Logging.

Email service account Anthropic

Agar Anthropic dapat menggunakan kunci enkripsi Anda, Anda harus memberikan service account Anthropic sebuah kunci yang dapat digunakannya untuk mengenkripsi data. Email service account untuk CMEK Anthropic adalah:

anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com

Penyiapan kunci enkripsi

  1. Buat atau pilih key ring

    Lewati langkah ini jika Anda sudah memiliki key ring untuk digunakan kembali. Key ring bersifat regional. Pilih lokasi US region tunggal seperti us-east5 yang sesuai dengan geografi Anthropic yang Anda konfigurasikan. Lokasi multi-region seperti us dan global tidak didukung.

    gcloud kms keyrings create <your-keyring-name> \
      --project=<your-project-id> \
      --location=<region>
  2. Buat crypto key

    Buat kunci simetris dengan tujuan ENCRYPT_DECRYPT. Anthropic sangat merekomendasikan perlindungan HSM: kunci HSM Cloud KMS tervalidasi FIPS 140-2 Level 3, dan selisih biayanya dibandingkan kunci perangkat lunak kecil.

    gcloud kms keys create <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --purpose=encryption \
      --protection-level=hsm

    Untuk perlindungan perangkat lunak sebagai gantinya, hilangkan --protection-level=hsm. Tidak ada hal lain dalam panduan ini yang berubah.

    Anda juga dapat membuat kunci dari Google Cloud Console. Buka key ring, klik Create key, pilih Generated key, atur tujuan dan algoritma ke symmetric encrypt and decrypt, lalu pilih HSM di bawah protection level.

    Halaman Create key Google Cloud KMS dengan protection level HSM dan tujuan Symmetric encrypt/decrypt.
    Buat kunci symmetric encrypt/decrypt (enkripsi/dekripsi simetris) yang dilindungi HSM.
  3. Berikan akses ke kunci untuk service account Anthropic

    Diperlukan dua binding IAM tingkat kunci. Keduanya dicakup pada satu crypto key saja, bukan seluruh proyek atau seluruh key ring.

    Encrypt dan decrypt, yang digunakan Anthropic untuk mengenkripsi dan mendekripsi data key yang melindungi data workspace Anda ("envelope encryption" (enkripsi amplop)):

    gcloud kms keys add-iam-policy-binding <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

    Viewer, untuk pembacaan metadata (cryptoKeys.get) yang dilakukan Anthropic saat startup untuk memvalidasi tujuan dan algoritma kunci:

    gcloud kms keys add-iam-policy-binding <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \
      --role=roles/cloudkms.viewer

    Dari Console, pilih kunci, buka panel Permissions, klik Grant access, dan tambahkan service account dengan kedua peran Cloud KMS CryptoKey Encrypter/Decrypter dan Cloud KMS Viewer. Pastikan Anda berada di halaman permissions milik kunci, bukan key ring atau proyek, sehingga pemberian akses hanya dicakup pada kunci ini.

    Dialog Grant access dengan service account Anthropic yang diberi peran Cloud KMS CryptoKey Encrypter/Decrypter dan Viewer.
    Berikan kedua peran kepada service account Anthropic melalui Grant access (berikan akses), dicakup pada kunci.
  4. Catat nama resource lengkap kunci

    Anda memberikan ini kepada Anthropic saat mendaftarkan kunci. Formatnya adalah:

    projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>

    Ambil dengan:

    gcloud kms keys describe <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --format="value(name)"

    Dari Console, buka halaman detail kunci dan klik Copy resource name.

    Detail key ring Google Cloud dengan tindakan Copy resource name disorot di menu tindakan kunci.
    Salin nama resource lengkap kunci melalui Copy resource name (salin nama resource) dari menu tindakan.

Daftarkan kunci ke Anthropic

Cara Anda mendaftarkan kunci bergantung pada produk yang Anda gunakan.

  1. Daftarkan kunci ke Anthropic

    Buat konfigurasi kunci eksternal melalui Admin API, menggunakan nama resource dari langkah Catat nama resource lengkap kunci di bagian Penyiapan kunci enkripsi.

    client = anthropic.Anthropic()
    
    external_key = client.beta.organization.external_keys.create(
        display_name="<friendly-name>",
        geo="us",
        provider_config={
            "type": "gcp",
            "key_name": "projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>",
        },
    )
    
    print(f"id: {external_key.id}")
    print(f"display_name: {external_key.display_name}")

    Respons berisi ID kunci eksternal:

    {
      "type": "external_key",
      "id": "ekey_<id>",
      "display_name": "<friendly-name>"
    }
  2. Validasi kunci

    Picu proses bolak-balik enkripsi dan dekripsi terhadap kunci Anda.

    client = anthropic.Anthropic()
    
    validation = client.beta.organization.external_keys.validate("ekey_<id>")
    
    print(f"status: {validation.status}")
    print(f"error: {validation.error}")

    Respons yang berhasil terlihat seperti ini:

    { "type": "external_key_validation", "status": "success", "error": null }

    Jika validasi gagal, penyebab umumnya adalah:

    • VPC Service Controls: jika service perimeter melindungi Cloud KMS di proyek Anda, tambahkan Anthropic ke access level pada perimeter tersebut (atau kecualikan proyek kunci) agar Anthropic dapat menjangkau kunci.
    • Domain restricted sharing: kebijakan organisasi constraints/iam.allowedPolicyMemberDomains dapat menghapus binding service account Anthropic (lihat catatan sebelumnya). Pastikan binding tersebut ada dengan gcloud kms keys get-iam-policy <your-key-name> --project=<your-project-id> --location=<region> --keyring=<your-keyring-name>.
    • Versi kunci dinonaktifkan atau dihancurkan: pastikan versi utama kunci diaktifkan, dan tidak dinonaktifkan, dijadwalkan untuk dihancurkan, atau sudah dihancurkan.
  3. Lampirkan kunci ke workspace

    Setelah kunci divalidasi, lampirkan ke workspace baru sebelum Anda mengirim permintaan apa pun ke workspace tersebut. Untuk workspace yang sudah menerima permintaan, kunci dapat memerlukan waktu hingga satu hari untuk berlaku.

    client = anthropic.Anthropic()
    
    workspace = client.beta.organization.workspaces.update(
        "<workspace-id>", external_key_id="ekey_<id>"
    )
    
    print(f"id: {workspace.id}")
    print(f"external_key_id: {workspace.external_key_id}")

Terraform

Untuk deployment infrastructure-as-code, langkah-langkah yang sama dipetakan ke provider google dengan resource google_kms_key_ring, google_kms_crypto_key, dan google_kms_crypto_key_iam_member.

Was this page helpful?