Akun Layanan Kustom untuk Cloud Build

Fungsi Cloud Run memanfaatkan Cloud Build saat mem-build dan men-deploy fungsi Cloud Run Anda. Secara default, fungsi Cloud Run menggunakan akun layanan Cloud Build default sebagai akun utama saat melakukan build. Mulai Juli 2024, Cloud Build telah mengubah perilaku default untuk 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 untuk tidak mengikuti perubahan ini.

  • Tambahkan peran Akun Cloud Build (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 yang dibuat pengguna, untuk digunakan oleh Cloud Build, saat men-deploy fungsi Anda.

Anda dapat men-deploy fungsi dengan akun layanan kustom menggunakan Google Cloud CLI, konsol Google Cloud, atau API fungsi Cloud Run.

Berikut beberapa skenario saat Anda mungkin ingin memberikan akun layanan yang berbeda untuk digunakan saat Cloud Build mem-build fungsi Anda:

  • Anda ingin lebih mengontrol akun layanan mana yang akan ditambahkan ke perimeter VPC-SC.

  • Anda ingin Cloud Build berjalan dengan izin yang berbeda dari yang dimiliki akun layanan default tanpa harus mencabut setiap izin satu per satu.

  • Anda ingin menetapkan izin Cloud Build terperinci secara khusus untuk fungsi Anda, bukan membagikan akun layanan Cloud Build yang dioptimalkan untuk tujuan lain.

  • Organisasi Anda menonaktifkan penggunaan akun layanan default.

Mengaktifkan API

Fitur ini memerlukan pengaktifan IAM API.

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

gcloud services enable iam.googleapis.com

Mengonfigurasi 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 ingin digunakan. 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 akun layanan Anda.

Berikan Izin

Akun layanan yang Anda gunakan akan memerlukan peran berikut:

  • roles/logging.logWriter— Wajib untuk menyimpan log build di Cloud Logging.
  • roles/artifactregistry.writer— Wajib untuk menyimpan image build di Artifact Registry. Untuk perilaku default, akun layanan memerlukan akses ke repositori bernama "gcf-artifacts" dan "cloud-run-source-deploy". Akses ke repositori dapat ditetapkan pada kebijakan IAM repositori. Sebagai alternatif, Anda dapat menyediakan repositori artefak Anda sendiri melalui kolom dockerRepository.
  • roles/storage.objectViewer— Wajib untuk mengambil sumber fungsi dari bucket Cloud Storage, dan untuk menyimpan image build di Container Registry. Untuk perilaku default, akun layanan memerlukan akses ke bucket bernama "run-sources-*", "gcf-v2-sources-*", dan "gcf-v2-uploads-*". Hal ini dapat dilakukan dengan menambahkan kondisi IAM ke pemberian peran seperti: (resource.type == "storage.googleapis.com/Object" && (resource.name.startsWith("gcf-v2-sources-") || resource.name.startsWith("gcf-v2-uploads-") || resource.name.startsWith("run-sources-")))

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

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.objectViewer

Ganti kode berikut:

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 diberikan, fungsi akan menggunakan akun layanan default project untuk Cloud Build.
  • Secara opsional, Anda dapat menggunakan kumpulan pribadi, yang Anda tentukan menggunakan flag --build-worker-pool.

gcloud functions deploy FUNCTION_NAME \
   --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: