Perubahan akun layanan default Cloud Build

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 bulan Mei dan Juni 2024. Perubahan ini akan meningkatkan 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 lama Cloud Build.

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:

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 tingkat organisasi atau di tingkat 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:

  • Gunakan akun layanan default Compute Engine, baik untuk build yang dikirimkan secara manual maupun build yang dipicu. Tetapkan batasan berikut dalam kebijakan organisasi Anda:

    • Tidak diterapkan: constraints/cloudbuild.useBuildServiceAccount
    • Diterapkan: constraints/cloudbuild.useComputeServiceAccount
  • Gunakan akun layanan yang ditentukan pengguna, untuk build yang dikirimkan secara manual dan build yang dipicu. Opsi ini umumnya adalah opsi yang paling aman. Tetapkan batasan berikut dalam kebijakan organisasi Anda:

    • Tidak diterapkan: constraints/cloudbuild.useBuildServiceAccount
    • Tidak diterapkan: constraints/cloudbuild.useComputeServiceAccount
  • Terus menggunakan akun layanan lama Cloud Build. Jika Anda memahami konsekuensi terhadap keamanan yang terlibat, tetapkan batasan berikut dalam kebijakan organisasi Anda:

    • Tidak Diterapkan: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Tidak diterapkan: constraints/cloudbuild.useComputeServiceAccount
    • Diterapkan: constraints/cloudbuild.useBuildServiceAccount
  • 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. Pastikan Anda memahami pertimbangan keamanan yang terlibat, tetapkan batasan berikut dalam kebijakan organisasi Anda:

    • Diterapkan: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Diterapkan: constraints/cloudbuild.useComputeServiceAccount
    • Diterapkan: constraints/cloudbuild.useBuildServiceAccount

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-account

Cloud 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/defaultServiceAccount

Ganti nilai placeholder dengan nilai berikut: