Membuat jadwal rotasi

Dengan Secret Manager, Anda dapat menjadwalkan rotasi berkala secret. Secret Manager melakukannya dengan mengirimkan notifikasi ke topik Pub/Sub yang terkait dengan secret Anda, berdasarkan frekuensi dan waktu rotasi yang Anda tentukan. Halaman ini menjelaskan cara menyiapkan jadwal rotasi ini.

Cara kerja notifikasi rotasi rahasia

Secret Manager memicu pesan SECRET_ROTATE ke topik Pub/Sub yang ditetapkan di next_rotation_time secret. Ada dua cara untuk menentukan stempel waktu ini:

  1. Didefinisikan pengguna: Anda dapat menentukan next_rotation_time saat membuat atau memperbarui secret.

  2. Periode rotasi: Jika Anda menentukan rotation_period, Pengelola Secret akan otomatis menghitung next_rotation_time. Secret Manager mengirimkan pesan SECRET_ROTATE setelah rotation_period yang ditentukan berlalu, lalu memperbarui next_rotation_time untuk menjadwalkan rotasi berikutnya.

Anda harus mengonfigurasi pelanggan Pub/Sub untuk menerima dan menindaklanjuti pesan SECRET_ROTATE. Anda mungkin juga perlu menyiapkan alur kerja tambahan sebagai respons terhadap notifikasi ini, seperti membuat secret versi baru dan men-deploy perubahan ke aplikasi Anda.

Persyaratan dan pertimbangan untuk jadwal rotasi secret

  • 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 ke depan.

  • rotation_period tidak boleh kurang dari satu jam. Untuk panduan pemformatan stempel waktu, lihat referensi tanggal dan waktu Google Cloud

  • Meskipun Secret Manager otomatis mencoba ulang upaya pengiriman pesan yang gagal, kami tidak dapat menjamin pengiriman yang berhasil jika ada kesalahan konfigurasi terkait secret, konfigurasi 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 dalam pengiriman saat Secret Manager mencoba mengirim pesan ke Pub/Sub. Rotasi terjadwal akan dilewati jika ada rotasi yang sedang berlangsung. Secret Manager akan otomatis mencoba ulang upaya yang gagal untuk mengirim pesan hingga tujuh hari, setelah itu rotasi akan dibatalkan.

Mengonfigurasi rotasi pada secret

Anda dapat mengonfigurasi jadwal rotasi menggunakan konsol Google Cloud, Google Cloud CLI, atau Secret Manager API.

Konsol

  1. Buka halaman Secret Manager di konsol Google Cloud.

    Buka Secret Manager

  2. Di halaman Secret Manager, klik tab Regional secret, lalu klik Create regional secret.

  3. Di halaman Buat secret regional, masukkan nama untuk secret di kolom Nama.

  4. Masukkan nilai untuk secret (misalnya, abcd1234). Anda juga dapat mengupload file teks yang berisi nilai secret menggunakan opsi Upload file. Tindakan ini akan otomatis membuat versi secret.

  5. Pilih lokasi penyimpanan secret regional dari daftar Region.

  6. Buka bagian Rotasi, lalu centang kotak Tetapkan periode rotasi.

  7. Di daftar Rotation period, pilih dari opsi default atau pilih Custom untuk mengonfigurasi jadwal rotasi Anda sendiri.

  8. Di kolom Starting on, masukkan tanggal dan waktu mulai periode rotasi.

  9. Klik Buat secret.

gcloud

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret atau ID yang sepenuhnya memenuhi syarat untuk secret.
  • LOCATION: Lokasi secret Google Cloud.
  • NEXT_ROTATION_TIME: stempel waktu saat rotasi pertama selesai dalam format ISO 8601, misalnya 2021-06-01T09:00:00Z.
  • ROTATION_PERIOD: interval, dalam detik, untuk memutar kunci. Misalnya, untuk merotasi kunci setiap 2592000 detik, Anda akan menetapkan nilai 2592000s.
  • FULL_TOPIC_NAME: nama lengkap topik Pub/Sub Anda dalam format projects/your-project-id/topics/your-topic-name.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
  --next-rotation-time="NEXT_ROTATION_TIME" \
  --rotation-period="ROTATION_PERIOD" \
  --topics="FULL_TOPIC_NAME"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
  --next-rotation-time="NEXT_ROTATION_TIME" `
  --rotation-period="ROTATION_PERIOD" `
  --topics="FULL_TOPIC_NAME"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
  --next-rotation-time="NEXT_ROTATION_TIME" ^
  --rotation-period="ROTATION_PERIOD" ^
  --topics="FULL_TOPIC_NAME"

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Lokasi secret Google Cloud
  • PROJECT_ID: project ID Google Cloud
  • SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret
  • TOPIC_NAME: nama topik

Metode HTTP dan URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

Isi JSON permintaan:

{
  "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"},
  "rotation":
    {
      "next_rotation_time": "2021-06-01T09:00:00Z",
      "rotation_period" : '2592000s'
    },
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"1621434abc8dc4\"",
  "rotation": {
    "nextRotationTime": "2024-09-10T09:00:00Z",
    "rotationPeriod": "2592000s"
  }
}

Memperbarui setelan rotasi secret

Anda dapat memperbarui setelan rotasi berikut saat membuat permintaan pembaruan:

  • rotation: Ini mengacu pada seluruh konfigurasi rotasi secret.

  • rotation.next_rotation_time: Ini secara khusus menargetkan stempel waktu yang menunjukkan kapan rotasi berikutnya mungkin terjadi.

  • rotation.rotation_period: Ini menentukan durasi antara setiap rotasi.

Untuk memperbarui setelan rotasi secret, gunakan salah satu metode berikut:

Konsol

  1. Buka halaman Secret Manager di konsol Google Cloud.

    Buka Secret Manager

  2. Di halaman Secret Manager, klik tab Regional secrets.

  3. Temukan secret yang ingin diedit, lalu klik menu Tindakan yang terkait dengan secret tersebut. Di menu Tindakan, klik Edit.

  4. Buka bagian Rotasi. Perbarui periode rotasi sesuai kebutuhan, lalu klik Perbarui secret.

gcloud

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret atau ID yang sepenuhnya memenuhi syarat untuk secret.
  • LOCATION: Lokasi secret Google Cloud.
  • NEXT_ROTATION_TIME: stempel waktu saat rotasi pertama selesai dalam format ISO 8601, misalnya 2021-06-01T09:00:00Z.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --next-rotation-time="NEXT_ROTATION_TIME"

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Lokasi secret Google Cloud.
  • PROJECT_ID: project ID Google Cloud.
  • SECRET_ID: ID secret atau ID yang sepenuhnya memenuhi syarat untuk secret.
  • NEXT_ROTATION_TIME: stempel waktu saat rotasi pertama selesai dalam format ISO 8601, misalnya 2021-06-01T09:00:00Z.

Metode HTTP dan URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time

Isi JSON permintaan:

{
  "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"}
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"1621434abc8dc4\"",
  "rotation": {
    "nextRotationTime": "2024-09-10T09:00:00Z",
    "rotationPeriod": "2592000s"
  }
}

Menonaktifkan rotasi pada secret

Untuk menonaktifkan rotasi secret, gunakan salah satu metode berikut:

Konsol

  1. Buka halaman Secret Manager di konsol Google Cloud.

    Buka Secret Manager

  2. Di halaman Secret Manager, klik tab Regional secrets.

  3. Temukan secret yang ingin diedit, lalu klik menu Tindakan yang terkait dengan secret tersebut. Di menu Tindakan, klik Edit.

  4. Buka bagian Rotasi. Hapus centang pada kotak Set rotation period, lalu klik Update secret.

gcloud

Menghapus next_rotation_time secret

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret
  • LOCATION: Lokasi secret Google Cloud

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --remove-next-rotation-time

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --remove-next-rotation-time

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --remove-next-rotation-time

Menghapus jadwal rotasi secret. Tindakan ini akan menghapus next_rotation_time dan rotation_period.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret
  • LOCATION: Lokasi secret Google Cloud

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --remove-rotation-schedule

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --remove-rotation-schedule

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --remove-rotation-schedule

REST

Menghapus waktu rotasi secret berikutnya

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Lokasi secret Google Cloud
  • PROJECT_ID: project ID Google Cloud
  • SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret

Metode HTTP dan URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time

Isi JSON permintaan:

{}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"16214530fa18d3\""
}

Menghapus jadwal rotasi secret. Tindakan ini akan menghapus waktu rotasi berikutnya dan periode rotasi.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Lokasi secret Google Cloud
  • PROJECT_ID: project ID Google Cloud
  • SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret

Metode HTTP dan URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation

Isi JSON permintaan:

{}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip dengan berikut ini:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"16214530fa18d3\""
}

Langkah selanjutnya