Secret Manager mendukung jadwal rotasi di secret. Secret Manager mengirim pesan ke topik Pub/Sub yang dikonfigurasi berdasarkan secret berdasarkan frekuensi rotasi dan waktu rotasi yang diberikan. Topik ini menunjukkan cara menyiapkan jadwal satu kali atau berkala pada secret Anda untuk menerima notifikasi saat tiba waktunya untuk merotasi secret.
Rahasia yang dirotasi secara berkala membantu:
- Membatasi durasi rahasia yang bocor tetap valid dan mengekspos kerentanan.
- Terus lakukan alur rotasi untuk memastikan keandalan proses.
Bagaimana cara kerjanya?
Secret Manager mengirim pesan SECRET_ROTATE
ke topik Pub/Sub yang dikonfigurasi di secret di next_rotation_time
secret. Stempel waktu ini ditetapkan dengan salah satu dari dua cara berikut:
Disediakan oleh pengguna saat membuat atau memperbarui rahasia.
Jika
rotation_period
diberikan, Secret Manager akan mengirim pesanSECRET_ROTATE
setelahrotation_period
telah berlalu.next_rotation_time
akan diupdate untuk mencerminkan waktu rotasi berikutnya yang baru.
Anda harus mengonfigurasi pelanggan Pub/Sub untuk menerima dan menindaklanjuti pesan SECRET_ROTATE
. Jika perlu, implementasikan alur kerja tambahan seperti menambahkan versi secret baru dan memicu deployment aplikasi.
Notes
Pengelolaan 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 boleh disetel ke kurang dari lima menit pada masa mendatang. Durasirotation_period
tidak boleh kurang dari satu jam. Untuk mengetahui panduan pemformatan stempel waktu, lihat referensi tanggal dan waktu gcloud.Error Pengiriman: Secret Manager akan otomatis mencoba kembali upaya yang gagal untuk mengirim pesan. Secret Manager tidak memberikan jaminan terkait pengiriman jika ada kesalahan konfigurasi terkait konfigurasi topik atau rahasia, izin, atau kuota.
Rotasi yang sedang berlangsung harus selesai sebelum rotasi lain dapat dimulai untuk mencegah rotasi serentak agar tidak menghasilkan perilaku yang tidak terduga. Notifikasi dianggap sedang berjalan sementara Secret Manager mencoba mengirim pesan ke Pub/Sub. Rotasi terjadwal dilewati jika ada rotasi yang sedang berlangsung. Secret Manager akan otomatis mencoba kembali upaya yang gagal untuk mengirim pesan selama maksimal tujuh hari, setelah itu rotasi akan dibatalkan.
Contoh
Mengonfigurasi rotasi pada secret
Buat rahasia 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 meliputi: rotation
, rotation.next_rotation_time
, rotation.rotation_period
.
Mengupdate next_rotation_time
rahasia:
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
{
"next_rotation_time": "2040-06-01T09:00:00Z"
}
EOF
Menonaktifkan rotasi pada secret
Hapus next_rotation_time
rahasia:
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
Hapus 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 serentak optimis.