Mengonfigurasi secret untuk kumpulan pekerja

Kumpulan worker Anda mungkin memerlukan kunci API, sandi, sertifikat, atau informasi sensitif lainnya untuk dependensinya. Untuk Cloud Run, Google merekomendasikan penyimpanan informasi sensitif ini di secret yang Anda buat di Secret Manager.

Buat secret tersedia untuk container Anda dengan salah satu cara berikut:

  • Saat Anda memasang setiap secret sebagai volume, Cloud Run akan membuat secret tersedia untuk container sebagai file. Saat membaca volume, Cloud Run selalu mengambil nilai secret dari Secret Manager untuk menggunakan nilai dengan versi terbaru. Metode ini juga berfungsi dengan baik pada rotasi secret.
  • Teruskan secret menggunakan variabel lingkungan. Variabel lingkungan diselesaikan pada waktu startup instance. Jadi, jika Anda ingin menggunakan metode ini, Google merekomendasikan Anda untuk menyematkan secret ke versi tertentu daripada menggunakan latest sebagai versi.

Untuk mengetahui informasi selengkapnya, lihat praktik terbaik Secret Manager.

Cara pemeriksaan secret saat deployment dan runtime

Selama deployment kumpulan pekerja, Cloud Run akan memeriksa semua secret yang Anda gunakan. Pemeriksaan ini memastikan bahwa akun layanan yang menjalankan container memiliki izin untuk mengakses secret ini.

Selama runtime, pada saat instance dimulai:

  • Jika secret adalah variabel lingkungan, Cloud Run akan mengambil nilai secret sebelum memulai instance. Jika proses pengambilan secret gagal, instance tidak akan dimulai.
  • Jika Anda memasang secret sebagai volume, Cloud Run tidak akan melakukan pemeriksaan apa pun selama startup instance. Namun, jika selama runtime secret tidak dapat diakses, upaya untuk membaca volume yang terpasang akan gagal.

Kepemilikan volume

Kepemilikan volume rahasia Cloud Run berbeda-beda menurut lingkungan eksekusi dan jenis deployment.

Saat Anda memasang volume secret menggunakan lingkungan eksekusi generasi kedua, yang selalu terjadi pada gabungan worker, root akan memiliki volume tersebut.

Sebelum memulai

  1. Enable the Secret Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Gunakan secret yang ada atau buat secret di Secret Manager, seperti yang dijelaskan dalam Membuat secret.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi secret, minta administrator Anda untuk memberi Anda peran IAM berikut:

Untuk mengizinkan Cloud Run mengakses secret, identitas layanan harus memiliki peran berikut:

Untuk mengetahui petunjuk tentang cara menambahkan akun utama identitas layanan ke peran Secret Manager Secret Accessor, lihat Mengelola akses ke secret.

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika kumpulan worker Cloud Run Anda berinteraksi dengan APIGoogle Cloud , seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Membuat secret dapat diakses oleh Cloud Run

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

Anda dapat membuat secret dapat diakses oleh kumpulan pekerja menggunakan Google Cloud konsol, atau Google Cloud CLI saat Anda men-deploy kumpulan pekerja baru atau memperbarui kumpulan pekerja yang sudah ada, dan men-deploy revisi. Klik tab pilihan Anda:

Konsol

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Pilih Worker pools dari menu, lalu klik Deploy container untuk mengonfigurasi worker pool baru. Isi halaman setelan pool pekerja awal, lalu klik Container(s), Volume, Jaringan, Keamanan untuk memperluas halaman konfigurasi.

  3. Jika Anda mengonfigurasi worker pool yang sudah ada, klik worker pool, lalu klik Edit dan deploy revisi baru.

  4. Ikuti langkah-langkah untuk memasang secret sebagai volume, atau mengekspos secret sebagai variabel lingkungan.

    • Untuk mengekspos secret sebagai variabel lingkungan:

      1. Klik tab Container.
      2. Di tab Variables and Secrets, klik Reference a secret.
      3. Di kolom Name 1, masukkan nama variabel lingkungan.
      4. Dari daftar Secret, pilih secret yang ingin Anda gunakan.
      5. Dari daftar Version 1, pilih versi secret yang akan direferensikan.
      6. Klik Selesai.
      7. Klik Buat atau Deploy.
    • Untuk memasang secret sebagai volume:

      1. Klik tab Volumes, lalu pilih Add volume.
      2. Di daftar Volume type, pilih Secret.
      3. Di kolom Volume name, masukkan nama atau terima nama default.
      4. Dari daftar Secret, pilih secret yang ingin Anda gunakan.
      5. Di kolom Path 1, masukkan nama file yang akan di-mount.
      6. Dalam daftar Version 1, pilih versi secret yang akan direferensikan. Secara default, versi terbaru akan dipilih. Anda dapat memilih versi tertentu jika menginginkannya.
      7. Klik Selesai.
      8. Buka tab Container(s) untuk memasang secret ke container.
      9. Di tab Volume mounts, klik Mount volume.
      10. Dari daftar Name 1, pilih nama volume Anda.
      11. Di kolom Mount path 1, masukkan jalur pemasangan untuk secret ini. Ini adalah direktori tempat semua versi rahasia Anda ditempatkan.
      12. Klik Selesai.
      13. Klik Buat atau Deploy.

