Mengaktifkan kunci enkripsi yang dikelola pelanggan untuk Secret Manager

Secara default, Secret Manager mengenkripsi konten pelanggan dalam penyimpanan. Secret Manager menangani enkripsi untuk Anda tanpa tindakan tambahan dari Anda. Opsi ini disebut enkripsi default Google.

Jika ingin mengontrol kunci enkripsi, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud KMS dengan layanan terintegrasi CMEK, termasuk Secret Manager. Dengan menggunakan kunci Cloud KMS, Anda dapat mengontrol tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batas kriptografisnya. Dengan Cloud KMS, Anda juga dapat melacak penggunaan kunci, melihat log audit, dan mengontrol siklus proses kunci. Alih-alih Google yang memiliki dan mengelola kunci enkripsi kunci (KEK) simetris yang melindungi data Anda, Andalah yang mengontrol dan mengelola kunci ini di Cloud KMS.

Setelah Anda menyiapkan resource dengan CMEK, pengalaman mengakses resource Secret Manager mirip dengan menggunakan enkripsi default Google. Untuk mengetahui informasi selengkapnya tentang opsi enkripsi Anda, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).

Secret Manager menyediakan alat untuk menyimpan, mengelola, dan mengakses data sensitif di aplikasi Anda.

CMEK dengan Kunci Otomatis Cloud KMS

Anda dapat membuat CMEK secara manual untuk melindungi resource Secret Manager atau menggunakan Cloud KMS Autokey. Dengan Autokey, key ring dan kunci dibuat sesuai permintaan sebagai bagian dari pembuatan resource di Secret Manager. Agen layanan yang menggunakan kunci untuk operasi enkripsi dan dekripsi akan dibuat jika belum ada dan diberi peran Identity and Access Management (IAM) yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan kunci otomatis.

Secret Manager hanya kompatibel dengan Cloud KMS Autokey saat membuat resource menggunakan Terraform atau REST API.

Untuk mempelajari cara menggunakan CMEK yang dibuat secara manual untuk melindungi resource Secret Manager, lihat CMEK dengan replikasi otomatis dan CMEK dengan replikasi yang dikelola pengguna di halaman ini.

Untuk mempelajari cara menggunakan CMEK yang dibuat oleh Autokey Cloud KMS untuk melindungi resource Secret Manager, lihat Menggunakan Autokey dengan resource Secret Manager.

Cara kerja CMEK di Secret Manager

Sebelum menulis versi secret ke penyimpanan persisten di lokasi tertentu, Secret Manager mengenkripsi data dengan kunci enkripsi data (DEK) yang unik. DEK ini kemudian dienkripsi dengan kunci khusus replika, yang disebut kunci enkripsi kunci (KEK) yang dimiliki oleh layanan Pengelola Rahasia.

Saat menggunakan CMEK untuk Pengelola Secret, KEK disebut kunci CMEK dan merupakan kunci simetris yang Anda kelola dalam Cloud KMS. Kunci CMEK harus berada di lokasi Google Cloud yang sama dengan replika versi secret yang dienkripsinya. Anda juga dapat menggunakan kunci Cloud EKM dalam kebijakan CMEK untuk enkripsi dan dekripsi.

Panduan ini menjelaskan cara mengonfigurasi Secret Manager untuk menggunakan CMEK. Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, termasuk waktu dan alasan mengaktifkannya, lihat dokumentasi Cloud Key Management Service.

Batasan

CMEK hanya tersedia di Secret Manager v1 API dan Google Cloud CLI.

Sebelum memulai

Anda dapat memilih untuk menyimpan semua resource dalam project yang sama atau menyimpan secret dan kunci dalam project terpisah. Baca Pemisahan tugas Cloud KMS untuk lebih memahami keputusan ini.

Selesaikan prasyarat berikut untuk menyiapkan Secret Manager dan Cloud KMS:

  • Secret Manager:

    • Buat atau gunakan project yang ada untuk menyimpan resource Secret Manager Anda.
    • Jika perlu, selesaikan langkah-langkah di bagian Mengonfigurasi Secret Manager di panduan memulai Secret Manager.
  • Cloud KMS:

    • Buat atau gunakan project yang ada untuk menyimpan resource Cloud KMS Anda.
    • Jika perlu, aktifkan Cloud KMS API.

Tetapkan variabel berikut ke project ID project Secret Manager dan Cloud KMS Anda.

This is an editable variable. Set it to your Secret Manager project ID and the
value will be used in all commands on this page.
SM_PROJECT_ID

This is an editable variable. Set it to your Cloud KMS project ID and the value
will be used in all commands on this page.
KMS_PROJECT_ID

Lakukan autentikasi ke Google Cloud:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud auth login

Membuat identitas agen layanan

