Menyiapkan notifikasi pada secret

Halaman ini menjelaskan cara mengonfigurasi dan menggunakan notifikasi peristiwa untuk secret Anda di Secret Manager.

Ringkasan

Secret Manager terintegrasi dengan Pub/Sub untuk memberikan notifikasi peristiwa terkait perubahan pada secret dan versi secret. Anda dapat menggunakan notifikasi ini untuk memulai alur kerja, seperti memulai ulang aplikasi saat versi secret baru ditambahkan, atau memberi tahu engineer keamanan saat secret dihapus. Untuk mengetahui informasi selengkapnya tentang cara menggunakan notifikasi ini untuk memulai alur kerja, lihat dokumentasi Pub/Sub.

Cara kerja notifikasi peristiwa di Secret Manager

Secret dapat dikonfigurasi dengan daftar hingga 10 topik Pub/Sub. Setiap kali operasi dilakukan yang mengubah secret atau salah satu versinya, Secret Manager akan otomatis memublikasikan pesan ke setiap topik Pub/Sub pada secret tersebut. Panggilan Get, List, dan Access tidak menghasilkan publikasi pesan.

Pesan Pub/Sub memiliki serangkaian pasangan nilai kunci atribut yang berisi metadata tentang peristiwa, serta kolom data yang berisi serialisasi JSON lengkap dari resource Secret atau SecretVersion yang dibuat atau diubah. JSON ini adalah string yang dienkode UTF-8 yang merepresentasikan resource Secret atau SecretVersion dalam bentuk yang persis seperti yang ditentukan oleh Secret Manager public API, yang dienkode dalam JSON seperti yang ditentukan dalam Pemetaan JSON proto3.

Jenis peristiwa

Berikut adalah daftar jenis peristiwa yang didukung oleh Secret Manager.

Jenis peristiwa Deskripsi
SECRET_CREATE Dikirim saat secret baru berhasil dibuat.
SECRET_UPDATE Dikirim saat rahasia baru berhasil diperbarui.
SECRET_DELETE Dikirim saat secret dihapus, baik karena permintaan yang dimulai pengguna maupun karena masa berlaku secret berakhir.
SECRET_VERSION_ADD Dikirim saat versi rahasia baru berhasil ditambahkan.
SECRET_VERSION_ENABLE Dikirim saat versi secret diaktifkan.
SECRET_VERSION_DISABLE Dikirim saat versi secret dinonaktifkan.
SECRET_VERSION_DESTROY Dikirim saat versi secret dihancurkan.
SECRET_VERSION_DESTROY_SCHEDULED Dikirim saat durasi penundaan penghancuran dikonfigurasi pada rahasia dan pengguna mencoba menghancurkan versi rahasia.
SECRET_ROTATE Dikirim saat waktunya merotasi secret. Lihat Membuat jadwal rotasi untuk mengetahui informasi selengkapnya.
TOPIC_CONFIGURED

Ini adalah pesan pengujian tanpa isi atau atribut selain eventType: TOPIC_CONFIGURED. Pesan ini dikirim saat secret dibuat atau diupdate dengan daftar topik Pub/Sub, tetapi tidak menunjukkan bahwa operasi berhasil.

Pesan SECRET_CREATE atau SECRET_UPDATE akan dikirim segera setelahnya jika operasi berhasil.

Setiap kali topik diperbarui pada secret, pesan TOPIC_CONFIGURED akan dikirim ke semua topik pada secret, termasuk topik yang sudah ada.

Format notifikasi

Notifikasi yang dikirim ke topik Pub/Sub terdiri dari dua bagian:

  • Atribut: Kumpulan key-value pair yang mendeskripsikan acara.

  • Data: String yang berisi metadata objek yang diubah.

Atribut

Atribut adalah key-value pair yang terdapat dalam notifikasi yang dikirim oleh Secret Manager ke topik Pub/Sub Anda. Semua notifikasi selain TOPIC_CONFIGURED pesan pengujian selalu berisi serangkaian key-value pair berikut, terlepas dari data notifikasi:

