Akun Layanan Kustom untuk Cloud Build

Fungsi Cloud Run memanfaatkan Cloud Build saat membangun dan men-deploy fungsi Cloud Run Anda. Secara default, fungsi Cloud Run menggunakan Akun layanan Cloud Build sebagai akun utama saat menjalankan build Anda. Mulai Juli 2024, Cloud Build telah mengubah perilaku default terkait cara Cloud Build menggunakan akun layanan di project baru. Perubahan ini dijelaskan dalam Perubahan Akun Layanan Cloud Build. Akibat perubahan ini, project baru yang men-deploy fungsi untuk pertama kalinya mungkin menggunakan akun layanan Cloud Build default dengan izin yang tidak memadai untuk mem-build fungsi. Jika Anda terpengaruh oleh perubahan ini, Anda dapat melakukan salah satu hal berikut:

  • Tinjau panduan Cloud Build tentang perubahan pada akun layanan default dan pilih perubahan ini.

  • Tambahkan peran Cloud Build Account (roles/cloudbuild.builds.builder) ke akun layanan Compute Engine default.

  • Buat akun layanan Cloud Build kustom untuk deployment fungsi.

Dokumen ini menjelaskan cara meneruskan akun layanan buatan pengguna, yang akan digunakan oleh Cloud Build, saat men-deploy fungsi Anda.

Anda dapat men-deploy fungsi dengan akun layanan khusus menggunakan Google Cloud CLI, Konsol Google Cloud, atau Cloud Run Functions API.

Berikut adalah beberapa skenario saat Anda mungkin ingin menyediakan layanan yang berbeda akun yang akan digunakan saat Cloud Build membangun fungsi Anda:

  • Anda menginginkan kontrol lebih besar atas akun layanan yang akan ditambahkan ke VPC-SC Anda keliling.

  • Anda ingin Cloud Build berjalan dengan izin daripada yang dimiliki akun layanan {i>default<i} tanpa harus mencabut masing-masing izin akses satu per satu.

  • Anda ingin menetapkan izin Cloud Build terperinci khusus untuk fungsi yang berbeda, tidak berbagi akun layanan Cloud Build yang dioptimalkan untuk tujuan lain.

  • Organisasi Anda menonaktifkan penggunaan akun layanan default.

Mengaktifkan API

Fitur ini mengharuskan IAM API diaktifkan.

Gunakan Google Cloud CLI untuk mengaktifkan API yang diperlukan untuk men-deploy fungsi Cloud Run, atau menggunakan Konsol Google Cloud:

gcloud services enable iam.googleapis.com

Konfigurasi Akun Layanan

Dokumen ini menjelaskan cara membuat akun layanan baru dan memberikan izin yang diperlukan. Jika ingin menggunakan akun layanan yang ada, Anda memerlukan alamat email akun layanan yang akan Anda gunakan. Lihat mengonfigurasi akun layanan yang ditentukan pengguna untuk mengetahui detailnya.

Anda dapat melihat akun layanan yang ada sebagai berikut, atau menggunakan Konsol Google Cloud:

gcloud iam service-accounts list

Buat Akun Layanan

Gunakan Google Cloud CLI untuk membuat akun layanan atau gunakan konsol Google Cloud:

gcloud iam service-accounts create SA_EMAIL

Ganti SA_EMAIL dengan alamat email Anda akun layanan Anda.

Berikan Izin

Akun layanan yang Anda gunakan akan memerlukan peran berikut:

Berikan peran berikut menggunakan Google Cloud CLI, atau gunakan Konsol Google Cloud.

gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
    --role=roles/logging.logWriter

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • SA_EMAIL: Alamat email akun layanan Anda.
  • SA_PROJECT_ID: Project ID akun layanan Anda.
  • DEPLOYING_USER_EMAIL: Alamat email pengguna yang men-deploy fungsi tersebut.

Men-deploy fungsi dengan akun layanan kustom

Anda dapat menggunakan Google Cloud CLI untuk men-deploy fungsi yang menggunakan akun layanan kustom untuk Cloud Build:

  • Flag --build-service-account menentukan Akun layanan IAM yang kredensialnya akan digunakan untuk langkah build. Jika akun layanan kustom tidak disediakan, fungsi ini menggunakan default project akun layanan untuk Cloud Build.
  • Jika ingin, Anda dapat menggunakan kolam renang pribadi, yang Anda tentukan menggunakan flag --build-worker-pool.

gcloud functions deploy FUNCTION_NAME \
   --no-gen2 \
   --region=REGION \
   --project=PROJECT_ID \
   --runtime=RUNTIME \
   --entry-point=CODE_ENTRYPOINT \
   --build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
   --memory=256Mi \
   --trigger-http \
   --source=.

Ganti kode berikut:

  • FUNCTION_NAME: Nama yang digunakan untuk men-deploy fungsi.
  • REGION: Nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya, us-west1).
  • PROJECT_ID: ID project Google Cloud Anda.
  • RUNTIME: ID runtime versi runtime yang didukung untuk dijalankan fungsi Anda, misalnya, nodejs18.
  • CODE_ENTRYPOINT: titik entri ke fungsi Anda di pada kode sumber Anda. Ini adalah kode yang akan dieksekusi saat fungsi Anda berjalan.
  • SA_EMAIL: Alamat email akun layanan Anda.