Peran dan izin IAM

Halaman ini menjelaskan akun layanan, peran, dan izin Cloud Deploy.

Akses di Cloud Deploy dikontrol menggunakan Identity and Access Management (IAM). IAM memungkinkan Anda membuat dan mengelola izin untuk resource Google Cloud. Cloud Deploy menyediakan sekumpulan peran IAM yang telah ditetapkan sebelumnya dengan setiap peran berisi serangkaian izin. Anda dapat menggunakan peran-peran ini untuk memberikan akses yang lebih mendetail ke resource Google Cloud tertentu dan mencegah akses yang tidak diinginkan ke resource lain. IAM memungkinkan Anda menerapkan prinsip keamanan dengan hak istimewa terendah, sehingga Anda hanya memberikan akses yang diperlukan ke resource Anda.

Lihat Menggunakan IAM untuk membatasi akses Cloud Deploy untuk mempelajari fitur keamanan kontrol akses lanjutan.

Akun layanan di Cloud Deploy

Secara default, Cloud Deploy dijalankan menggunakan akun layanan Compute Engine default. Akun layanan tersebut memiliki izin yang memadai untuk merender manifes dan men-deploy ke target Anda.

Cari tahu lebih lanjut cara Cloud Deploy menggunakan akun layanan.

Peran Cloud Deploy yang telah ditetapkan

Dengan IAM, setiap metode API di Cloud Deploy API mengharuskan identitas yang membuat permintaan API memiliki izin yang sesuai agar dapat menggunakan resource tersebut. Izin diberikan dengan menetapkan kebijakan yang memberikan peran ke akun utama (akun pengguna, grup, atau layanan) project Anda. Anda dapat memberikan beberapa peran ke akun utama di resource yang sama.

Dokumentasi IAM mencakup referensi yang dapat ditelusuri untuk semua peran bawaan.

Tabel berikut mencantumkan peran IAM Cloud Deploy dan izin yang disertakan:

Izin

(roles/clouddeploy.admin)

Kontrol penuh atas resource Cloud Deploy.

clouddeploy.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.approver)

Izin untuk menyetujui atau menolak peluncuran.

clouddeploy.config.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.rollouts.approve

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.customTargetTypeAdmin)

Izin untuk mengelola resource CustomTargetType

clouddeploy.config.get

clouddeploy.customTargetTypes.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.developer)

Izin untuk mengelola konfigurasi deployment tanpa izin untuk mengakses resource operasional, seperti target.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.jobRunner)

Izin untuk menjalankan pekerjaan Cloud Deploy tanpa izin untuk mengirim ke target.

clouddeploy.config.get

logging.logEntries.create

storage.objects.create

storage.objects.get

storage.objects.list

(roles/clouddeploy.operator)

Izin untuk mengelola konfigurasi deployment.

clouddeploy.automationRuns.*

clouddeploy.automations.*

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.*

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.targets.create

clouddeploy.targets.delete

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.releaser)

Izin untuk membuat rilis dan peluncuran Cloud Deploy.

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.deliveryPipelines.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.targets.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.viewer)

Dapat melihat resource Cloud Deploy.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.get

clouddeploy.operations.list

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

resourcemanager.projects.get

resourcemanager.projects.list

Selain peran Cloud Deploy yang telah ditetapkan, peran Viewer, Editor, dan Pemilik dasar juga mencakup izin yang terkait dengan Cloud Deploy. Namun, sebaiknya berikan peran yang telah ditetapkan jika memungkinkan untuk mematuhi prinsip keamanan dengan hak istimewa terendah.

Izin

Tabel berikut mencantumkan izin yang harus dimiliki pemanggil untuk memanggil setiap metode:

