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 tidak perlu luas untuk kasus penggunaan Anda, seperti akses ke repositori Container Registry dan bucket Cloud Storage apa pun dalam project Anda.

Perilaku default untuk cara Cloud Build menggunakan akun layanan di project baru berubah selama beberapa minggu pada bulan Mei dan Juni 2024. Perubahan ini akan meningkatkan postur keamanan default pelanggan kami di 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 sekarang disebut sebagai akun layanan lama Cloud Build.

Setelah perubahan ini, Cloud Build kini menggunakan akun layanan default Compute Engine sebagai akun layanan default.

Dampak pada project Anda bergantung pada apakah Anda adalah 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 dalam perubahan ini dengan mengaktifkan akun layanan Cloud Build di organisasi Anda.

  • Project yang ada tanpa organisasi. Jika Anda menjalankan build pertama di project sebelum perubahan, project tersebut akan melanjutkan dengan perilaku lama, 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 ada dengan organisasi. Jika Anda menjalankan build pertama di project sebelum perubahan, project tersebut akan melanjutkan dengan perilaku lama, 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 untuk tidak ikut dalam perubahan ini dengan menetapkan batasan boolean kebijakan organisasi berikut:

  • Tidak Diterapkan: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Tidak diterapkan: constraints/cloudbuild.useComputeServiceAccount
  • Diberlakukan: constraints/cloudbuild.useBuildServiceAccount

Jika Anda tidak dapat atau tidak ingin menyesuaikan kebijakan organisasi, dan Anda mengaktifkan Cloud Build API setelah perubahan, validasikan bahwa akun layanan default Compute Engine atau akun layanan yang dibuat pengguna memiliki izin yang memadai untuk build Anda. Secara khusus, 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 konsol Google Cloud atau Google Cloud CLI:

Untuk mempelajari kebijakan organisasi lebih lanjut, 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 dalam project baru.

  • Diberlakukan: 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 sebelumnya tersedia. Namun, meskipun akun layanan tersedia, Anda dapat mencegah pengguna di organisasi menggunakan akun tersebut, 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 di organisasi, Cloud Build memperkenalkan dua batasan Boolean kebijakan baru:

  • constraints/cloudbuild.useBuildServiceAccount: Mengonfigurasi penggunaan akun layanan lama Cloud Build.
  • constraints/cloudbuild.useComputeServiceAccount: Konfigurasikan 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
    • Diberlakukan: constraints/cloudbuild.useComputeServiceAccount
  • Gunakan akun layanan yang ditentukan pengguna, baik untuk build yang dikirimkan secara manual maupun build yang dipicu. Ini umumnya merupakan opsi yang paling aman. Tetapkan batasan berikut dalam kebijakan organisasi Anda:

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

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

    • Diberlakukan: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Diberlakukan: constraints/cloudbuild.useComputeServiceAccount
    • Diberlakukan: 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: