Cloud Build otomatis memilih akun layanan Cloud Build untuk menjalankan build atas nama Anda, kecuali jika Anda mengganti perilaku ini. Akun layanan default ini mungkin memiliki izin yang terlalu luas untuk kasus penggunaan Anda, seperti akses ke bucket Cloud Storage apa pun di project Anda.
Perilaku default tentang cara Cloud Build menggunakan akun layanan di project baru diubah selama beberapa minggu pada Mei dan Juni 2024. Perubahan ini akan meningkatkan kualitas postur keamanan default pelanggan kami pada masa mendatang. Anda dapat memilih untuk tidak menerapkan perubahan ini dengan mengonfigurasi batasan kebijakan organisasi.
Sebelum perubahan ini, Cloud Build menggunakan akun layanan khusus Cloud Build sebagai default, yang kini disebut sebagai akun layanan lama Cloud Build.
Setelah perubahan ini, Cloud Build kini menggunakan akun layanan default Compute Engine sebagai akun layanan default.
Dampak terhadap proyek Anda bergantung pada apakah Anda merupakan bagian dari organisasi:
Project tanpa organisasi. Jika Anda menjalankan build pertama di project setelah perubahan, project tersebut akan menggunakan akun layanan Compute Engine secara default untuk build yang dikirimkan menggunakan Cloud Build API atau Google Cloud CLI. Project ini tidak akan memiliki opsi untuk menggunakan akun layanan lama Cloud Build, tetapi dapat menggunakan akun layanan yang ditentukan pengguna.
Project dengan organisasi. Jika Anda menjalankan build pertama di project setelah perubahan, project tersebut akan menggunakan akun layanan Compute Engine secara default untuk build yang dikirimkan menggunakan Cloud Build API atau Google Cloud CLI. Anda dapat menggunakan akun layanan yang ditentukan pengguna atau memilih tidak ikut perubahan dengan mengaktifkan akun layanan Cloud Build di organisasi Anda.
Project yang sudah ada tanpa organisasi. Jika Anda menjalankan build pertama di project sebelum perubahan, project tersebut akan terus menggunakan perilaku lama, dengan menggunakan akun layanan lama Cloud Build secara default untuk semua build Anda. Anda dapat terus menggunakan akun layanan yang ditentukan pengguna, dengan memilih akun layanan Compute Engine atau membuat akun layanan Anda sendiri.
Project yang sudah ada dengan organisasi. Jika Anda menjalankan build pertama di project sebelum perubahan, project tersebut akan terus menggunakan perilaku lama, dengan menggunakan akun layanan lama Cloud Build secara default. Anda juga dapat terus menggunakan akun layanan yang ditentukan pengguna.
Pemicuan. Anda harus menentukan akun layanan saat membuat atau memperbarui pemicu, kecuali jika akun layanan default untuk project Anda adalah akun layanan lama Cloud Build.
Nama akun layanan Cloud Build: Akun layanan Cloud Build akan disebut sebagai akun layanan Cloud Build lama.
Apa yang perlu Anda lakukan?
Jika Anda adalah bagian dari organisasi, organisasi Anda dapat mengonfigurasi perilaku semua project dengan menyiapkan kebijakan organisasi dengan batasan yang dipilih.
Organisasi Anda dapat memilih tidak ikut perubahan ini dengan menetapkan batasan boolean kebijakan organisasi berikut:
- Tidak diterapkan:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Tidak diterapkan:
constraints/cloudbuild.useComputeServiceAccount - Diterapkan:
constraints/cloudbuild.useBuildServiceAccount
Jika Anda tidak dapat atau tidak ingin menyesuaikan kebijakan organisasi, dan Anda mengaktifkan Cloud Build API setelah perubahan, pastikan akun layanan default Compute Engine atau akun layanan yang dibuat pengguna memiliki izin yang cukup untuk build Anda. Khususnya, pengguna yang mengirimkan build harus
memiliki izin iam.serviceAccounts.actAs di akun
layanan.
Batasan kebijakan organisasi baru
Cloud Build telah memperkenalkan batasan boolean kebijakan organisasi baru untuk mengonfigurasi:
- Kemampuan untuk menggunakan akun layanan lama Cloud Build.
- Akun layanan default untuk semua project dalam organisasi.
Untuk mengubah kebijakan organisasi, Anda dapat menggunakan Google Cloud konsol atau Google Cloud CLI:
KonsolGoogle Cloud : Pilih batasan yang ingin Anda ubah dan tetapkan opsi Penerapan ke Aktif atau Nonaktif di konsolGoogle Cloud .
Google Cloud CLI: Konfigurasi penerapan batasan di Google Cloud CLI.
Untuk mempelajari lebih lanjut kebijakan organisasi, lihat Pengantar Layanan Kebijakan Organisasi.
Mengonfigurasi ketersediaan akun layanan lama Cloud Build
Untuk mengonfigurasi ketersediaan akun layanan lama Cloud Build saat Anda mengaktifkan Cloud Build API, Cloud Build akan memperkenalkan batasan kebijakan boolean berikut:
Tidak diterapkan:
constraints/cloudbuild.disableCreateDefaultServiceAccount. Mengizinkan penggunaan akun layanan lama Cloud Build di project baru.Diterapkan:
constraints/cloudbuild.disableCreateDefaultServiceAccount. Menonaktifkan penggunaan akun layanan lama Cloud Build di project baru. Ini adalah nilai default batasan.
Batasan ini hanya memengaruhi project yang menjalankan build pertamanya setelah perubahan diluncurkan. Jika Anda memutuskan untuk tidak menerapkan batasan kebijakan, perubahan ini bersifat permanen untuk semua project yang menjalankan build pertamanya saat konfigurasi tersebut aktif. Anda tidak dapat menonaktifkan ketersediaan akun layanan lama Cloud Build di project tempat akun layanan tersebut sebelumnya tersedia. Namun, meskipun akun layanan tersedia, Anda dapat mencegah pengguna di organisasi Anda menggunakannya, seperti yang dijelaskan di bagian berikut.
Seperti semua kebijakan dan batasan organisasi, Anda dapat menetapkan kebijakan ini di level organisasi atau di level project.
Mengonfigurasi akun layanan default untuk organisasi
Untuk mengonfigurasi akun layanan default yang digunakan dalam organisasi, Cloud Build memperkenalkan dua batasan boolean kebijakan baru:
constraints/cloudbuild.useBuildServiceAccount: Mengonfigurasi penggunaan akun layanan lama Cloud Build.constraints/cloudbuild.useComputeServiceAccount: Mengonfigurasi penggunaan akun layanan default Compute Engine.
Anda dapat mengonfigurasi kebijakan ini secara terpisah, tetapi paling berguna jika aturan penerapan digabungkan dalam skenario berikut:
Opsi paling aman: Gunakan akun layanan yang ditentukan pengguna untuk build yang dikirimkan secara manual dan build yang dipicu. Untuk melakukannya, tetapkan batasan berikut dalam kebijakan organisasi Anda:
- Tidak diterapkan:
constraints/cloudbuild.useBuildServiceAccount - Tidak diterapkan:
constraints/cloudbuild.useComputeServiceAccount
- Tidak diterapkan:
Akun layanan default Compute Engine: Untuk menggunakan akun layanan default Compute Engine untuk build yang dikirimkan secara manual dan build yang dipicu, tetapkan batasan berikut dalam kebijakan organisasi Anda:
- Tidak diterapkan:
constraints/cloudbuild.useBuildServiceAccount - Diterapkan:
constraints/cloudbuild.useComputeServiceAccount
- Tidak diterapkan:
Akun layanan lama Cloud Build: Jika Anda memahami konsekuensi keamanan yang ditimbulkannya, tetapkan batasan berikut dalam kebijakan organisasi Anda:
- Tidak Diterapkan:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Tidak diterapkan:
constraints/cloudbuild.useComputeServiceAccount - Diterapkan:
constraints/cloudbuild.useBuildServiceAccount
- Tidak Diterapkan:
Akun layanan default Compute Engine dan lama: Terus gunakan akun layanan lama Cloud Build untuk project yang telah mengaktifkan Cloud Build API sebelum perubahan, dan mulai gunakan akun layanan default Compute Engine untuk project baru. Jika Anda memahami konsekuensi terhadap keamanan yang terlibat, tetapkan batasan berikut dalam kebijakan organisasi Anda:
- Diterapkan:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Diterapkan:
constraints/cloudbuild.useComputeServiceAccount - Diterapkan:
constraints/cloudbuild.useBuildServiceAccount
- Diterapkan:
Pedoman untuk peran IAM
Kebijakan organisasi iam.automaticIamGrantsForDefaultServiceAccounts mencegah akun layanan default tertentu diberi
peran Editor
(roles/editor) saat pembuatan. Kebijakan ini diaktifkan di organisasi
mulai 3 Mei 2024, dan berlaku untuk akun layanan default Compute Engine dan App Engine yang dibuat pada atau setelah 3 Mei 2024. Sebaiknya biarkan kebijakan ini diaktifkan karena peran Editor sangat luas dan memberikan lebih banyak izin daripada yang diperlukan untuk sebagian besar kasus penggunaan.
Kebijakan organisasi ini tidak berlaku untuk akun layanan lama Cloud Build karena akun layanan tersebut tidak memiliki peran Editor yang diberikan secara default. Namun, akun layanan lama Cloud Build memiliki peran Akun Layanan Cloud Build (roles/cloudbuild.builds.builder) yang diberikan secara default, yang juga memiliki berbagai izin. Jika Anda menggunakan
akun layanan lama Cloud Build,
sebaiknya verifikasi apakah peran Akun Layanan Cloud Build diperlukan untuk kasus penggunaan Anda, atau apakah Anda dapat menggantinya dengan peran yang memiliki lebih sedikit izin.
Untuk mengetahui informasi selengkapnya, lihat Membatasi penggunaan akun layanan IAM dan Menggunakan IAM dengan aman.
Mendapatkan akun layanan default saat ini untuk project
Untuk menentukan akun layanan yang digunakan Cloud Build sebagai default untuk project, Anda dapat menggunakan Google Cloud CLI atau Cloud Build API:
gcloud CLI
Jalankan perintah berikut untuk mendapatkan akun layanan default untuk project saat ini:
gcloud builds get-default-service-accountCloud Build API
Gunakan cURL untuk memanggil Cloud Build API:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccountGanti nilai placeholder dengan nilai berikut:
PROJECT_ID: ID project.REGION: salah satu region yang didukung.