Dokumen ini menjelaskan cara mengonfigurasi build Anda untuk menggunakan akun layanan yang dikelola pengguna.
Jika Anda tidak menentukan akun layanan yang dikelola pengguna untuk build, Cloud Build akan otomatis menggunakan akun layanan Cloud Build default. Akun layanan default ini mungkin memiliki izin yang terlalu luas, seperti akses ke Cloud Source Repositories dan bucket Cloud Storage apa pun di project Anda.
Sebaiknya ikuti prinsip hak istimewa terendah dengan menetapkan izin dan peran ke akun layanan yang dicakupkan ke tugas yang dilakukannya. Misalnya, Anda dapat menggunakan satu akun layanan untuk mem-build dan mengirim image ke Artifact Registry, seperti yang ditunjukkan di BlogGoogle Cloud .
Sebelum memulai
-
Aktifkan Cloud Build dan IAM API, jika belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran. Jika Anda berencana menggunakan akun ini untuk membuat dan mengelola kredensial, misalnya untuk membuat kredensial berumur singkat, aktifkan IAM Service Account Credentials API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.Buat akun layanan, jika Anda belum melakukannya.
Menyiapkan akun layanan
Berikan peran IAM ke akun layanan yang dikelola pengguna agar akun tersebut memiliki izin yang diperlukan untuk menjalankan build Anda. Anda juga dapat mengonfigurasi Cloud Build agar otomatis memilih akun layanan ini untuk pemicu baru.
-
Di konsol Google Cloud , buka halaman Izin Cloud Build settings:
Buka menu Service account dan pilih akun layanan Anda. Untuk memilih akun layanan di project lain, klik Switch project.
Untuk menggunakan akun layanan yang dipilih sebagai akun layanan untuk pemicu baru, aktifkan Set as pre-selected for new triggers.
Dalam daftar layanan Google Cloud , aktifkan peran IAM yang ingin Anda berikan ke akun layanan Anda.
Jika peran yang Anda perlukan untuk pipeline build tidak tercantum di sini, Anda dapat memberikan peran tambahan di halaman konfigurasi IAM.
Jika Anda memilih akun layanan di project lain, selesaikan langkah-langkah di Penyiapan lintas project.
Untuk mempelajari lebih lanjut peran IAM yang biasanya diperlukan untuk build, lihat informasi berikut:
- Akun layanan Cloud Build default.
- Mengonfigurasi akses ke resource Cloud Build.
- Peran dan izin IAM Cloud Build.
Menyiapkan log build
Saat menentukan akun layanan Anda sendiri untuk build, Anda harus menyimpan log build di salah satu jenis bucket berikut:
Bucket Cloud Storage dalam project pengguna. Bucket ini dapat berupa bucket yang dibuat pengguna atau bucket yang dibuatGoogle Clouddan dimiliki pengguna.
Jika Anda membuat bucket log, pastikan bucket tersebut tidak memiliki kebijakan retensi karena kebijakan tersebut dapat mencegah Cloud Build menulis log build ke bucket.
Anda tidak dapat menyimpan log di bucket log milik Google Cloud.
Untuk mengetahui informasi lebih lanjut tentang tempat menyimpan log build, lihat Opsi penyimpanan log build.
Menjalankan build menggunakan file konfigurasi
Untuk menjalankan build secara manual menggunakan file konfigurasi:
Di direktori utama project Anda, buat file konfigurasi build Cloud Build bernama
cloudbuild.yamlataucloudbuild.json.Tambahkan kolom
serviceAccountdan penyiapan logging pilihan.Jika Anda menyimpan log build di Cloud Logging, tambahkan kolom
loggingdan tetapkan nilai kolom keCLOUD_LOGGING_ONLY.Jika Anda menyimpan log build di bucket Cloud Storage yang dibuat pengguna:
- Tambahkan kolom
loggingdan tetapkan nilainya keGCS_ONLY. - Tambahkan kolom
logsBucketdan tetapkan nilainya ke lokasi bucket Cloud Storage Anda.
- Tambahkan kolom
Contoh berikut mengonfigurasi Cloud Build untuk menjalankan build menggunakan akun layanan yang dikelola pengguna dan mengonfigurasi log build untuk disimpan di bucket Cloud Storage yang dibuat pengguna:
YAML
steps: - name: 'bash' args: ['echo', 'Hello world!'] logsBucket: 'LOGS_BUCKET_LOCATION' serviceAccount: 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT' options: logging: GCS_ONLYJSON
{ "steps": [ { "name": "bash", "args": [ "echo", "Hello world!" ] } ], "logsBucket": "LOGS_BUCKET_LOCATION", "serviceAccount": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT", "options": { "logging": "GCS_ONLY" } }Ganti variabel dalam file konfigurasi build Anda dengan yang berikut ini:
LOGS_BUCKET_LOCATIONadalah bucket Cloud Storage untuk menyimpan log build. Contoh,gs://mylogsbucket.PROJECT_IDadalah ID project Google Cloud tempat Anda menjalankan build.SERVICE_ACCOUNTadalah alamat email atau ID unik akun layanan yang ingin Anda tentukan untuk build. Misalnya, alamat email akun layanan terlihat seperti:service-account-name@project-id.iam.gserviceaccount.com.
Mulai build menggunakan file konfigurasi build:
gcloud builds submit --config CONFIG_FILE_PATH SOURCE_DIRECTORYGanti variabel dalam perintah dengan nilai berikut:
CONFIG_FILE_PATHadalah jalur ke file konfigurasi build.SOURCE_DIRECTORYadalah jalur atau URL ke kode sumber.
Jika Anda tidak menentukan CONFIG_FILE_PATH dan SOURCE_DIRECTORY dalam perintah
gcloud builds submit, Cloud Build akan mengasumsikan bahwa file konfigurasi build dan kode sumber berada di direktori kerja saat ini.
Menjalankan build menggunakan pemicu
Untuk menjalankan build dengan pemicu Cloud Build menggunakan akun layanan Anda sendiri, siapkan opsi logging pilihan Anda dan pilih akun layanan pilihan Anda saat membuat pemicu.
Jika ingin menggunakan akun layanan yang sama untuk semua pemicu baru, Anda dapat mengonfigurasi Cloud Build untuk memilih akun layanan secara otomatis.
Dalam file konfigurasi build:
Jika Anda menyimpan log build di Cloud Logging, tambahkan kolom
loggingdan tetapkan nilai kolom keCLOUD_LOGGING_ONLY.Jika Anda menyimpan log build di bucket Cloud Storage yang dibuat pengguna:
- Tambahkan kolom
loggingdan tetapkan nilainya keGCS_ONLY. - Tambahkan kolom
logsBucketdan tetapkan nilainya ke lokasi bucket Cloud Storage Anda.
- Tambahkan kolom
Contoh berikut mengonfigurasi log build untuk disimpan di bucket Cloud Storage yang dibuat pengguna:
YAML
steps: - name: 'bash' args: ['echo', 'Hello world!'] logsBucket: 'LOGS_BUCKET_LOCATION' options: logging: GCS_ONLYJSON
{ "steps": [ { "name": "bash", "args": [ "echo", "Hello world!" ] } ], "logsBucket": "LOGS_BUCKET_LOCATION", "options": { "logging": "GCS_ONLY" } }Ganti
LOGS_BUCKET_LOCATIONdengan bucket Cloud Storage untuk menyimpan log build. Contoh,gs://mylogsbucket.Tentukan akun layanan yang akan digunakan dengan pemicu build Anda:
Konsol
Di kolom Service account, tentukan akun layanan Anda. Untuk memilih akun layanan di project lain, klik Switch project.
Jika Anda tidak menentukan akun layanan, Cloud Build akan menggunakan akun layanan default.
Klik Buat untuk menyimpan pemicu build Anda.
gcloud
Saat membuat pemicu build, tentukan akun layanan Anda menggunakan flag
--service-account. Dalam contoh berikut, perintahgcloudmembuat pemicu build yang mengambil kode dari repositori Git:gcloud builds triggers create github \ --name=TRIGGER_NAME \ --repo-name=REPO_NAME \ --repo-owner=REPO_OWNER \ --branch-pattern=BRANCH_PATTERN --build-config=BUILD_CONFIG_FILE --service-account=SERVICE_ACCOUNT --project=BUILD_PROJECTGanti variabel dalam file konfigurasi build dengan nilai berikut:
TRIGGER_NAMEadalah nama pemicu build Anda.REPO_NAMEadalah nama repositori Anda.REPO_OWNERadalah nama pengguna pemilik repositori.BRANCH_PATTERNadalah nama cabang di repositori Anda untuk memanggil build.TAG_PATTERNadalah nama tag di repositori Anda untuk memanggil build.BUILD_CONFIG_FILEadalah jalur ke file konfigurasi build Anda.SERVICE_ACCOUNTadalah akun layanan Anda dalam format/projects/PROJECT_ID/serviceAccounts/ACCOUNT_ID_OR_EMAIL.BUILD_PROJECTadalah project tempat Anda memulai build.
Penyiapan lintas project
Anda dapat menggunakan akun layanan yang dikelola pengguna untuk menjalankan build dalam project yang berbeda dengan project tempat Anda membuat akun layanan, hanya jika batasan kebijakan organisasi iam.disableCrossProjectServiceAccountUsage tidak diterapkan. Batasan ini diterapkan secara default.
Pelajari lebih lanjut.
Perintah berikut menonaktifkan penerapan batasan tersebut dan memberikan akses yang diperlukan. Organisasi Anda perlu mengetahui konsekuensi keamanan yang terlibat sebelum menetapkan batasan dalam kebijakan organisasi:
gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=SERVICE_ACCOUNT_PROJECT_IDDalam perintah ini, SERVICE_ACCOUNT_PROJECT_ID adalah project yang berisi akun layanan terkelola pengguna
Dalam project yang memiliki akun layanan yang dikelola pengguna, berikan peran
roles/iam.serviceAccountTokenCreatoruntuk agen layanan Cloud Build dari project tempat Anda menjalankan build:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:BUILD_SERVICE_AGENT" \ --role="roles/iam.serviceAccountTokenCreator"Ganti variabel dalam perintah dengan yang berikut ini:
SERVICE_ACCOUNT_PROJECT_ID: Project ID untuk project yang berisi akun layanan yang dikelola pengguna.BUILD_SERVICE_AGENT: ID email agen layanan dari formulirservice-BUILD_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com, denganBUILD_PROJECT_NUMBERadalah nomor project dari project tempat Anda menjalankan build. Anda bisa mendapatkan nomor project dari halaman setelan project.
Batasan:
Project Google Cloud Anda harus berada dalam organisasi Google Cloud .
Anda harus memulai build di command line menggunakan
gcloud builds submitataugcloud builds triggers create.Jika Anda menerima error
service account not foundsaat memberikan peran IAM, Anda mungkin perlu membuat agen layanan secara manual.
Langkah berikutnya
- Pelajari lebih lanjut peran dan izin IAM Cloud Build.
- Pelajari dampak perubahan akun layanan terhadap cara Anda menjalankan build.