Anda perlu membuat identitas agen layanan untuk setiap project yang memerlukan kunci enkripsi yang dikelola pelanggan.

Untuk membuat identitas layanan dengan Google Cloud CLI, jalankan perintah berikut:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud beta services identity create \
    --service "secretmanager.googleapis.com" \
    --project "SM_PROJECT_ID"

Yang akan menampilkan nama identitas layanan dalam format berikut:

service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com

Simpan nama identitas layanan:

The following variable is editable. Click on it to update the value, and it will
be reflected throughout this documentation page.

SM_SERVICE_IDENTITY

Anda akan memberikan akses identitas layanan ini ke kunci Cloud KMS CMEK yang digunakan untuk mengenkripsi dan mendekripsi secret Anda.

CMEK dengan replikasi otomatis

Bagian ini membahas secret yang dikonfigurasi melalui kebijakan replikasi otomatis.

Untuk secret yang menggunakan kebijakan replikasi otomatis, kunci CMEK Anda harus berada di multi-region Cloud KMS global. Jika menggunakan kunci Cloud EKM, Anda tidak dapat mengonfigurasi secret untuk menggunakan replika otomatis karena kunci Cloud EKM tidak tersedia di region global. Untuk mempelajari lebih lanjut cara menggunakan kunci Cloud EKM, lihat Menambahkan kunci Cloud EKM ke kebijakan CMEK.

Buat kunci Cloud KMS simetris di region Cloud KMS global, atau gunakan kunci yang ada. Contoh ini membuat key ring baru bernama secret-manager-cmek, lalu membuat kunci baru bernama my-cmek-key di dalamnya.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "global"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Berikan identitas layanan untuk akses Secret Manager guna mengenkripsi dan mendekripsi menggunakan kunci CMEK. Perintah ini memberikan peran Pengenkripsi/Pendekripsi Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci Cloud KMS my-cmek-key ke identitas layanan.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Buat secret dengan replikasi otomatis. Nama resource kunci CMEK disimpan sebagai metadata pada secret.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --kms-key-name "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" \
    --project "SM_PROJECT_ID"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

Tetapkan nilai replication.automatic.customerManagedEncryption.kmsKeyName ke nama resource untuk kunci CMEK.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication":{
    "automatic":{
      "customerManagedEncryption":{
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
      }
    }
  }
}
EOF

Sekarang, setiap kali versi secret dibuat dalam secret tersebut, payload secret akan otomatis dienkripsi menggunakan kunci sebelum ditulis ke penyimpanan persisten, selama identitas layanan memiliki akses ke kunci CMEK. Jika identitas layanan kehilangan akses atau jika kunci tidak tersedia, upaya untuk membuat versi secret baru atau mengakses secret yang ada akan menampilkan error.

Tambahkan versi secret baru. Perhatikan bahwa Anda tidak menentukan nama resource kunci Cloud KMS; nama tersebut dibaca dari metadata secret.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

echo -n "SECRET_DATA" | gcloud secrets versions add "SECRET_ID" \
    --project "SM_PROJECT_ID" \
    --data-file -

Versi secret dibuat, meskipun pemanggil tidak memiliki akses langsung untuk menggunakan kunci CMEK. Identitas layanan untuk Secret Manager, bukan pemanggil, bertanggung jawab untuk mengenkripsi dan mendekripsi secret saat membaca atau menulisnya.

Demikian pula, Anda tidak memerlukan akses langsung ke kunci CMEK untuk mengakses secret. Identitas layanan mengakses kunci dan mengenkripsi atau mendekripsi secret atas nama Anda.

Akses versi secret yang baru saja Anda buat:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets versions access "latest" \
    --project "SM_PROJECT_ID" \
    --secret "SECRET_ID"

Memperbarui konfigurasi CMEK

Buat kunci KMS simetris baru di multi-region Cloud KMS global.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Berikan identitas layanan untuk akses Secret Manager guna mengenkripsi dan mendekripsi menggunakan kunci CMEK baru. Perintah ini memberikan peran Pengenkripsi / Pendekripsi Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci Cloud KMS my-other-key ke identitas layanan.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Ubah konfigurasi CMEK pada secret dengan memperbarui replikasi pada secret dengan nama resource kunci Cloud KMS baru.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets replication update "SECRET_ID" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --project "SM_PROJECT_ID"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication": {
    "automatic":{
      "customerManagedEncryption":{
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
      }
    }
  }
}
EOF

CMEK dengan replikasi yang dikelola pengguna

Bagian ini membahas secret yang dikonfigurasi dengan kebijakan replikasi yang dikelola pengguna. Dengan kebijakan replikasi yang dikelola pengguna, Anda mengontrol lokasi Google Cloud tempat secret disimpan. Secret selalu dapat diakses dari setiap lokasi Google Cloud.

