Dengan Secret Manager, Anda dapat menjadwalkan rotasi berkala secret Anda. 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 ditentukan pada next_rotation_time
rahasia. Ada dua cara untuk menentukan stempel waktu ini:
-
Buatan pengguna: Anda dapat menentukan
next_rotation_time
saat membuat atau memperbarui secret. -
Periode rotasi: Jika Anda menentukan
rotation_period
, Secret Manager akan otomatis menghitungnext_rotation_time
. Secret Manager mengirim pesanSECRET_ROTATE
setelahrotation_period
yang ditentukan berlalu, lalu mengupdatenext_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
versi baru rahasia dan men-deploy perubahan ke aplikasi Anda.
Persyaratan dan pertimbangan untuk jadwal rotasi secret
-
Topik Pub/Sub harus dikonfigurasi pada 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 kurang dari lima menit ke depan. -
rotation_period
tidak boleh berdurasi kurang dari satu jam. Untuk panduan pemformatan stempel waktu, lihat referensi tanggal dan waktuGoogle Cloud -
Meskipun Secret Manager otomatis mencoba ulang pengiriman pesan yang gagal, kami tidak dapat menjamin keberhasilan pengiriman 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 proses pengiriman saat Secret Manager mencoba mengirim pesan ke Pub/Sub. Rotasi terjadwal dilewati jika ada rotasi yang sedang berlangsung. Secret Manager akan otomatis mencoba kembali pengiriman pesan yang gagal hingga tujuh hari, setelah itu rotasi akan dibatalkan.
Mengonfigurasi rotasi pada secret
Anda dapat mengonfigurasi jadwal rotasi menggunakan Google Cloud konsol, Google Cloud CLI, atau Secret Manager API.
Konsol
-
Di konsol Google Cloud , buka halaman Secret Manager.
-
Di halaman Secret Manager, klik Buat secret.
-
Di halaman Buat secret, masukkan nama untuk secret di kolom Name.
-
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. -
Buka bagian Rotasi, lalu centang kotak Tetapkan periode rotasi.
-
Dalam daftar Periode rotasi, pilih dari opsi default atau pilih Kustom untuk mengonfigurasi jadwal rotasi Anda sendiri.
-
Di kolom Mulai pada, 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 memenuhi syarat sepenuhnya untuk secret.
- NEXT_ROTATION_TIME: stempel waktu saat penyelesaian rotasi pertama dalam format ISO 8601, misalnya
2021-06-01T09:00:00Z
. - ROTATION_PERIOD: interval, dalam detik, untuk mengganti kunci. Misalnya, untuk mengganti 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 \ --replication-policy "automatic" \ --next-rotation-time="NEXT_ROTATION_TIME" \ --rotation-period="ROTATION_PERIOD" \ --topics="FULL_TOPIC_NAME"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --next-rotation-time="NEXT_ROTATION_TIME" ` --rotation-period="ROTATION_PERIOD" ` --topics="FULL_TOPIC_NAME"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --next-rotation-time="NEXT_ROTATION_TIME" ^ --rotation-period="ROTATION_PERIOD" ^ --topics="FULL_TOPIC_NAME"
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud project ID
- SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret
- TOPIC_NAME: nama topik
Metode HTTP dan URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
Isi JSON permintaan:
{ "replication":{ "automatic":{} }, "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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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 dapat terjadi. -
rotation.rotation_period
: Ini menentukan durasi antara setiap rotasi.
Untuk memperbarui setelan rotasi rahasia, gunakan salah satu metode berikut:
Konsol
-
Di konsol Google Cloud , buka halaman Secret Manager.
-
Cari secret yang ingin Anda edit, 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 rahasia.
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret.
- NEXT_ROTATION_TIME: stempel waktu saat penyelesaian rotasi pertama dalam format ISO 8601, misalnya
2021-06-01T09:00:00Z
.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud secrets update SECRET_ID \ --next-rotation-time="NEXT_ROTATION_TIME"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --next-rotation-time="NEXT_ROTATION_TIME"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --next-rotation-time="NEXT_ROTATION_TIME"
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud project ID.
- SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret.
- NEXT_ROTATION_TIME: stempel waktu saat penyelesaian rotasi pertama dalam format ISO 8601, misalnya
2021-06-01T09:00:00Z
.
Metode HTTP dan URL:
PATCH https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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 rahasia, gunakan salah satu metode berikut:
Konsol
-
Di konsol Google Cloud , buka halaman Secret Manager.
-
Cari secret yang ingin Anda edit, lalu klik menu
Tindakan yang terkait dengan secret tersebut. Di menu Tindakan, klik Edit. -
Buka bagian Rotasi. Hapus centang pada kotak Setel periode rotasi, lalu klik Perbarui 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
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud secrets update SECRET_ID \ --remove-next-rotation-time
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --remove-next-rotation-time
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --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
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud secrets update SECRET_ID \ --remove-rotation-schedule
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --remove-rotation-schedule
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --remove-rotation-schedule
REST
Menghapus waktu rotasi berikutnya secret
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud project ID
- SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret
Metode HTTP dan URL:
PATCH https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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:
- PROJECT_ID: Google Cloud project ID
- SECRET_ID: ID secret atau ID yang memenuhi syarat sepenuhnya untuk secret
Metode HTTP dan URL:
PATCH https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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 berikutnya
- Pelajari cara mengaktifkan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) untuk Secret Manager.
- Pelajari cara menggunakan ETag untuk kontrol konkurensi optimis.