gcloud

  • Untuk mengekspos secret sebagai variabel lingkungan saat Anda men-deploy kumpulan pekerja, jalankan perintah berikut:

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION

    Ganti kode berikut:

    • WORKER_POOL: nama kumpulan pekerja Anda.
    • IMAGE_URL: referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • ENV_VAR_NAME: nama variabel lingkungan yang ingin Anda gunakan dengan secret.
    • SECRET_NAME: nama secret dalam project yang sama—misalnya, mysecret.
    • VERSION: versi secret. Gunakan latest untuk versi terbaru, atau angka—misalnya, 2.
  • Untuk memperbarui beberapa secret secara bersamaan, pisahkan opsi konfigurasi untuk setiap secret dengan koma. Perintah berikut memperbarui satu secret yang dipasang sebagai volume dan secret lain yang ditampilkan sebagai variabel lingkungan. Untuk memperbarui secret yang ada, jalankan perintah berikut:

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
  • Untuk menghapus secret yang ada dan membuat secret baru dapat diakses oleh kumpulan pekerja, gunakan flag --set-secrets:

    gcloud beta run worker-pools update WORKER_POOL \
    --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"

Mereferensikan secret dari project lain

Untuk mereferensikan secret dari project lain, pastikan akun kumpulan pekerja project Anda memiliki akses ke secret tersebut.

Konsol

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Pilih Worker pools dari menu, lalu klik Deploy container untuk mengonfigurasi worker pool baru. Isi halaman setelan pool pekerja awal, lalu klik Container(s), Volume, Jaringan, Keamanan untuk memperluas halaman konfigurasi.

  3. Jika Anda mengonfigurasi worker pool yang sudah ada, klik worker pool, lalu klik Edit dan deploy revisi baru.

  4. Ikuti langkah-langkah untuk memasang secret sebagai volume, atau mengekspos secret sebagai variabel lingkungan.

    • Untuk mengekspos secret sebagai variabel lingkungan:

      1. Klik tab Container.
      2. Di tab Variables and Secrets, klik Reference a secret.
      3. Di kolom Name 1, masukkan nama variabel lingkungan.
      4. Dari daftar Secret, klik Masukkan secret secara manual.
      5. Masukkan ID resource secret dalam format berikut:

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Ganti kode berikut:

        • PROJECT_NUMBER dengan Google Cloud nomor project Anda. Untuk petunjuk mendetail tentang cara menemukan nomor project, lihat Membuat dan mengelola project.

        • SECRET_NAME: Nama secret di Secret Manager.

      6. Dari daftar Version 1, pilih versi secret yang akan direferensikan.

      7. Klik Selesai.

      8. Klik Buat atau Deploy.

    • Untuk memasang secret sebagai volume:

      1. Klik tab Volumes, lalu pilih Add volume.
      2. Di daftar Volume type, pilih Secret.
      3. Di kolom Volume name, masukkan nama atau terima nama default.
      4. Dari daftar Secret, klik Masukkan secret secara manual.
      5. Masukkan ID resource secret dalam format berikut:

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Ganti kode berikut:

        • PROJECT_NUMBER dengan Google Cloud nomor project Anda. Untuk petunjuk mendetail tentang cara menemukan nomor project, lihat Membuat dan mengelola project.

        • SECRET_NAME: Nama secret di Secret Manager.

      6. Di kolom Path 1, masukkan nama file yang akan di-mount.

      7. Dalam daftar Version 1, pilih versi secret yang akan direferensikan. Secara default, versi terbaru akan dipilih. Anda dapat memilih versi tertentu jika menginginkannya.

      8. Klik Selesai.

      9. Buka tab Container(s) untuk memasang secret ke container.

      10. Di tab Volume mounts, klik Mount volume.

      11. Dari daftar Name 1, pilih nama volume Anda.

      12. Di kolom Mount path 1, masukkan jalur pemasangan untuk secret ini. Ini adalah direktori tempat semua versi rahasia Anda ditempatkan.

      13. Klik Selesai.

      14. Klik Buat atau Deploy.

