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:
-
Didefinisikan pengguna: Anda dapat menentukan
next_rotation_time
saat membuat atau memperbarui secret. -
Periode rotasi: Jika Anda menentukan
rotation_period
, Pengelola Secret akan otomatis menghitungnext_rotation_time
. Secret Manager mengirimkan pesanSECRET_ROTATE
setelahrotation_period
yang ditentukan berlalu, lalu memperbaruinext_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 jikarotation_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
-
Buka halaman Secret Manager di konsol Google Cloud.
-
Di halaman Secret Manager, klik tab Regional secret, lalu klik Create regional secret.
-
Di halaman Buat secret regional, masukkan nama untuk secret di kolom Nama.
-
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. -
Pilih lokasi penyimpanan secret regional dari daftar Region.
-
Buka bagian Rotasi, lalu centang kotak Tetapkan periode rotasi.
-
Di daftar Rotation period, pilih dari opsi default atau pilih Custom untuk mengonfigurasi jadwal rotasi Anda sendiri.
-
Di kolom Starting on, masukkan tanggal dan waktu mulai periode rotasi.
-
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
-
Buka halaman Secret Manager di konsol Google Cloud.
-
Di halaman Secret Manager, klik tab Regional secrets.
-
Temukan secret yang ingin diedit, lalu klik menu
Tindakan yang terkait dengan secret tersebut. Di menu Tindakan, klik Edit. -
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
-
Buka halaman Secret Manager di konsol Google Cloud.
-
Di halaman Secret Manager, klik tab Regional secrets.
-
Temukan secret yang ingin diedit, lalu klik menu
Tindakan yang terkait dengan secret tersebut. Di menu Tindakan, klik Edit. -
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\"" }