Bergantung pada setelan project Anda, Cloud Build dapat menggunakan akun layanan lama Cloud Build atau akun layanan default Compute Engine untuk menjalankan build atas nama Anda. Email untuk akun layanan lama Cloud Build adalah
[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
dan email untuk akun layanan default Compute Engine adalah
[PROJECT_NUMBER]-compute@developer.gserviceaccount.com
.
Akun layanan default mungkin memiliki izin yang tidak perlu luas untuk
kasus penggunaan Anda. Anda dapat meningkatkan postur keamanan dengan mengikuti
prinsip hak istimewa terendah. Sebagai bagian dari prinsip ini, sebaiknya
buat akun layanan Anda sendiri untuk menjalankan build atas nama
Anda. Hal ini dapat mengurangi potensi dampak dari kesalahan konfigurasi atau pengguna
jahat.
Halaman ini menjelaskan semua izin yang dimiliki akun layanan lama Cloud Build secara default.
Untuk mengetahui informasi tentang akun layanan default Compute Engine, lihat Akun layanan default Compute Engine.
Untuk mempelajari cara memberikan atau mencabut izin ke akun layanan default Cloud Build, lihat Mengonfigurasi akses untuk akun layanan default Cloud Build.
Izin default akun layanan lama Cloud Build
Jika setelan project Anda mengizinkan penggunaan akun layanan lama Cloud Build, akun tersebut akan diberi peran Akun Layanan Cloud Build untuk resource dalam project. Peran ini berisi sejumlah
izin, seperti kemampuan untuk mengupdate build atau menulis log. Akun layanan
hanya menggunakan izin ini sesuai kebutuhan untuk melakukan tindakan saat
menjalankan build Anda. Misalnya, akun layanan menggunakan izin artifactregistry.dockerimages.get
untuk mendapatkan image docker dari Container Registry jika build Anda dikonfigurasi untuk melakukannya. Jika Anda tidak berencana untuk melakukan tindakan sebagai bagian dari proses build, sebaiknya cabut izin yang sesuai dari akun layanan untuk mematuhi prinsip keamanan hak istimewa terendah.
Tabel berikut mencantumkan izin yang terdapat dalam peran Cloud Build Service Account dan tujuan penggunaan izin ini oleh akun layanan lama Cloud Build.
Izin | Deskripsi | Tujuan izin |
---|---|---|
cloudbuild.builds.create |
Dapat membuat build dan pemicu | Wajib untuk:
|
cloudbuild.builds.update |
Dapat memperbarui build dan pemicu | |
cloudbuild.builds.list |
Dapat membuat daftar build dan pemicu | |
cloudbuild.builds.get |
Dapat mendapatkan build dan pemicu | |
cloudbuild.workerpools.use |
Dapat menggunakan kolam renang pribadi | Diperlukan untuk menjalankan build di kumpulan pribadi. |
logging.logEntries.create |
Dapat menulis log | Diperlukan agar dapat membuat dan mencantumkan log build di Cloud Logging. |
logging.logEntries.list |
Dapat mencantumkan log | |
logging.views.access |
Dapat melihat log | |
pubsub.topics.create |
Dapat membuat topik Pub/Sub | Diperlukan untuk mendorong update build ke Pub/Sub. |
pubsub.topics.publish |
Dapat memublikasikan ke Pub/Sub | |
remotebuildexecution.blobs.get |
Dapat mendapatkan akses untuk menyetujui atau menolak build. | Wajib menyetujui atau menolak build yang tertunda |
resourcemanager.projects.get |
Dapat mendapatkan informasi project | |
resourcemanager.projects.list |
Dapat mencantumkan project | |
source.repos.get |
Dapat membaca kode sumber dari repositori di Cloud Source Repositories | Wajib untuk:
|
source.repos.list |
Dapat mencantumkan repositori di Cloud Source Repositories | |
storage.buckets.create |
Dapat membuat bucket Cloud Storage | Wajib untuk:
|
storage.buckets.get |
Dapat mendapatkan bucket Cloud Storage | |
storage.buckets.list |
Dapat mencantumkan bucket Cloud Storage | |
storage.objects.list |
Dapat mencantumkan objek Cloud Storage | |
storage.objects.update |
Dapat memperbarui objek Cloud Storage | |
storage.objects.create |
Dapat menulis objek Cloud Storage | |
storage.objects.delete |
Dapat menghapus objek Cloud Storage | |
storage.objects.get |
Dapat membaca objek Cloud Storage | |
artifactregistry.repositories.uploadArtifacts |
Dapat mengupload artefak ke repositori di Artifact Registry | Diperlukan untuk mengelola artefak di Artifact Registry. |
artifactregistry.repositories.downloadArtifacts |
Dapat mendownload artefak dari repositori di Artifact Registry | |
artifactregistry.aptartifacts.create |
Dapat mengupload artefak Apt ke Artifact Registry | |
artifactregistry.dockerimages.get |
Dapat mendapatkan image Docker dari Artifact Registry | |
artifactregistry.dockerimages.list |
Dapat mencantumkan image Docker yang disimpan di Artifact Registry | |
artifactregistry.kfpartifacts.create |
Dapat mengupload artefak KFP ke Artifact Registry | |
artifactregistry.locations.get |
Dapat mendapatkan informasi tentang lokasi untuk resource di Artifact Registry | |
artifactregistry.locations.list |
Dapat mencantumkan lokasi yang didukung untuk Artifact Registry | |
artifactregistry.mavenartifacts.get |
Dapat mendapatkan paket Maven dari Artifact Registry | |
artifactregistry.mavenartifacts.list |
Dapat mencantumkan paket Maven dari Artifact Registry | |
artifactregistry.npmpackages.get |
Dapat mendapatkan paket npm dari Artifact Registry | |
artifactregistry.npmpackages.list |
Dapat mencantumkan paket npm dari Artifact Registry | |
artifactregistry.projectsettings.get |
Dapat mendapatkan setelan project dari Artifact Registry | |
artifactregistry.pythonpackages.get |
Dapat mendapatkan paket Python dari Artifact Registry | |
artifactregistry.pythonpackages.list |
Dapat mencantumkan paket Python dari Artifact Registry | |
artifactregistry.yumartifacts.create |
Dapat mengupload artefak Yum ke Artifact Registry | |
artifactregistry.repositories.createOnPush |
Dapat membuat repositori gcr.io di Artifact Registry saat pertama kali image di-push ke nama host gcr.io dalam project. | |
artifactregistry.repositories.get |
Dapat mendapatkan repositori dari Artifact Registry | |
artifactregistry.repositories.list |
Dapat mencantumkan repositori di Artifact Registry | |
artifactregistry.repositories.listEffectiveTags |
Dapat mencantumkan tag untuk artefak di Artifact Registry | Diperlukan untuk mengelola tag untuk artefak di Artifact Registry. |
artifactregistry.repositories.listTagBindings |
Dapat mencantumkan informasi binding tag untuk artefak di Artifact Registry | |
artifactregistry.tags.create |
Dapat membuat tag di Artifact Registry | |
artifactregistry.tags.get |
Dapat mendapatkan tag dari Artifact Registry | |
artifactregistry.tags.list |
Dapat mencantumkan tag di Artifact Registry | |
artifactregistry.tags.update |
Dapat memperbarui tag di Artifact Registry | |
artifactregistry.versions.list |
Dapat mencantumkan versi di Artifact Registry | |
artifactregistry.versions.get |
Dapat mendapatkan versi di Artifact Registry | |
containeranalysis.occurrences.create |
Dapat membuat kemunculan Artifact Analysis | Akun layanan Cloud Build tidak menggunakan izin ini, tetapi izin tersebut disertakan untuk kompatibilitas mundur. |
containeranalysis.occurrences.delete |
Dapat menghapus kemunculan Artifact Analysis | |
containeranalysis.occurrences.get |
Dapat mendapatkan kemunculan Artifact Analysis | |
containeranalysis.occurrences.list |
Dapat mencantumkan kemunculan Artifact Analysis | |
containeranalysis.occurrences.update |
Dapat memperbarui kemunculan Artifact Analysis |
Pemicu build
Saat membuat pemicu build, Anda harus memilih akun layanan yang digunakan untuk menjalankan build. Anda dapat mengonfigurasi setiap pemicu dengan akun layanan yang berbeda. Satu-satunya pengecualian adalah jika project Anda mengaktifkan akun layanan lama Cloud Build, yang akan memicu build secara default menggunakan akun layanan lama jika tidak ada akun lain yang dipilih.
Akses pengguna ke pemicu
Akses pengguna ke pemicu bergantung pada jenis akun layanan yang dikonfigurasi untuk pemicu:
Akun layanan lama Cloud Build (jika diaktifkan): Setiap pengguna dengan peran Cloud Build Editor dapat membuat dan langsung menjalankan pemicu. Misalnya, pengguna dapat menjalankan pemicu secara manual. Setiap pengguna dengan peran Cloud Build Editor dapat memperbarui pemicu selama pemicu menggunakan akun layanan lama Cloud Build.
Akun layanan yang ditentukan pengguna atau akun layanan default Compute Engine: Setiap pengguna dengan peran Cloud Build Editor yang memiliki izin
iam.serviceAccounts.actAs
dapat membuat dan langsung menjalankan pemicu. Misalnya, pengguna dapat menjalankan pemicu secara manual. Setiap pengguna dengan peran Cloud Build Editor dapat memperbarui pemicu selama mereka memiliki iziniam.serviceAccounts.actAs
di akun layanan yang dikonfigurasi sebelumnya dan akun layanan baru yang ditentukan di pemicu. Untuk memberi pengguna izin ini, Anda dapat memberinya peran standar dengan izin, seperti peran Service Account User (roles/iam.serviceAccountUser
). Atau, Anda dapat membuat peran IAM kustom dengan iziniam.serviceAccounts.actAs
, lalu memberikan peran tersebut kepada pengguna. Untuk mempelajari izin akun layanan lebih lanjut, lihat Peran untuk autentikasi akun layanan.
Hak istimewa pemicu saat build
Akun layanan yang dikonfigurasi untuk pemicu build dapat memberikan izin waktu build yang ditingkatkan kepada pengguna yang menggunakan pemicu untuk memanggil build. Hal ini berlaku untuk akun layanan lama dan akun layanan yang ditentukan pengguna. Perhatikan implikasi keamanan berikut saat menggunakan pemicu build:
Pengguna yang tidak memiliki akses ke project Google Cloud Anda, tetapi memiliki akses tulis ke repositori yang terkait dengan pemicu build dalam project akan memiliki izin untuk mengubah kode yang sedang dibuat. Misalnya, pengguna dapat secara tidak langsung memanggil pemicu saat mereka mendorong kode sumber baru ke repositori yang terhubung.
Jika Anda menggunakan pemicu permintaan pull GitHub, setiap pengguna dengan akses baca ke repositori dapat mengirimkan permintaan pull, yang dapat memicu build yang menyertakan perubahan pada kode dalam permintaan pull. Anda dapat menonaktifkan perilaku ini dengan memilih opsi Kontrol komentar saat membuat pemicu permintaan pull GitHub. Memilih opsi ini akan memastikan bahwa build hanya dimulai jika pemilik repositori atau kolaborator mengomentari
/gcbrun
. Untuk mengetahui informasi tentang cara menggunakan Kontrol komentar dengan Pemicu GitHub, lihat Membuat pemicu GitHub.
Batasan
Jika perlu mengautentikasi antarlayanan menggunakan token ID, Anda harus menjalankan build dengan akun layanan yang ditentukan pengguna. Akun layanan lama Cloud Build tidak dapat digunakan untuk membuat token ID.
Misalnya, jika Anda menggunakan aplikasi platform serverless seperti fungsi Cloud Run, Cloud Run, atau App Engine, dan ingin memanggil aplikasi dari Cloud Build, hal ini memerlukan akun layanan yang ditentukan pengguna yang dikonfigurasi dengan izin yang diperlukan untuk autentikasi layanan ke layanan.
Untuk mengetahui petunjuknya, lihat Memberikan otorisasi akses layanan ke layanan.
Langkah selanjutnya
- Pelajari akun layanan yang ditentukan pengguna.
- Pelajari cara mengonfigurasi akses untuk akun layanan default Cloud Build.
- Pelajari cara mengonfigurasi akses ke resource Cloud Build.
- Pelajari izin yang diperlukan untuk melihat log build.