Akun Layanan Kustom untuk Cloud Build
Ringkasan
Cloud Functions memanfaatkan Cloud Build saat membangun dan men-deploy Cloud Function. Secara default, Cloud Functions menggunakan akun layanan Cloud Build default sebagai akun utama saat menjalankan build. Dokumen ini menjelaskan cara meneruskan akun layanan buatan 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 Cloud Functions API.
Berikut adalah beberapa skenario ketika Anda mungkin ingin menyediakan akun layanan lain untuk digunakan saat Cloud Build mem-build fungsi Anda:
Anda menginginkan lebih banyak kontrol atas akun layanan yang akan ditambahkan ke perimeter VPC-SC.
Anda ingin Cloud Build dijalankan 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 khusus untuk fungsi, bukan membagikan akun layanan Cloud Build yang dioptimalkan untuk tujuan lain.
Mengaktifkan API
Fitur ini mengharuskan IAM API diaktifkan.
Gunakan Google Cloud CLI untuk mengaktifkan API yang diperlukan untuk men-deploy Cloud Function, atau gunakan Google Cloud Console:
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 akan digunakan. Untuk mengetahui detailnya, lihat mengonfigurasi akun layanan yang ditentukan pengguna.
Anda dapat melihat akun layanan yang ada sebagai berikut, atau menggunakan Konsol Google Cloud:
gcloud iam service-accounts list
Membuat Akun Layanan
Gunakan Google Cloud CLI untuk membuat akun layanan atau menggunakan Google Cloud Console:
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/iam.serviceAccountUser
—Peran ini tidak diperlukan di akun layanan, tetapi pengguna yang men-deploy fungsi memerlukan peran ini.roles/logging.logWriter
— Diperlukan untuk menyimpan log build di Cloud Logging.roles/artifactregistry.writer
— Diperlukan untuk menyimpan image build di Artifact Registry.roles/storage.objectAdmin
—Diperlukan untuk mengambil sumber fungsi dari bucket Cloud Storage dan untuk menyimpan image build di Container Registry.
Berikan peran berikut menggunakan Google Cloud CLI, atau gunakan Google Cloud Console.
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: Project ID 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.
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 tersebut akan menggunakan akun layanan default project untuk Cloud Build. - Secara opsional, Anda dapat menggunakan
kumpulan pribadi,
yang ditentukan menggunakan flag
--build-worker-pool
.
gcloud beta 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:
- FUNCTION_NAME: Nama tempat Anda men-deploy fungsi.
- REGION: Nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya,
us-west1
). - PROJECT_ID: Project ID Google Cloud Anda.
- RUNTIME: ID runtime dari versi runtime yang didukung untuk menjalankan fungsi Anda, misalnya,
nodejs18
. - CODE_ENTRYPOINT: Titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang akan dieksekusi saat fungsi Anda berjalan.
- SA_EMAIL: Alamat email akun layanan Anda.