Nama atribut Contoh Deskripsi
eventType SECRET_CREATE Jenis peristiwa yang baru saja terjadi. Lihat Jenis peristiwa untuk mengetahui daftar kemungkinan nilai.
dataFormat JSON_API_V1 Format data objek.
secretId projects/p/secrets/my-secret Nama lengkap resource rahasia tempat peristiwa terjadi.
timestamp 2021-01-20T11:17:45.081104-08:00 Waktu terjadinya peristiwa.

Selain itu, notifikasi terkadang berisi serangkaian key-value pair berikut:

Nama atribut Contoh Deskripsi
versionId projects/p/secrets/my-secret/versions/456

Nama versi rahasia tempat peristiwa terjadi.

Ini hanya ada di notifikasi peristiwa SECRET_VERSION_ADD, SECRET_VERSION_ENABLE, SECRET_VERSION_DISABLE, dan SECRET_VERSION_DESTROY.

deleteType REQUESTED Apakah penghapusan diminta oleh pengguna (REQUESTED) atau karena masa berlaku rahasia berakhir (EXPIRATION). Hanya ada di notifikasi peristiwa SECRET_DELETE.

Data

Kolom data adalah string UTF-8 yang berisi metadata objek yang diubah. Data berupa secret atau versi secret.

Untuk notifikasi SECRET_DELETE, metadata yang dimuat dalam kolom data menampilkan metadata objek seperti sebelum penghapusan. Untuk semua notifikasi lainnya, metadata yang disertakan dalam kolom data mewakili metadata objek setelah perubahan terjadi.

Batasan

  • Notifikasi peristiwa hanya tersedia di Secret Manager API v1 dan Google Cloud CLI.

  • Anda tidak dapat menggunakan notifikasi peristiwa secara andal dengan topik Pub/Sub yang memiliki kebijakan penyimpanan pesan dengan enforceInTransit ditetapkan ke true.

    Secret Manager memublikasikan semua notifikasi peristiwa dari endpoint global. Jika topik Pub/Sub memiliki enforceInTransit yang ditetapkan ke true, topik tersebut membatasi publikasi ke allowedPersistenceRegions tertentu. Pembatasan regional bertentangan dengan endpoint publikasi global untuk Secret Manager, sehingga permintaan publikasi gagal dengan error FAILED_PRECONDITION.

Sebelum memulai

Anda dapat memilih untuk menyimpan semua resource dalam project yang sama atau menyimpan topik Pub/Sub dan secret dalam project yang berbeda.

  1. Untuk menyiapkan Secret Manager, selesaikan langkah-langkah berikut:

    • Buat atau gunakan project yang ada untuk menyimpan resource Secret Manager Anda.

    • Jika perlu, selesaikan langkah-langkah yang disebutkan di halaman Mengaktifkan Secret Manager API.

  2. Untuk menyiapkan Pub/Sub, selesaikan langkah-langkah berikut:

    • Buat atau gunakan project yang ada untuk menyimpan resource Pub/Sub Anda.

    • Jika perlu, aktifkan Pub/Sub API.

  3. Lakukan autentikasi ke Google Cloud menggunakan perintah berikut:

        $ gcloud auth login --update-adc
        

Membuat identitas agen layanan

Untuk membuat identitas agen layanan untuk setiap project yang memerlukan rahasia dengan notifikasi peristiwa, ikuti langkah-langkah berikut:

  1. Untuk membuat identitas layanan dengan Google Cloud CLI, jalankan perintah berikut:

          $ gcloud beta services identity create \
              --service "secretmanager.googleapis.com" \
              --project "PROJECT_ID"
        

    Perintah ini menampilkan nama akun layanan, dengan format berikut:

        service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com
        
  2. Beri akun layanan ini izin untuk memublikasikan di topik Pub/Sub yang dikonfigurasi di rahasia Anda.

  3. Simpan nama akun layanan sebagai variabel lingkungan menggunakan perintah berikut:

        # This is from the output of the command above
        $ export SM_SERVICE_ACCOUNT="service-...."
        