Metode API Izin yang diperlukan Deskripsi
automations.create() clouddeploy.automations.create Buat resource otomatisasi baru.
automations.delete() clouddeploy.automations.delete Hapus resource otomatisasi yang ada.
automations.get() clouddeploy.automations.get Mengambil detail untuk masing-masing resource otomatisasi.
automations.list() clouddeploy.automations.list Mencantumkan resource otomatisasi dan metadatanya.
automations.update() clouddeploy.automations.update Perbarui resource otomatisasi yang ada.
automationRuns.cancel() clouddeploy.automationRuns.cancel Membatalkan otomatisasi yang berjalan.
automationRuns.get() clouddeploy.automationRuns.get Mengambil detail untuk setiap otomatisasi yang dijalankan.
automationRuns.list() clouddeploy.automationRuns.list Mencantumkan operasi otomatisasi dan metadatanya.
customTargetTypes.create() clouddeploy.customTargetType.create Buat resource jenis target kustom.
customTargetTypes.delete() clouddeploy.customTargetType.delete Hapus resource jenis target kustom.
customTargetTypes.get() clouddeploy.customTargetType.get Mengambil detail untuk jenis target kustom.
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy Mendapatkan kebijakan IAM untuk resource jenis target kustom.
customTargetTypes.list() clouddeploy.customTargetType.list Cantumkan jenis target kustom yang tersedia dan metadatanya.
customTargetTypes.patch() clouddeploy.customTargetType.patch Memperbarui jenis target kustom yang ada.
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.setIamPolicy Menetapkan kebijakan IAM untuk resource jenis target kustom.
deliveryPipelines.create() clouddeploy.deliveryPipelines.create Membuat resource pipeline pengiriman baru.
deliveryPipelines.delete() clouddeploy.deliveryPipelines.delete Menghapus resource pipeline pengiriman yang ada.
deliveryPipelines.get() clouddeploy.deliveryPipelines.get Mengambil detail untuk masing-masing pipeline pengiriman.
deliveryPipelines.getIamPolicy() clouddeploy.deliveryPipelines.getIamPolicy Mendapatkan kebijakan IAM untuk resource pipeline pengiriman.
deliveryPipelines.list() clouddeploy.deliveryPipelines.list Mencantumkan pipeline pengiriman dan metadatanya.
deliveryPipelines.rollbackTarget() clouddeploy.rollouts.rollback Me-roll back target.
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy Menetapkan kebijakan IAM untuk resource pipeline pengiriman.
deliveryPipelines.update() clouddeploy.deliveryPipelines.update Memperbarui resource pipeline pengiriman yang ada.
jobRuns.get() clouddeploy.jobRuns.get Ambil resource JobRuns.
jobRuns.list() clouddeploy.jobRuns.list Cantumkan resource JobRuns dan metadatanya.
jobRuns.terminate() clouddeploy.jobRuns.terminate Menghentikan operasi tugas yang sedang berlangsung.
operations.cancel() clouddeploy.operations.cancel Membatalkan operasi yang berjalan lama.
operation.delete() clouddeploy.operations.delete Menghapus operasi yang berjalan lama.
operations.get() clouddeploy.operations.get Mendapatkan operasi tertentu yang berjalan lama (misalnya, untuk menampilkan status pembuatan rilis).
operations.list() clouddeploy.operations.list Mencantumkan operasi yang berjalan lama.
releases.abandon() clouddeploy.releases.abandon Abaikan rilis dan cegah peluncuran lebih lanjut terhadap rilis.
releases.create() clouddeploy.releases.create Buat resource rilis baru. Pemanggil juga memerlukan izin iam.serviceAccounts.actAs pada akun layanan yang digunakan untuk merender manifes.
releases.get() clouddeploy.releases.get Mengambil detail untuk setiap rilis.
releases.list() clouddeploy.releases.list Mencantumkan rilis dan metadata.
releases.promote() clouddeploy.rollouts.create Promosikan rilis ke target berikutnya.
rollouts.advance() clouddeploy.rollouts.advance Melanjutkan peluncuran ke fase berikutnya.
rollouts.approve() clouddeploy.rollouts.approve Setujui atau tolak peluncuran dengan status persetujuan required.
rollouts.cancel() clouddeploy.rollouts.cancel Batalkan peluncuran.
rollouts.create() clouddeploy.rollouts.create Buat resource peluncuran baru. Pemanggil juga memerlukan izin iam.serviceAccounts.actAs di project atau akun layanan yang digunakan untuk men-deploy.
rollouts.get() clouddeploy.rollouts.get Mengambil detail untuk peluncuran individual.
rollouts.ignoreJob() clouddeploy.rollouts.ignoreJob Abaikan tugas yang gagal.
rollouts.list() clouddeploy.rollouts.list Menampilkan daftar peluncuran dan metadata.
rollouts.retryJob() clouddeploy.rollouts.retryJob Mencoba lagi tugas yang gagal.
targets.create() clouddeploy.targets.create Buat resource target baru.
targets.delete() clouddeploy.targets.delete Hapus resource target yang ada.
targets.get() clouddeploy.targets.get Mengambil detail untuk masing-masing target.
targets.getIamPolicy() clouddeploy.targets.getIamPolicy Mendapatkan kebijakan IAM untuk resource target.
targets.list() clouddeploy.targets.list Mencantumkan target dan metadatanya.
targets.setIamPolicy() clouddeploy.targets.setIamPolicy Menetapkan kebijakan IAM untuk resource target.
targets.update() clouddeploy.targets.update Memperbarui resource target yang ada.

Menggunakan IAM untuk membatasi tindakan pada resource Cloud Deploy

Anda dapat mengamankan resource Cloud Deploy menggunakan IAM dengan cara berikut:

  • API meta IAM

    Gunakan setIamPolicy di resource Cloud Deploy untuk membatasi tindakan pada resource tersebut.

  • IAM Bersyarat

    Menerapkan kebijakan akses secara terprogram, termasuk conditions yang digunakan untuk memberikan atau menolak akses.

Anda dapat menggunakan kebijakan dan ketentuan ini untuk membatasi tindakan berikut pada resource Cloud Deploy:

  • Membuat target atau pipeline pengiriman

    Anda dapat memberikan akses ini kepada pengguna atau grup tertentu.

  • Memperbarui atau menghapus pipeline pengiriman tertentu

    Anda dapat memberikan akses ini kepada pengguna atau grup tertentu.

  • Membuat rilis untuk pipeline pengiriman tertentu

    Anda dapat memberikan akses ini kepada pengguna atau grup tertentu.

  • Memperbarui atau menghapus target tertentu

    Anda dapat memberikan akses ini kepada pengguna atau grup tertentu.

  • Membuat atau menyetujui peluncuran atau mempromosikan rilis

    Anda dapat memberikan akses ini kepada pengguna atau grup tertentu untuk pipeline pengiriman atau target tertentu.

    Anda juga dapat menetapkan kondisi yang membatasi akses ini dalam jangka waktu yang ditentukan.

Langkah selanjutnya