Secret dengan kebijakan replikasi yang dikelola pengguna harus menggunakan kunci Cloud KMS yang dipetakan secara tepat ke lokasi penyimpanan versi secret. Contoh dalam panduan ini menyimpan secret di dua lokasi terpisah: us-east1, us- central1. Permintaan untuk mengakses secret dirutekan ke salah satu lokasi ini.

Di setiap wilayah, buat key ring dan kunci Cloud KMS dengan tujuan enkripsi, atau gunakan kunci yang ada. Contoh ini membuat key ring baru yang disebut "secret-manager-cmek", lalu membuat kunci yang disebut "my-cmek-key" di setiap region.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"
gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Berikan identitas layanan untuk izin Secret Manager guna mengenkripsi dan mendekripsi menggunakan kunci CMEK dengan memberikan peran Pengenkripsi/Pendekripsi Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) untuk setiap kunci CMEK satu per satu atau untuk semua kunci dalam project.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Buat secret yang mengaktifkan CMEK dengan replikasi yang dikelola pengguna. Nama resource kunci CMEK disimpan sebagai metadata di secret.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

cat <<EOF > ./replication-policy.json
{
  "userManaged":{
    "replicas":[
      {
        "location":"us-east1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
        }
      },
      {
        "location":"us-central1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
        }
      }
    ]
  }
}
EOF
gcloud secrets create "my-ummr-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

Tetapkan nilai replication.userManaged.replicas.customerManagedEncryption.kmsKeyName ke nama resource untuk kunci CMEK.

curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets?secretId=my-ummr-secret" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
  "replication":{
    "userManaged":{
      "replicas":[
        {
          "location":"us-east1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
          }
        },
        {
          "location":"us-central1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
          }
        }
      ]
    }
  }
}
EOF

Sekarang, setiap kali versi secret dibuat dalam secret tersebut, payload secret akan otomatis dienkripsi menggunakan kunci sebelum ditulis ke penyimpanan persisten, selama identitas layanan memiliki akses ke kunci CMEK. Jika identitas layanan kehilangan akses atau jika kunci tidak tersedia, upaya untuk membuat versi secret baru atau mengakses secret yang ada akan menampilkan error.

Tambahkan versi secret baru. Perhatikan bahwa Anda tidak menentukan nama resource kunci Cloud KMS; nama tersebut dibaca dari metadata secret.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

echo -n "SECRET_DATA" | gcloud secrets versions add "my-ummr-secret" \
    --project "SM_PROJECT_ID" \
    --data-file -

Versi secret dibuat, meskipun pemanggil tidak memiliki akses langsung untuk menggunakan kunci CMEK. Identitas layanan untuk Secret Manager, bukan pemanggil, bertanggung jawab untuk mengenkripsi dan mendekripsi secret saat membaca atau menulisnya.

Demikian pula, Anda tidak memerlukan akses langsung ke kunci CMEK untuk mengakses secret. Identitas layanan mengakses kunci dan mengenkripsi atau mendekripsi secret atas nama Anda.

Akses versi secret yang baru saja Anda buat.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets versions access "latest" \
    --project "SM_PROJECT_ID" \
    --secret "my-ummr-secret"

Memperbarui konfigurasi CMEK

Buat dua kunci KMS simetris baru di region yang sama dengan secret.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"
gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Berikan identitas layanan untuk akses Secret Manager guna mengenkripsi dan mendekripsi menggunakan kunci CMEK baru. Perintah ini memberikan peran Pengenkripsi / Pendekripsi Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci Cloud KMS my-other-key ke identitas layanan.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Ubah konfigurasi CMEK pada secret dengan memperbarui replikasi pada secret dengan nama resource kunci Cloud KMS baru.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets replication update "my-ummr-secret" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --location us-east1 \
    --project "SM_PROJECT_ID"
gcloud secrets replication update "my-ummr-secret" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --location us-central1 \
    --project "SM_PROJECT_ID"

Untuk memperbarui beberapa kunci dalam secret secara bersamaan, Anda dapat mendapatkan dan menetapkan kebijakan replikasi melalui file.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets replication get "my-ummr-secret" \
    --project "SM_PROJECT_ID" \
    --format=json > ./replication-policy.json

Perbarui file untuk mencerminkan konfigurasi CMEK yang diinginkan di editor pilihan Anda. Kemudian, tetapkan kebijakan baru:

gcloud secrets replication set "my-ummr-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/my-ummr-secret?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication":{
    "userManaged":{
      "replicas":[
        {
          "location":"us-east1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
          }
        },
        {
          "location":"us-central1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
          }
        }]
      }
    }
  }
EOF

Melihat konfigurasi CMEK versi secret

