Membuat jadwal rotasi di Secret Manager

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:

  1. Disediakan oleh pengguna saat membuat atau memperbarui rahasia.

  2. Jika rotation_period diberikan, Secret Manager akan mengirim pesan SECRET_ROTATE setelah rotation_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 jika rotation_period ditentukan.

  • next_rotation_time tidak boleh disetel ke kurang dari lima menit pada masa mendatang. Durasi rotation_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