Seperti halnya semua produk Google Cloud, Identity and Access Management melindungi Cloud Deploy dengan mengontrol pengguna dan akun layanan terautentikasi yang dapat melakukan tindakan yang mana.
Dokumen ini menjelaskan beberapa fitur IAM, dan memberikan petunjuk untuk melindungi pengiriman aplikasi Anda yang dikelola menggunakan Cloud Deploy. Berikut adalah beberapa cara khusus 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 merupakan kumpulan binding dan metadata. Peran binding memberikan satu peran ke satu atau beberapa akun utama (pengguna, grup, atau akun layanan), ditambah conditions spesifik per konteks yang mengontrol apakah binding diterapkan atau tidak.
Untuk mengetahui informasi selengkapnya tentang kebijakan IAM, baca artikel Memahami kebijakan.
Tentang kondisi IAM
Dengan kondisi IAM, Anda dapat mengontrol akses ke resource dan tindakan Cloud Deploy berdasarkan kondisi yang dikomputasi saat runtime. Misalnya, Anda dapat membatasi promosi untuk target tertentu sehingga hanya diizinkan selama jangka waktu tertentu.
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 menjadi tujuan permintaan. Kemudian, Anda dapat membandingkannya dengan resource atau resource yang dapat diakses akun utama.
Memberikan akses terperinci menggunakan fitur IAM lanjutan
Fitur IAM lanjutan ini memungkinkan Anda mengontrol akses ke resource dan jenis resource tertentu dalam kondisi tertentu.
Prosedur di bagian ini memberikan akses ke resource tertentu (target,
pipeline pengiriman). Anda juga dapat memberikan akses di level 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 pada 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 tersebut ke grup atau ke 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
Berikan akses untuk mengonfigurasi target tertentu
Untuk memberikan akses 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
), Anda menentukan target yang akan diberikan akses.
Akses ke target tertentu memberi akun utama kemampuan untuk mengupdate 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 kepada grup, tetapi Anda juga dapat memberikan peran tersebut kepada pengguna atau ke 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 sudah ada kebijakan yang mengikat peran ke 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
mengambil pasangan key:value, dengan kuncinya adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi ini merujuk pada kumpulan atribut kontekstual tentang permintaan dan dievaluasi ke boolean.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba mempromosikan rilis, untuk mengonfirmasi bahwa target promosi cocok dengan target dalam ekspresi.
Ekspresi ini menggunakan atribut API
clouddeploy.com/rolloutTarget
, yang merupakan target yang coba dipromosikan oleh akun utama. Ekspresi ini membandingkan dengan target yang utama diberikan akses promosi.Menetapkan 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 utama untuk menyetujui peluncuran
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
mengambil pasangan key:value, dengan kuncinya adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi ini merujuk pada kumpulan atribut kontekstual tentang permintaan dan dievaluasi ke boolean.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba menyetujui peluncuran, untuk mengonfirmasi bahwa target cocok dengan target dalam ekspresi.
Ekspresi ini menggunakan atribut API
clouddeploy.com/rolloutTarget
, yang merupakan target peluncuran, dan membandingkannya dengan target yang utamanya diberi akses persetujuan. Atributclouddeploy.googleapis.com/rolloutTarget
adalah satu-satunya atribut API yang didukung Cloud Deploy.Menetapkan 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 periode waktu tertentu
Binding di bagian ini memberikan izin utama untuk mempromosikan rilis untuk pipeline, dan menyertakan kondisi yang menentukan jangka waktu selama binding diterapkan.
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
mengambil pasangan key:value, dengan kuncinya adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi ini merujuk pada kumpulan atribut kontekstual tentang permintaan dan dievaluasi ke boolean. Ekspresi ini memeriksa apakah waktu permintaan terjadi dari Senin hingga Jumat.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba mempromosikan rilis, untuk mengonfirmasi bahwa target promosi cocok dengan target dalam ekspresi.
Menetapkan 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 utama untuk menyetujui peluncuran, dan menyertakan kondisi yang menentukan jangka waktu selama binding diterapkan
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
mengambil key:value pair dengan kuncinya adalahexpression
dan nilainya adalah ekspresi CEL yang mereferensikan kumpulan atribut kontekstual tentang permintaan dan dievaluasi ke boolean. Ekspresi ini memeriksa apakah waktu permintaan terjadi dari Senin hingga Jumat.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba menyetujui peluncuran, untuk mengonfirmasi bahwa target peluncuran cocok dengan target dalam ekspresi.
Menetapkan 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 kembali tugas, berdasarkan jenis tugas
Binding di bagian ini memberikan izin utama untuk mencoba kembali 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
mengambil pasangan key:value, dengan kuncinya adalahexpression
dan nilainya adalah ekspresi CEL. Ekspresi ini merujuk pada kumpulan atribut kontekstual tentang permintaan dan dievaluasi ke boolean.Dalam hal ini, ekspresi dievaluasi, saat akun utama mencoba mencoba kembali tugas, untuk mengonfirmasi bahwa jenis tugas cocok dengan jenis tugas dalam ekspresi.
Ekspresi tersebut menggunakan atribut API
clouddeploy.com/jobType
, yang dapat berupadeploy
atauverify
.Menetapkan 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