Akun layanan default Cloud Build

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:
  • Gunakan pemicu build.
  • Membuat, mencantumkan, mendapatkan, atau membatalkan build.
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:
  • Gunakan pemicu Bitbucket dan Cloud Source Repositories.
  • Menarik kode sumber dari Cloud Source Repositories.
source.repos.list Dapat mencantumkan repositori di Cloud Source Repositories
storage.buckets.create Dapat membuat bucket Cloud Storage Wajib untuk:
  • Menyimpan dan mendapatkan image di Container Registry ( Tidak digunakan lagi).
  • Menyimpan dan mendapatkan artefak di Cloud Storage.
  • Kirim build secara manual melalui gcloud builds submit.
  • Menyimpan log build di bucket log yang dibuat pengguna.
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 izin iam.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 izin iam.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