Topik ini menjelaskan cara menambahkan, mengubah, dan menghapus binding peran bersyarat dalam kebijakan izin Identity and Access Management (IAM).
Sebelum memulai
Enable the IAM API.
Baca Ringkasan Kondisi IAM untuk memahami dasar-dasar binding peran bersyarat IAM.
Tinjau referensi atribut untuk mempelajari berbagai atribut kondisi yang dapat digunakan dalam ekspresi.
Peran yang diperlukan
Untuk mengelola binding peran bersyarat dalam kebijakan izin resource, Anda memerlukan
izin untuk mendapatkan resource, serta mendapatkan dan menetapkan kebijakan izin untuk
resource. Izin ini memiliki bentuk berikut, dengan
SERVICE
adalah nama layanan yang memiliki
resource dan RESOURCE_TYPE
adalah nama jenis
resource yang aksesnya ingin Anda kelola kami:
SERVICE.RESOURCE_TYPE.get
SERVICE.RESOURCE_TYPE.getIamPolicy
SERVICE.RESOURCE_TYPE.setIamPolicy
Misalnya, untuk mengelola binding peran bersyarat dalam kebijakan izin project, Anda memerlukan izin berikut:
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
Untuk mendapatkan izin yang diperlukan, minta administrator untuk memberi Anda
peran khusus atau yang telah ditetapkan sebelumnya yang menyertakan izin tersebut. Misalnya,
administrator dapat memberi Anda peran Admin Keamanan
(roles/iam.securityAdmin
), yang mencakup izin untuk mendapatkan hampir semua
resource Google Cloud dan mengelola kebijakan izin.
Menambahkan binding peran bersyarat ke kebijakan
Binding peran kondisional dapat ditambahkan ke kebijakan izin baru atau yang sudah ada untuk mengontrol akses lebih lanjut ke resource Google Cloud. Bagian ini menunjukkan cara menambahkan kondisi berbasis waktu sederhana ke kebijakan izin yang ada menggunakan Google Cloud Console, Google Cloud CLI, dan REST API.
Untuk menambahkan binding peran bersyarat ke kebijakan izin yang sudah ada:
Konsol
Di konsol Google Cloud, buka halaman IAM.
Dari daftar utama, temukan akun utama yang diinginkan, lalu klik tombol
.Dari panel Izin edit, temukan peran yang diinginkan untuk mengonfigurasi kondisi. Kemudian, di bagian IAM condition (optional), klik Add IAM condition.
Di panel Edit condition, masukkan judul dan deskripsi opsional untuk condition.
Anda dapat menambahkan ekspresi kondisi menggunakan Pembuat kondisi atau Editor kondisi. Pembuat kondisi menyediakan antarmuka interaktif untuk memilih jenis kondisi, operator, dan detain lain yang berlaku terkait ekspresi yang Anda inginkan. Editor kondisi menyediakan antarmuka berbasis teks untuk memasukkan ekspresi secara manual menggunakan sintaksis CEL.
Pembuat kondisi:
- Dari drop-down Jenis kondisi, pilih Akses Non-permanen.
- Dari drop-down Operator, pilih berdasarkan.
- Dari drop-down Waktu, klik tombol untuk memilih dari rentang tanggal dan waktu.
- Klik Simpan untuk menerapkan kondisi.
- Setelah panel Edit kondisi ditutup, klik kembali tombol Simpan dari panel Izin edit untuk memperbarui kebijakan izin.
Editor kondisi:
Klik tab Editor kondisi, lalu masukkan ekspresi berikut (mengganti stempel waktu dengan stempel waktu Anda sendiri):
request.time < timestamp("2019-12-31T12:00:00.000Z")
Setelah memasukkan ekspresi, Anda dapat memilih untuk memvalidasi sintaks CEL dengan mengklik Run Linter di atas kotak teks di kanan atas.
Klik Simpan untuk menerapkan kondisi.
Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Izin edit untuk memperbarui kebijakan izin.
gcloud
Kebijakan izin ditetapkan menggunakan pola baca-ubah-tulis.
Jalankan perintah gcloud projects get-iam-policy
guna mendapatkan
kebijakan izin saat ini untuk project. Pada contoh berikut, versi JSON
dari kebijakan izin didownload ke jalur pada disk.
Perintah:
gcloud projects get-iam-policy project-id --format json > file-path
Format JSON dari kebijakan izin didownload:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:travis@example.com" ], "role": "roles/iam.securityReviewer" } ], "etag": "BwWKmjvelug=", "version": 1 }
Perhatikan version
kebijakan izin saat ini, yaitu
1
. Untuk mengonfigurasi kebijakan izin dengan akses yang dapat habis masa
berlakunya, tambahkan ekspresi kondisi yang ditandai berikut (ganti
stempel waktu dengan stempel waktu Anda sendiri). gcloud CLI memperbarui versi secara
otomatis:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:travis@example.com" ], "role": "roles/iam.securityReviewer", "condition": { "title": "Expires_2019", "description": "Expires at noon on 2019-12-31", "expression": "request.time < timestamp('2019-12-31T12:00:00Z')" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Selanjutnya, tetapkan kebijakan izin baru dengan menjalankan perintah
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id file-path
Kebijakan izin yang baru diterapkan, dan binding peran travis@example.com
akan
berakhir pada waktu yang ditentukan.
REST
Gunakan pola baca-ubah-tulis untuk mengizinkan akses hingga waktu tertentu.
Pertama, baca kebijakan izin untuk project:
Metode
projects.getIamPolicy
Resource Manager API mendapatkan kebijakan izin project.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.POLICY_VERSION
: Versi kebijakan yang akan ditampilkan Permintaan harus menentukan versi kebijakan terbaru, yaitu kebijakan versi 3. Lihat Menentukan versi kebijakan saat mendapatkan kebijakan untuk detailnya.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Meminta isi JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON seperti berikut:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "group:my-group@example.com" ] } ] }
Perhatikan version
kebijakan izin saat ini, yaitu
1
.
Selanjutnya, ubah kebijakan izin agar mengizinkan akses hingga waktu
tertentu. Pastikan untuk mengubah kolom version
menjadi nilai
3
:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "condition": { "title": "Expires_2019", "description": "Expires at noon on 2019-12-31", "expression": "request.time < timestamp('2019-12-31T12:00:00Z')" }, "members": [ "user:travis@example.com" ] } ] }
Terakhir, tulis kebijakan izin yang telah diperbarui:
Metode
projects.setIamPolicy
Resource Manager API menetapkan kebijakan izin dalam permintaan sebagai kebijakan izin baru project.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Meminta isi JSON:
{ "policy": { "version": 3, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "group:my-group@example.com" ], "condition": { "title": "Expires_July_1_2020", "description": "Expires on July 1, 2020", "expression": "request.time < timestamp('2020-07-01T00:00:00.000Z')" } } ] } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Respons berisi kebijakan izin yang telah diperbarui.
Mengubah binding peran bersyarat yang ada
Setelah membuat binding peran bersyarat, Anda dapat mengubah ekspresi kondisi kapan saja. Bagian ini menunjukkan cara memperbarui kondisi berbasis waktu dalam kebijakan izin yang ada menggunakan Google Cloud Console, Google Cloud CLI, dan REST API.
Untuk mengubah binding peran bersyarat dalam kebijakan izin yang sudah ada:
Konsol
Di konsol Google Cloud, buka halaman IAM.
Dari daftar utama, temukan akun utama yang diinginkan, lalu klik tombol
.Dari panel Izin edit, temukan peran yang diinginkan untuk mengonfigurasi kondisi. Kemudian, di bagian kondisi IAM (opsional), klik nama kondisi yang ada untuk mengeditnya.
Di panel Edit kondisi, Anda dapat menyimpan atau memperbarui judul dan deskripsi yang ada untuk condition.
Anda dapat mengedit ekspresi kondisi yang ada atau menambahkan yang baru menggunakan Pembuat kondisi atau Editor kondisi. Pembuat kondisi menyediakan antarmuka interaktif untuk memilih jenis kondisi, operator, dan detail lain yang berlaku terkait ekspresi yang Anda inginkan. Editor kondisi menyediakan antarmuka berbasis teks untuk memasukkan ekspresi secara manual menggunakan sintaksis CEL.
Pembuat kondisi:
- Tambahkan ekspresi kondisi baru atau ubah ekspresi kondisi yang ada.
- Klik Simpan untuk menerapkan kondisi.
- Setelah panel Edit kondisi ditutup, klik kembali tombol Simpan dari panel Izin edit untuk memperbarui kebijakan izin.
Editor kondisi:
- Klik tab Editor kondisi, lalu tambahkan ekspresi kondisi baru atau ubah ekspresi kondisi yang ada.
- Setelah memasukkan ekspresi, Anda dapat memilih untuk memvalidasi sintaks CEL dengan mengklik Run Linter di atas kotak teks di kanan atas.
- Klik Simpan untuk menerapkan kondisi.
- Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Izin edit untuk memperbarui kebijakan izin.
gcloud
Kebijakan izin ditetapkan menggunakan pola baca-ubah-tulis.
Jalankan perintah gcloud projects get-iam-policy
guna mendapatkan
kebijakan izin saat ini untuk project. Pada contoh berikut, versi JSON
dari kebijakan izin didownload ke jalur pada disk.
Perintah:
gcloud projects get-iam-policy project-id --format json > file-path
Format JSON dari kebijakan izin didownload:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Dalam contoh ini, kita akan memperbarui nilai title
,
description
, dan stempel waktu dalam ekspresi untuk mengubah
durasi kondisi akses terjadwal. Perbarui bagian
kondisi yang ditandai berikut (mengganti nilainya dengan nilai Anda sendiri):
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Selanjutnya, tetapkan kebijakan izinkan baru dengan menjalankan perintah
gcloud projects set-iam-policy
.
gcloud projects set-iam-policy project-id file-path
Kebijakan izin yang diperbarui diterapkan, dan binding peran fatima@example.com
akan berakhir masa berlakunya pada waktu yang baru.
REST
Gunakan pola baca-ubah-tulis untuk mengubah binding peran bersyarat.
Pertama, baca kebijakan izin untuk project:
Metode
projects.getIamPolicy
Resource Manager API mendapatkan kebijakan izin project.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Meminta isi JSON:
{ "options": { "requestedPolicyVersion": 3 } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON seperti berikut:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" }, "members": [ "group:my-group@example.com" ] } ] }
Selanjutnya, ubah binding peran kondisional di kebijakan izin. Dalam contoh ini, kita akan memperbarui nilai stempel waktu untuk mengubah durasi kondisi akses terjadwal. Perbarui bagian ekspresi kondisi yang ditandai berikut (ganti stempel waktu dengan stempel waktu Anda sendiri):
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" }, "members": [ "user:fatima@example.com" ] } ] }
Terakhir, tulis kebijakan izin yang telah diperbarui:
Metode
projects.setIamPolicy
Resource Manager API menetapkan kebijakan izin dalam permintaan sebagai kebijakan izin baru project.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Meminta isi JSON:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" }, "members": [ "group:my-group@example.com" ], } ] } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Respons berisi kebijakan izin yang telah diperbarui.
Menghapus kondisi dari binding peran
Menghapus kondisi dari binding peran tidak akan mencabut peran tersebut. Sebaliknya, metode ini membiarkan semua akun utama dalam binding peran tersebut menggunakan izin dalam peran tanpa syarat.
Bagian ini menunjukkan cara menghapus kondisi berbasis waktu dalam kebijakan izin menggunakan Google Cloud Console, Google Cloud CLI, dan REST API.
Untuk menghapus kondisi dari binding peran dalam kebijakan izinkan:
Konsol
Di konsol Google Cloud, buka halaman IAM.
Dari daftar utama, temukan akun utama yang diinginkan, lalu klik tombol
.Dari panel Izin edit, temukan binding peran yang diinginkan. Kemudian, di bagian Kondisi IAM (opsional), klik nama kondisi yang ada.
Di panel Edit kondisi, klik tombol
untuk menghapus kondisi. Anda akan diminta untuk mengonfirmasi penghapusan kondisi.Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Izin edit untuk memperbarui kebijakan izin.
gcloud
Kebijakan izin ditetapkan menggunakan pola baca-ubah-tulis.
Jalankan perintah gcloud projects get-iam-policy
guna mendapatkan
kebijakan izin saat ini untuk project. Pada contoh berikut, versi JSON
dari kebijakan izin didownload ke jalur pada disk.
Perintah:
gcloud projects get-iam-policy project-id --format json > file-path
Format JSON dari kebijakan izin didownload:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Untuk menghapus binding peran bersyarat dari kebijakan izin, hapus
blok condition
seperti yang ditunjukkan di bawah ini:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", } ], "etag": "BwWKmjvelug=", "version": 3 }
Perhatikan bahwa version
masih ditetapkan ke 3
, meskipun
bahwa binding peran tanpa syarat hanya memerlukan kebijakan izin versi
1
. Sebaiknya selalu gunakan
nomor versi tertinggi saat menetapkan kebijakan izin, baik untuk binding peran
kondisional maupun binding peran tanpa syarat. Lihat
persyaratan versi untuk informasi selengkapnya. gcloud
CLI memperbarui nomor versi untuk kebijakan izin
secara otomatis.
Selanjutnya, tetapkan kebijakan izin yang telah diperbarui dengan menjalankan perintah
gcloud projects set-iam-policy
.
gcloud projects set-iam-policy project-id file-path
Kebijakan izin yang diperbarui diterapkan, sehingga menghapus binding peran bersyarat untuk
fatima@example.com
. Masa berlaku pengikatan peran tidak akan berakhir.
REST
Gunakan pola baca-ubah-tulis untuk menghapus binding peran bersyarat.
Pertama, baca kebijakan izin untuk project:
Metode
projects.getIamPolicy
Resource Manager API mendapatkan kebijakan izin project.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Meminta isi JSON:
{ "options": { "requestedPolicyVersion": 3 } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON seperti berikut:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" }, "members": [ "group:my-group@example.com" ] } ] }
Selanjutnya, ubah kebijakan izin dengan menghapus binding peran bersyarat:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "user:fatima@example.com" ] } ] }
Perhatikan bahwa version
masih ditetapkan ke 3
, meskipun
bahwa binding peran tanpa syarat hanya memerlukan kebijakan izin versi
1
. Sebaiknya selalu gunakan
nomor versi tertinggi saat menetapkan kebijakan izin, baik untuk binding peran
kondisional maupun binding peran tanpa syarat. Lihat
persyaratan versi untuk informasi selengkapnya.
Terakhir, tulis kebijakan izin yang telah diperbarui:
Metode
projects.setIamPolicy
Resource Manager API menetapkan kebijakan izin dalam permintaan sebagai kebijakan izin baru project.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Meminta isi JSON:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "group:my-group@example.com" ] } ] } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Respons berisi kebijakan izin yang telah diperbarui.