Membuat jadwal rotasi di Secret Manager

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:

  1. Diberikan oleh pengguna saat membuat atau memperbarui secret.

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

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