Variabel lingkungan untuk project Secret Manager, project Pub/Sub, dan akun layanan Secret Manager harus disetel selama Anda mengikuti prosedur ini.

Membuat topik Pub/Sub

Ikuti panduan memulai Pub/Sub untuk membuat topik di project Pub/Sub Anda di konsol Google Cloud . Atau, buat topik di Google Cloud CLI menggunakan perintah berikut:

gcloud

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

  • PUBSUB_PROJECT_ID: ID project tempat langganan akan dibuat
  • PUBSUB_TOPIC_NAME: nama topik

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud pubsub topics create "projects/PUBSUB_PROJECT_ID/topics/PUBSUB_TOPIC_NAME"

Windows (PowerShell)

gcloud pubsub topics create "projects/PUBSUB_PROJECT_ID/topics/PUBSUB_TOPIC_NAME"

Windows (cmd.exe)

gcloud pubsub topics create "projects/PUBSUB_PROJECT_ID/topics/PUBSUB_TOPIC_NAME"

Ulangi beberapa kali jika Anda ingin membuat beberapa topik Pub/Sub pada secret.

Memberikan izin akun layanan untuk Secret Manager agar dapat memublikasikan topik

Anda dapat memberikan izin ke akun layanan Secret Manager melalui konsol Google Cloud atau melalui Google Cloud CLI.

Untuk memberikan peran Pub/Sub Publisher (roles/pubsub.publisher) pada topik Pub/Sub, gunakan perintah berikut:

gcloud

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

  • PUBSUB_TOPIC_NAME: nama topik

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud pubsub topics add-iam-policy-binding PUBSUB_TOPIC_NAME \
    --member "serviceAccount:${SM_SERVICE_ACCOUNT}" \
    --role "roles/pubsub.publisher"

Windows (PowerShell)

gcloud pubsub topics add-iam-policy-binding PUBSUB_TOPIC_NAME `
    --member "serviceAccount:${SM_SERVICE_ACCOUNT}" `
    --role "roles/pubsub.publisher"

Windows (cmd.exe)

gcloud pubsub topics add-iam-policy-binding PUBSUB_TOPIC_NAME ^
    --member "serviceAccount:${SM_SERVICE_ACCOUNT}" ^
    --role "roles/pubsub.publisher"

Membuat langganan Pub/Sub

Untuk melihat pesan yang dipublikasikan ke suatu topik, Anda juga harus membuat langganan ke topik tersebut. Ikuti panduan memulai Pub/Sub untuk membuat langganan di project Pub/Sub Anda di konsol Google Cloud . Atau, buat topik di Google Cloud CLI menggunakan perintah berikut:

gcloud

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

  • PUBSUB_PROJECT_ID: ID project tempat langganan akan dibuat
  • PUBSUB_SUBSCRIPTION_NAME: nama langganan
  • PUBSUB_TOPIC_NAME: nama topik

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud pubsub subscriptions create projects/PUBSUB_PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_NAME \
  --topic projects/PUBSUB_PROJECT_ID/topics/PUBSUB_TOPIC_NAME

Windows (PowerShell)

gcloud pubsub subscriptions create projects/PUBSUB_PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_NAME `
  --topic projects/PUBSUB_PROJECT_ID/topics/PUBSUB_TOPIC_NAME

Windows (cmd.exe)

gcloud pubsub subscriptions create projects/PUBSUB_PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_NAME ^
  --topic projects/PUBSUB_PROJECT_ID/topics/PUBSUB_TOPIC_NAME

Membuat secret dengan topik yang dikonfigurasi

Buat rahasia dengan daftar hingga 10 topik yang dikonfigurasi. Semua topik yang dikonfigurasi pada secret menerima notifikasi peristiwa saat secret atau salah satu versinya berubah.

gcloud

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

  • SECRET_ID: ID secret
  • PUBSUB_TOPIC_NAME: nama topik

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets create SECRET_ID --topics PUBSUB_TOPIC_NAME

Windows (PowerShell)