Untuk memeriksa metadata versi secret, termasuk apakah versi secret diaktifkan CMEK dan nama resource versi kunci CMEK, lihat metadatanya.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets versions describe "latest" \
    --secret "SECRET_ID" \
    --project "SM_PROJECT_ID"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets/SECRET_ID/versions/latest" \
    --request "GET" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json"

Tindakan ini akan menampilkan nama resource Cloud KMS lengkap dari versi kunci yang digunakan untuk mengenkripsi versi secret.

{
  "name": "projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/1",
  "createTime": "2021-07-...",
  "state": "ENABLED",
  "replicationStatus": {
    "automatic": {
      "customerManagedEncryption": {
        "kmsKeyVersionName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key/cryptoKeyVersions/1"
      }
    }
  }
}

Menambahkan kunci Cloud EKM ke kebijakan CMEK

Bagian ini membahas cara menambahkan kunci Cloud EKM ke kebijakan CMEK. Langkah-langkah ini memungkinkan kunci Cloud EKM digunakan untuk mengenkripsi atau mendekripsi secret.

Karena Cloud EKM saat ini tidak mendukung multi-region global, kunci Cloud EKM hanya dapat digunakan dengan secret yang dikonfigurasi untuk replikasikan yang dikelola pengguna.

Buat kunci simetris di region Cloud KMS us-central1 (atau region apa pun kecuali global). Contoh ini membuat key ring baru yang disebut secret-manager-cmek-ekm, lalu membuat kunci baru yang disebut my-ekm-key di key ring.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

Buat key ring baru:

gcloud kms keyrings create "secret-manager-cmek-ekm" \
  --project "KMS_PROJECT_ID" \
  --location "us-central1"

Buat kunci di key ring tersebut:

gcloud kms keys create "my-ekm-key" \
  --keyring "secret-manager-cmek-ekm" \
  --location "us-central1" \
  --purpose "encryption" \
  --protection-level "external" \
  --skip-initial-version-creation \
  --default-algorithm "external-symmetric-encryption"

Selanjutnya, buat versi baru my-ekm-key menggunakan URI eksternal kunci. Untuk informasi selengkapnya tentang URI eksternal untuk kunci Cloud EKM, lihat Membuat kunci eksternal.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys versions create \
  --key "my-ekm-key" \
  --keyring "secret-manager-cmek-ekm" \
  --location "us-central1" \
  --external-key-uri EXTERNAL_KEY_URI \
  --primary

Berikan identitas layanan untuk akses Secret Manager guna mengenkripsi dan mendekripsi menggunakan kunci eksternal. Perintah ini memberikan peran Pengenkripsi / Pendekripsi Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) di my-ekm-key ke identitas layanan.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud kms keys add-iam-policy-binding "my-ekm-key" \
  --project "KMS_PROJECT_ID" \
  --location "us-central1" \
  --keyring "secret-manager-cmek-ekm" \
  --member "serviceAccount:SM_SERVICE_IDENTITY" \
  --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Buat secret yang mengaktifkan CMEK yang menggunakan kunci Cloud EKM.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

cat <<EOF > ./replication-policy.json
{
  "userManaged":{
    "replicas":[
      {
        "location":"us-central1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek-ekm/cryptoKeys/my-ekm-key"
        }
      }
    ]
  }
}
EOF
gcloud secrets create "my-ekm-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

Sekarang, setiap kali versi secret dibuat di my-ekm-secret, payload secret akan otomatis dienkripsi menggunakan kunci Cloud EKM sebelum ditulis ke penyimpanan persisten, selama identitas layanan memiliki akses ke kunci tersebut. Jika identitas layanan kehilangan akses atau jika kunci tidak tersedia, upaya untuk membuat versi secret baru atau mengakses secret yang ada akan menampilkan error.

Tambahkan versi secret baru. Perhatikan bahwa nama resource kunci dibaca dari metadata secret.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

echo -n "SECRET_DATA" | gcloud secrets versions add "my-ekm-secret" \
    --project "SM_PROJECT_ID" \
    --data-file -

Versi secret dibuat, meskipun pemanggil tidak memiliki akses langsung untuk menggunakan kunci. Identitas layanan untuk Secret Manager, bukan pemanggil, bertanggung jawab untuk mengenkripsi dan mendekripsi secret saat membaca atau menulisnya.

Akses versi secret yang baru saja Anda buat. Di sinilah identitas layanan mengakses kunci dan mengenkripsi atau mendekripsi secret atas nama Anda.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets versions access "latest" \
  --project "SM_PROJECT_ID" \
  --secret "my-ekm-secret"

Menonaktifkan CMEK

Hapus konfigurasi CMEK dari secret dengan memperbarui kebijakan replikasi.

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets replication update "SECRET_ID" --remove-cmek \
    --project "SM_PROJECT_ID"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication":{
    "automatic":{}
  }
}
EOF

Langkah selanjutnya

  • Pelajari CMEK lebih lanjut.