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 tidak perlu luas untuk kasus penggunaan Anda, seperti akses ke Repositori Sumber Cloud dan bucket Cloud Storage apa pun di project Anda.
Untuk meningkatkan postur keamanan project Anda dan mengurangi potensi dampak miskonfigurasi atau pengguna berbahaya, sebaiknya ikuti prinsip hak istimewa minimum. Dengan menerapkan prinsip ini, Anda dapat menetapkan izin dan peran yang dicakup untuk tugas yang dilakukannya ke setiap akun layanan. Misalnya, Anda dapat menggunakan satu akun layanan untuk mem-build dan mengirim image ke Artifact Registry, seperti yang ditampilkan di Blog Google Cloud.
Sebelum memulai
-
Enable the Cloud Build and IAM APIs.
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 dihubungkan, Anda harus memberikan beberapa peran dan izin:
Buka halaman Setelan Cloud Build:
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 Anda perlukan untuk pipeline build tidak tercantum di sini, Anda dapat memberikan peran tambahan di halaman konfigurasi IAM.
Anda dapat menemukan informasi tambahan tentang peran yang biasanya diperlukan untuk build di Mengonfigurasi akses ke resource Cloud Build dan di daftar lengkap peran dan izin IAM Cloud Build.
Menyiapkan log build
Saat menentukan akun layanan Anda 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 Penulis Log (
roles/logging.logWriter
) ke akun layanan.Untuk informasi lebih lanjut tentang tempat menyimpan log build, lihat Memilih tempat 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 yang diinginkan.Jika Anda menyimpan log build di Cloud Logging, tambahkan kolom
logging
dan tetapkan nilai kolom 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 dalam file konfigurasi build Anda dengan yang berikut ini:
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 terlihat seperti: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 yang berikut ini:
CONFIG_FILE_PATH
adalah jalur ke file konfigurasi build.SOURCE_DIRECTORY
adalah 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.
Di file konfigurasi build:
Jika Anda menyimpan log build di Cloud Logging, tambahkan kolom
logging
dan tetapkan nilai kolom 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. Contoh,gs://mylogsbucket
.Tentukan akun layanan yang akan digunakan dengan pemicu build Anda:
Konsol
Untuk menjalankan build menggunakan halaman Pemicu di Google Cloud Console, 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 Anda 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 dalam file konfigurasi build Anda dengan yang berikut ini:
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.TAG_PATTERN
adalah nama tag di repositori Anda untuk memanggil build.BUILD_CONFIG_FILE
adalah jalur ke file konfigurasi build Anda.SERVICE_ACCOUNT
adalah akun layanan Anda dalam format/projects/PROJECT_ID/serviceAccounts/ACCOUNT_ID_OR_EMAIL
.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 bahwa 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:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=SERVICE_ACCOUNT_PROJECT_ID
Di 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 nilai berikut:
SERVICE_ACCOUNT_PROJECT_ID
: Project ID project yang berisi akun layanan yang ditentukan pengguna.BUILD_SERVICE_AGENT
: ID email agen layanan berbentukservice-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 dalam project yang sama.
Langkah selanjutnya
- Pelajari lebih lanjut peran dan izin IAM Cloud Build.
- Pelajari pengaruh perubahan akun layanan terhadap cara Anda menjalankan build.