gcloud

Untuk mereferensikan secret sebagai variabel lingkungan, jalankan perintah berikut:

gcloud beta run worker-pools deploy WORKER_POOL \
--image IMAGE_URL \
--update-secrets=ENV_VAR_NAME=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION

Ganti kode berikut:

  • WORKER_POOL: nama kumpulan pekerja Anda.
  • IMAGE_URL: referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • PROJECT_NUMBER dengan nomor project untuk project tempat secret dibuat.
  • SECRET_NAME: nama secret—misalnya, mysecret.
  • VERSION dengan versi secret. Gunakan latest untuk versi terbaru, atau angka—misalnya, 2.

Lihat setelan secret

Untuk melihat setelan secret saat ini untuk kumpulan pekerja Cloud Run Anda:

Konsol

  1. Di konsol Google Cloud , buka halaman Cloud Run worker pool:

    Buka kumpulan pekerja Cloud Run

  2. Klik kumpulan pekerja yang Anda minati untuk membuka halaman Detail kumpulan pekerja.

  3. Klik Edit dan deploy revisi baru.

  4. Temukan setelan secret di detail konfigurasi.

gcloud

  1. Gunakan perintah berikut:

    gcloud beta run worker-pools describe WORKER_POOL
  2. Temukan setelan secret dalam konfigurasi yang ditampilkan.

Menghapus secret dari kumpulan pekerja

Anda dapat menghapus secret dari kumpulan pekerja menggunakan konsol Google Cloud atau gcloud CLI:

Konsol

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Pilih kumpulan pekerja Anda dari daftar, lalu klik Edit dan deploy revisi baru.

  3. Klik tab Container.

  4. Untuk menghapus secret yang di-mount sebagai volume, pilih tab Pemasangan volume, dan tahan kursor di atas secret yang ingin Anda hapus, lalu klik Hapus.

  5. Untuk menghapus secret yang diekspos sebagai variabel lingkungan, pilih tab Variabel dan secret, lalu tahan kursor di atas secret yang ingin Anda hapus, lalu klik Hapus.

  6. Klik Deploy.

gcloud

Anda dapat menghapus semua secret dari kumpulan pekerja atau menentukan satu atau beberapa secret yang akan dihapus:

  • Untuk menghapus semua secret, jalankan perintah berikut:
  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --clear-secrets

Ganti kode berikut:

  • WORKER_POOL: nama kumpulan pekerja Anda.
  • IMAGE_URL: referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

  • Untuk menentukan daftar secret yang akan dihapus, gunakan flag --remove-secrets. Perintah berikut memperbarui satu secret yang dipasang sebagai volume dan secret lain yang diekspos sebagai variabel lingkungan.

  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH

Ganti kode berikut:

  • WORKER_POOL: nama kumpulan pekerja Anda.
  • IMAGE_URL: referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • ENV_VAR_NAME: nama variabel lingkungan.
  • SECRET_FILE_PATH: jalur lengkap secret. Misalnya, /mnt/secrets/primary/latest, dengan /mnt/secrets/primary/ sebagai jalur pemasangan dan latest sebagai jalur secret. Anda juga dapat menentukan jalur pemasangan dan secret secara terpisah:

    --set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION

Menggunakan secret dalam kode Anda

Untuk mengetahui contoh cara mengakses secret dalam kode Anda sebagai variabel lingkungan, lihat tutorial tentang autentikasi pengguna akhir, terutama bagian Menangani konfigurasi sensitif dengan Secret Manager.

Jalur dan batasan yang tidak diizinkan

Batasan berikut berlaku untuk pemasangan rahasia:

  • Cloud Run tidak mengizinkan Anda memasang secret di /dev, /proc, dan /sys, atau di subdirektorinya.
  • Cloud Run tidak mengizinkan Anda memasang beberapa secret di jalur yang sama karena dua penyangga volume tidak dapat dipasang di lokasi yang sama.

Mengganti direktori

Jika secret dipasang sebagai volume di Cloud Run, dan direktori terakhir di jalur pemasangan volume sudah ada, maka file atau folder apa pun di direktori yang ada menjadi tidak dapat diakses.

Misalnya, jika secret bernama my-secret dipasang ke jalur /etc/app_data, semua konten di dalam direktori app_data akan ditimpa, dan satu-satunya file yang terlihat adalah /etc/app_data/my-secret.

Untuk menghindari penimpaan file di direktori yang ada, buat direktori baru untuk memasang secret, misalnya, /etc/app_data/secrets, sehingga jalur pemasangan untuk secret adalah /etc/app_data/secrets/my-secret.