Secret Manager mendukung jadwal rotasi pada secret. Secret Manager mengirim pesan ke topik Pub/Sub yang dikonfigurasi pada secret berdasarkan frekuensi rotasi dan waktu rotasi yang diberikan. Topik ini menunjukkan cara menyiapkan jadwal satu kali atau berkala pada secret untuk menerima notifikasi saat tiba waktunya untuk memutar secret.
Memutar secret secara berkala membantu:
- Batasi durasi rahasia yang bocor tetap valid dan mengekspos kerentanan.
- Lakukan alur rotasi secara terus-menerus untuk memastikan keandalan proses.
Bagaimana cara kerjanya?
Secret Manager mengirim pesan SECRET_ROTATE
ke topik Pub/Sub
yang dikonfigurasi pada secret di next_rotation_time
secret. Stempel waktu ini
ditetapkan dengan salah satu dari dua cara:
Diberikan oleh pengguna saat membuat atau memperbarui secret.
Jika
rotation_period
diberikan, Secret Manager akan mengirim pesanSECRET_ROTATE
setelahrotation_period
berlalu.next_rotation_time
akan diperbarui untuk mencerminkan waktu rotasi berikutnya yang baru.
Anda harus mengonfigurasi pelanggan Pub/Sub untuk menerima dan menindaklanjuti pesan SECRET_ROTATE
. Jika perlu, terapkan alur kerja tambahan seperti menambahkan versi secret baru
dan memicu deployment aplikasi.
Catatan
Mengelola kebijakan rotasi hanya tersedia di Secret Manager
v1
API dan Google Cloud CLI.Topik Pub/Sub harus dikonfigurasi di secret. Untuk mempelajari cara membuat topik dan langganan Pub/Sub, lihat panduan memulai Pub/Sub. Untuk mempelajari cara mengonfigurasi topik pada secret, lihat Notifikasi Peristiwa untuk Secret Manager.
next_rotation_time
harus ditetapkan jikarotation_period
ditentukan.next_rotation_time
tidak dapat disetel ke kurang dari lima menit di masa mendatang. Durasirotation_period
tidak boleh kurang dari satu jam. Untuk panduan pemformatan stempel waktu, lihat referensi tanggal waktu gcloud.Error Pengiriman: Secret Manager akan otomatis mencoba lagi upaya yang gagal untuk mengirim pesan. Secret Manager tidak memberikan jaminan terkait pengiriman jika terjadi kesalahan konfigurasi terkait konfigurasi secret atau topik, izin, atau kuota.
Rotasi yang sedang berlangsung harus selesai sebelum rotasi lain dapat dimulai untuk mencegah rotasi serentak menghasilkan perilaku yang tidak terduga. Notifikasi dianggap sedang dikirim saat Secret Manager mencoba mengirim pesan ke Pub/Sub. Rotasi terjadwal akan dilewati jika ada rotasi yang sedang berlangsung. Secret Manager akan otomatis mencoba kembali upaya yang gagal untuk mengirim pesan hingga tujuh hari, setelah itu rotasi akan dibatalkan.
Contoh
Mengonfigurasi rotasi pada secret
Buat secret dengan next_rotation_time
yang dirotasi setiap 30 hari mulai 1 Juni 2021:
gcloud
gcloud secrets create secret-id \ --replication-policy "automatic" \ --next-rotation-time="2021-06-01T09:00:00Z" \ --rotation-period="2592000s" \ --topics="full-topic-name"
API
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_ID}" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-binary @- <<EOF
{
"replication":{
"automatic":{}
},
"topics": {"name" : "projects/${PROJECT_ID}/topics/${TOPIC_NAME}"},
"rotation":
{
"next_rotation_time": "2021-06-01T09:00:00Z",
"rotation_period" : '2592000s'
},
}
EOF
Memperbarui setelan rotasi secret
Jalur updateMask yang valid untuk rotasi mencakup: rotation
, rotation.next_rotation_time
, rotation.rotation_period
.
Perbarui next_rotation_time
secret:
gcloud
gcloud secrets update secret-id \ --next-rotation-time "2022-06-01T09:00:00Z"
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"rotation": {"next_rotation_time": "2040-06-01T09:00:00Z"}
}
EOF
Menonaktifkan rotasi pada secret
Menghapus next_rotation_time
secret:
gcloud
gcloud secrets update secret-id \ --remove-next-rotation-time
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Menghapus jadwal rotasi secret. Tindakan ini akan menghapus next_rotation_time
dan rotation_period
.
gcloud
gcloud secrets update secret-id \ --remove-rotation-schedule
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Langkah selanjutnya
Pelajari cara mengaktifkan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) untuk Secret Manager.
Pelajari cara menggunakan ETag untuk kontrol konkurensi optimis.