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 yang terintegrasi dengan CMEK, termasuk Secret Manager. Dengan menggunakan kunci Cloud KMS, Anda dapat mengontrol tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batasan 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, Anda yang mengontrol dan mengelola kunci ini di Cloud KMS.

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

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

CMEK dengan Autokey Cloud KMS

Anda dapat membuat CMEK secara manual untuk melindungi resource Secret Manager atau menggunakan Autokey Cloud KMS. 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 dibuat jika belum ada dan diberi peran Identity and Access Management (IAM) yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Autokey.

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

Untuk mempelajari cara menggunakan CMEK yang dibuat secara manual untuk melindungi resource Secret Manager Anda, 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 Anda, lihat Menggunakan Autokey dengan resource Secret Manager.

Cara kerja CMEK di Secret Manager

Sebelum menulis versi rahasia 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 Secret Manager.

Saat menggunakan CMEK untuk Secret Manager, KEK disebut kunci CMEK dan merupakan kunci simetris yang Anda kelola dalam Cloud KMS. Kunci CMEK harus berada di lokasi yang sama Google Cloud dengan replika versi rahasia 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 API v1 dan Google Cloud CLI.

Sebelum memulai

Anda dapat memilih untuk menyimpan semua resource dalam project yang sama atau menyimpan rahasia dan kunci dalam project yang berbeda. 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 pada panduan memulai Secret Manager.
  • Cloud KMS:

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

Tetapkan variabel berikut ke 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 Anda menggunakan kunci Cloud EKM, Anda tidak dapat mengonfigurasi secret untuk menggunakan replikasi 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 simetris Cloud KMS di region globalCloud KMS, 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 akses identitas layanan untuk 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 versi 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 rahasia baru atau mengakses versi yang ada akan menampilkan error.

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

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 rahasia 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"

Beri 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 rahasia yang dikonfigurasi dengan kebijakan replikasi yang dikelola pengguna. Dengan kebijakan replikasi yang dikelola pengguna, Anda dapat mengontrol Google Cloud lokasi tempat secret disimpan. Secret selalu dapat diakses dari setiap Google Cloud lokasi.

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

Di setiap dari dua region, buat key ring dan kunci Cloud KMS dengan tujuan enkripsi, atau gunakan kunci yang ada. Contoh ini membuat key ring baru bernama "secret-manager-cmek", lalu membuat kunci bernama "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 izin identitas layanan untuk Secret Manager guna mengenkripsi dan mendekripsi menggunakan kunci CMEK dengan memberikan peran Cloud KMS Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) untuk setiap kunci CMEK secara terpisah 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 mendukung CMEK dengan replikasi yang dikelola pengguna. 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.

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.kmsKeyNameke 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 versi 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 rahasia baru atau mengakses versi yang ada akan menampilkan error.

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

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 rahasia 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"

Beri 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 mengambil 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 untuk 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 rahasia.

{
  "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 replikasi yang dikelola pengguna.

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

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 mengetahui 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 akses identitas layanan untuk 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 mendukung 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 versi secret tersebut 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 rahasia baru atau mengakses versi 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 rahasia 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 berikutnya

  • Pelajari CMEK lebih lanjut.