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.