Seperti semua produk Google Cloud, Identity and Access Management melindungi Cloud Deploy dengan mengontrol pengguna dan akun layanan yang diautentikasi yang dapat melakukan tindakan tertentu.
Dokumen ini menjelaskan beberapa fitur IAM, dan memberikan petunjuk untuk melindungi pengiriman aplikasi Anda yang dikelola menggunakan Cloud Deploy. Berikut beberapa cara spesifik yang dapat Anda gunakan untuk membatasi akses ke tindakan dan resource di Cloud Deploy:
Memberikan izin untuk mempromosikan rilis ke target tertentu
Memberikan izin untuk menyetujui peluncuran ke target tertentu
Memberikan izin untuk mempromosikan rilis selama jangka waktu tertentu
Memberikan izin untuk menyetujui peluncuran selama jangka waktu tertentu
Sebelum memulai
Memahami konsep dasar IAM.
Pelajari peran dan izin Cloud Deploy.
Tentang fitur lanjutan IAM
Selain peran dan izin, Cloud Deploy menggunakan fitur IAM berikut untuk memberikan kontrol tersebut:
Tentang kebijakan IAM
Kebijakan IAM adalah kumpulan binding dan metadata. Binding peran memberikan satu peran kepada satu atau beberapa akun utama (pengguna, grup, atau akun layanan), ditambah kondisi khusus konteks yang mengontrol apakah binding akan diterapkan.
Untuk mengetahui informasi selengkapnya tentang kebijakan IAM, lihat Memahami kebijakan.
Tentang kondisi IAM
Dengan kondisi IAM, Anda dapat mengontrol akses ke resource dan tindakan Cloud Deploy berdasarkan kondisi yang dihitung saat runtime. Misalnya, Anda dapat membatasi promosi ke target tertentu sehingga hanya diizinkan selama jangka waktu yang ditentukan.
Tentang atribut API
Saat membuat kondisi IAM, Anda dapat mereferensikan atribut API untuk mendapatkan informasi runtime tentang permintaan. Misalnya, Anda dapat menggunakan atribut API untuk mendapatkan nama resource yang diminta. Kemudian, Anda dapat membandingkannya dengan resource atau resource yang dapat diakses oleh akun utama.
Memberikan akses terperinci menggunakan fitur IAM lanjutan
Fitur IAM lanjutan ini memungkinkan Anda mengontrol akses ke resource tertentu dan jenis resource dalam kondisi tertentu.
Prosedur di bagian ini memberikan akses ke resource tertentu (target,
pipeline pengiriman). Anda juga dapat memberikan akses di tingkat project, yang memengaruhi semua pipeline pengiriman atau semua target dalam project tersebut. Untuk menetapkan
kebijakan IAM untuk project, gunakan perintah gcloud projects set-iam-policy
:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Memberikan akses ke pipeline pengiriman tertentu
Anda dapat memberikan izin kepada akun utama untuk membuat, mengubah, dan menghapus semua pipeline pengiriman, hanya dengan memberikan peran yang sesuai. Namun, terkadang Anda mungkin ingin memberikan akses ini kepada akun utama untuk satu atau beberapa pipeline tertentu.
Untuk melakukannya, gunakan binding peran untuk mengikat
peran roles/clouddeploy.developer
dengan akun utama tersebut, lalu saat menerapkan
kebijakan (dengan setIamPolicy
), Anda menentukan pipeline pengiriman mana yang aksesnya
diberikan.
Untuk memberikan akses ke pipeline pengiriman tertentu:
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
Contoh di atas memberikan peran kepada pengguna, tetapi Anda juga dapat memberikan peran ke grup atau akun layanan.
Panggil perintah berikut untuk menerapkan file kebijakan ke pipeline pengiriman tertentu:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Memberikan akses untuk mengonfigurasi target tertentu
Untuk memberikan akses akun utama ke target tertentu, Anda dapat menggunakan
binding peran. Untuk melakukannya, ikat
peran roles/clouddeploy.operator
dengan akun utama tersebut, lalu saat menerapkan
kebijakan (dengan setIamPolicy
), tentukan target yang aksesnya diberikan.
Akses ke target tertentu memberi akun utama kemampuan untuk memperbarui dan menghapus target tersebut.
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.com
Contoh di atas memberikan peran ke grup, tetapi Anda juga dapat memberikan peran ke pengguna atau akun layanan.
Panggil perintah berikut untuk menerapkan file kebijakan ke target tertentu:
gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
Memberikan izin untuk mempromosikan rilis ke target tertentu
Prosedur ini mengasumsikan bahwa sudah ada kebijakan yang mengikat peran ke akun utama. Di sini, kita menambahkan kondisi yang menentukan target:
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
Dalam binding peran ini,
condition
menggunakan pasangan kunci:nilai, dengan kunci adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi ini mereferensikan kumpulan atribut kontekstual tentang permintaan dan dievaluasi menjadi boolean.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba mempromosikan rilis, untuk mengonfirmasi bahwa target promosi cocok dengan target dalam ekspresi.
Ekspresi menggunakan atribut API
clouddeploy.googleapis.com/rolloutTarget
, yang adalah target yang dipromosikan oleh akun utama. Ekspresi membandingkannya dengan target yang akses promosinya diberikan kepada akun utama.Tetapkan binding untuk pipeline pengiriman tertentu:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Jika ingin menetapkan binding ini untuk semua pipeline pengiriman, Anda dapat menetapkannya di level project:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Memberikan izin untuk menyetujui peluncuran ke target tertentu
Binding di bagian ini memberikan izin akun utama untuk menyetujui peluncuran
untuk pipeline, dan menyertakan kondisi yang menerapkan izin untuk
target prod
.
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
Dalam binding peran ini,
condition
menggunakan pasangan kunci:nilai, dengan kunci adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi mereferensikan kumpulan atribut kontekstual tentang permintaan dan dievaluasi menjadi boolean.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba menyetujui peluncuran, untuk mengonfirmasi bahwa target cocok dengan target dalam ekspresi.
Ekspresi menggunakan atribut API
clouddeploy.googleapis.com/rolloutTarget
, yang adalah target peluncuran, dan membandingkannya dengan target yang diperlukan untuk memberikan akses persetujuan kepada akun utama. Atributclouddeploy.googleapis.com/rolloutTarget
adalah satu-satunya atribut API yang didukung Cloud Deploy.Tetapkan binding untuk pipeline pengiriman tertentu:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Jika ingin menetapkan binding ini untuk semua pipeline pengiriman, Anda dapat menetapkannya di level project:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Memberikan izin untuk mempromosikan rilis selama jangka waktu tertentu
Binding di bagian ini memberikan izin utama untuk mempromosikan rilis untuk pipeline, dan menyertakan kondisi yang menentukan periode waktu selama binding berlaku.
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Promote during safe window
Dalam binding peran ini,
condition
menggunakan pasangan kunci:nilai, dengan kunci adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi mereferensikan kumpulan atribut kontekstual tentang permintaan dan dievaluasi menjadi boolean. Ekspresi ini memeriksa apakah waktu permintaan terjadi pada hari Senin hingga Jumat.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba mempromosikan rilis, untuk mengonfirmasi bahwa target promosi cocok dengan target dalam ekspresi.
Tetapkan binding untuk pipeline pengiriman tertentu:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Jika ingin menetapkan binding ini untuk semua pipeline pengiriman, Anda dapat menetapkannya di level project:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Memberikan izin untuk menyetujui peluncuran selama jangka waktu tertentu
Binding di bagian ini memberikan izin akun utama untuk menyetujui peluncuran, dan menyertakan kondisi yang menentukan periode waktu selama binding berlaku
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Approve during safe window
Dalam binding peran ini,
condition
menggunakan pasangan kunci:nilai, dengan kunci adalahexpression
dan nilainya adalah ekspresi CEL yang mereferensikan kumpulan atribut kontekstual tentang permintaan dan dievaluasi menjadi boolean. Ekspresi ini memeriksa apakah waktu permintaan terjadi pada hari Senin hingga Jumat.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba menyetujui peluncuran, untuk mengonfirmasi bahwa target peluncuran cocok dengan target dalam ekspresi.
Tetapkan binding untuk pipeline pengiriman tertentu:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Jika ingin menetapkan binding ini untuk semua pipeline pengiriman, Anda dapat menetapkannya di level project:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Memberikan izin untuk mencoba ulang tugas, berdasarkan jenis tugas
Binding di bagian ini memberikan izin akun utama untuk mencoba ulang tugas Cloud Deploy, berdasarkan jenis tugas
Buat file kebijakan dengan binding berikut:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy" title: Retry deploy job
Dalam binding peran ini,
condition
menggunakan pasangan kunci:nilai, dengan kunci adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi mereferensikan kumpulan atribut kontekstual tentang permintaan dan dievaluasi menjadi boolean.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba mencoba ulang tugas, untuk mengonfirmasi bahwa jenis tugas cocok dengan jenis tugas dalam ekspresi.
Ekspresi menggunakan atribut API
clouddeploy.googleapis.com/jobType
, yang dapat berupadeploy
atauverify
.Tetapkan binding untuk pipeline pengiriman tertentu:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Jika ingin menetapkan binding ini untuk semua pipeline pengiriman, Anda dapat menetapkannya di level project:
gcloud projects set-iam-policy PROJECT POLICY_FILE