Jika Anda tidak menentukan akun layanan, Cloud Build dapat otomatis memilih akun layanan untuk menjalankan build atas nama Anda. Akun layanan ini mungkin memiliki izin yang terlalu luas untuk kasus penggunaan Anda, seperti akses ke Cloud Source Repositories dan bucket Cloud Storage dalam project Anda.
Untuk meningkatkan postur keamanan project Anda dan mengurangi potensi dampak kesalahan konfigurasi atau pengguna yang berniat jahat, sebaiknya ikuti prinsip hak istimewa terendah. Dengan menerapkan prinsip ini, Anda dapat menetapkan izin dan peran yang mencakup tugas yang dijalankannya ke setiap akun layanan. Misalnya, Anda dapat menggunakan satu akun layanan untuk mem-build dan mengirim image ke Artifact Registry, seperti yang ditunjukkan di Blog Google Cloud.
Sebelum memulai
-
Aktifkan API Cloud Build and IAM.
Jika Anda berencana menggunakan akun ini untuk membuat dan mengelola kredensial, misalnya untuk membuat kredensial berumur pendek, aktifkan IAM Service Account Credentials API.
Buat akun layanan, jika Anda belum melakukannya.
Memberikan izin IAM
Agar build dapat mengakses layanan yang perlu terhubung, Anda harus memberikan beberapa peran dan izin:
Buka halaman Cloud Build Settings:
Buka halaman Setelan Cloud Build
Anda akan melihat tab Izin akun layanan:
Dari menu drop-down, pilih akun layanan yang perannya ingin Anda ubah.
Tetapkan status peran yang ingin Anda tambahkan ke Aktifkan.
Jika peran yang dibutuhkan untuk pipeline build tidak tercantum di sini, Anda dapat memberikan peran tambahan di halaman konfigurasi IAM.
Anda dapat menemukan informasi tambahan tentang peran yang umumnya diperlukan untuk build di artikel Mengonfigurasi akses ke resource Cloud Build dan di daftar lengkap peran dan izin IAM Cloud Build.
Menyiapkan log build
Saat menentukan akun layanan sendiri untuk build, Anda harus menyimpan log build di Cloud Logging atau di bucket Cloud Storage yang dibuat pengguna. Anda tidak dapat menyimpan log di bucket log default.
Untuk menyimpan log di bucket Cloud Storage, ikuti petunjuk di Menyimpan log build di bucket yang dibuat pengguna. Pastikan Anda belum menetapkan kebijakan retensi di bucket log karena hal ini dapat mencegah Cloud Build menulis log build ke bucket.
Untuk menyimpan log build di Cloud Logging, berikan peran Logs Writer (
roles/logging.logWriter
) ke akun layanan.Untuk mengetahui informasi lebih lanjut tentang tempat menyimpan log build, lihat Memilih tempat untuk menyimpan log build.
Menjalankan build menggunakan file konfigurasi
Untuk menjalankan build secara manual menggunakan file konfigurasi:
Di direktori utama project, buat file konfigurasi build Cloud Build bernama
cloudbuild.yaml
ataucloudbuild.json
.Tambahkan kolom
serviceAccount
dan penyiapan logging pilihan.Jika Anda menyimpan log build di Cloud Logging, tambahkan kolom
logging
dan tetapkan nilai kolom tersebut keCLOUD_LOGGING_ONLY
.Jika Anda menyimpan log build di bucket Cloud Storage yang dibuat pengguna:
- Tambahkan kolom
logging
dan tetapkan nilainya keGCS_ONLY
. - Tambahkan kolom
logsBucket
dan tetapkan nilainya ke lokasi bucket Cloud Storage Anda.
- Tambahkan kolom
Contoh berikut mengonfigurasi Cloud Build untuk menjalankan build menggunakan akun layanan yang ditentukan 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_ONLY
JSON
{ "steps": [ { "name": "bash", "args": [ "echo", "Hello world!" ] } ], "logsBucket": "LOGS_BUCKET_LOCATION", "serviceAccount": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT", "options": { "logging": "GCS_ONLY" } }
Ganti nilai placeholder di file konfigurasi build Anda dengan kode berikut:
LOGS_BUCKET_LOCATION
adalah bucket Cloud Storage untuk menyimpan log build. Contoh,gs://mylogsbucket
.PROJECT_ID
adalah ID project Google Cloud tempat Anda menjalankan build.SERVICE_ACCOUNT
adalah alamat email atau ID unik akun layanan yang ingin Anda tentukan untuk build. Misalnya, alamat email akun layanan akan terlihat seperti ini:service-account-name@project-id.iam.gserviceaccount.com
.
Mulai build menggunakan file konfigurasi build:
gcloud builds submit --config CONFIG_FILE_PATH SOURCE_DIRECTORY
Ganti nilai placeholder dalam perintah di atas dengan nilai berikut:
CONFIG_FILE_PATH
adalah jalur ke file konfigurasi build.SOURCE_DIRECTORY
adalah jalur atau URL ke kode sumber.
Jika CONFIG_FILE_PATH dan SOURCE_DIRECTORY tidak ditentukan dalam perintah
gcloud builds submit
, Cloud Build akan menganggap file konfigurasi build dan kode sumbernya 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 yang Anda inginkan dan pilih akun layanan yang Anda inginkan saat membuat pemicu tersebut.
Di file konfigurasi build:
Jika Anda menyimpan log build di Cloud Logging, tambahkan kolom
logging
dan tetapkan nilai kolom tersebut keCLOUD_LOGGING_ONLY
.Jika Anda menyimpan log build di bucket Cloud Storage yang dibuat pengguna:
- Tambahkan kolom
logging
dan tetapkan nilainya keGCS_ONLY
. - Tambahkan kolom
logsBucket
dan 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_ONLY
JSON
{ "steps": [ { "name": "bash", "args": [ "echo", "Hello world!" ] } ], "logsBucket": "LOGS_BUCKET_LOCATION", "options": { "logging": "GCS_ONLY" } }
Ganti
LOGS_BUCKET_LOCATION
dengan bucket Cloud Storage untuk menyimpan log build. Misalnya,gs://mylogsbucket
.Tentukan akun layanan yang akan digunakan dengan pemicu build Anda:
Konsol
Untuk menjalankan build menggunakan halaman Pemicu di Konsol Google Cloud, akun layanan yang ditentukan pengguna harus berada dalam project yang sama dengan pemicu build Anda. Untuk menggunakan pemicu dengan akun layanan lintas project, buat pemicu build menggunakan alat
gcloud
.Di kolom Service account, tentukan akun layanan Anda. 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 menggunakan flag
--service-account
. Dalam contoh berikut, perintahgcloud
membuat 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_PROJECT
Ganti nilai placeholder di file konfigurasi build Anda dengan kode berikut:
TRIGGER_NAME
adalah nama pemicu build Anda.REPO_NAME
adalah nama repositori Anda.REPO_OWNER
adalah nama pengguna pemilik repositori.BRANCH_PATTERN
adalah nama cabang di repositori Anda untuk memanggil build yang ada.TAG_PATTERN
adalah nama tag di repositori Anda untuk memanggil build yang ada.BUILD_CONFIG_FILE
adalah jalur ke file konfigurasi build Anda.SERVICE_ACCOUNT
adalah email yang terkait dengan akun layanan Anda.BUILD_PROJECT
adalah project tempat Anda memulai build.
Penyiapan lintas project
Jika akun layanan yang ditentukan pengguna berada dalam project yang berbeda dengan project tempat Anda memulai build, berikan akses yang diperlukan:
Dalam project yang memiliki akun layanan yang ditentukan pengguna, pastikan batasan kebijakan organisasi
iam.disableCrossProjectServiceAccountUsage
tidak diterapkan. Batasan ini diterapkan secara default. Untuk menonaktifkan batasan kebijakan organisasi ini, jalankan perintah berikut dengan SERVICE_ACCOUNT_PROJECT_ID adalah project yang berisi akun layanan yang ditentukan pengguna Anda:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=SERVICE_ACCOUNT_PROJECT_ID
Dalam project yang memiliki akun layanan yang ditentukan pengguna, berikan peran
roles/iam.serviceAccountTokenCreator
untuk agen layanan Cloud Build 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 nilai placeholder dalam perintah dengan kode berikut:
SERVICE_ACCOUNT_PROJECT_ID
: Project ID untuk project yang berisi akun layanan yang ditentukan pengguna.BUILD_SERVICE_AGENT
: ID email agen layanan dari bentukservice-BUILD_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
, denganBUILD_PROJECT_NUMBER
adalah nomor project 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 submit
ataugcloud builds triggers create
. Untuk menggunakan halaman Pemicu di Konsol Google Cloud, akun layanan yang ditentukan pengguna dan pemicu build harus berada di project yang sama.
Langkah selanjutnya
- Pelajari peran dan izin IAM Cloud Build lebih lanjut.
- Pelajari bagaimana perubahan akun layanan memengaruhi cara Anda menjalankan build.