Halaman ini menjelaskan cara menolak akses akun utama dengan mencegah mereka dalam menggunakan izin Identity dan Access Management (IAM) tertentu.
Dalam IAM, Anda menolak akses dengan kebijakan penolakan. Setiap kebijakan penolakan dilampirkan ke Google Cloud organisasi, folder, atau project. Kebijakan penolakan berisi aturan penolakan, yang mengidentifikasi akun utama dan mencantumkan izin yang tidak dapat digunakan oleh akun utama.
Kebijakan penolakan terpisah dari kebijakan izin, yang juga dikenal sebagai kebijakan IAM . Kebijakan izinkan menyediakan akses ke resource dengan memberikan peran IAM ke akun utama.
Anda dapat mengelola kebijakan penolakan dengan konsol Google Cloud , Google Cloud CLI,
atau IAM v2 REST API.
Sebelum memulai
Aktifkan IAM API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.Menyiapkan autentikasi.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Terraform
Untuk menggunakan contoh Terraform di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
Go
Untuk menggunakan contoh Go di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
Java
Untuk menggunakan contoh Java di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
Node.js
Untuk menggunakan contoh Node.js di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
Python
Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
-
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengelola kebijakan penolakan, minta administrator Anda untuk memberi Anda peran IAM berikut pada organisasi:
-
Untuk melihat kebijakan penolakan:
Deny Reviewer (
roles/iam.denyReviewer) -
Untuk melihat, membuat, memperbarui, dan menghapus kebijakan penolakan:
Deny Admin (
roles/iam.denyAdmin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengelola kebijakan penolakan. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengelola kebijakan penolakan:
-
Untuk melihat kebijakan penolakan:
-
iam.denypolicies.get -
iam.denypolicies.list
-
-
Untuk membuat, memperbarui, dan menghapus kebijakan penolakan:
-
iam.denypolicies.create -
iam.denypolicies.delete -
iam.denypolicies.get -
iam.denypolicies.update
-
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Mengidentifikasi izin yang akan ditolak
Sebelum membuat kebijakan penolakan, Anda harus memutuskan izin mana yang ingin ditolak, dan akun utama mana yang harus ditolak izinnya.
Hanya beberapa izin yang dapat ditolak. Untuk mengetahui daftar izin yang dapat Anda tolak, lihat Izin yang didukung dalam kebijakan penolakan.
Dalam beberapa kasus, Anda juga dapat menggunakan grup izin untuk menolak serangkaian izin. Untuk mengetahui informasi selengkapnya, lihat Grup izin.
Anda mengelola kebijakan penolakan dengan REST API v2, yang memerlukan format khusus
untuk nama izin. Misalnya, izin untuk membuat
peran khusus IAM diberi nama sebagai berikut:
v1API:iam.roles.createv2API:iam.googleapis.com/roles.create
Membuat kebijakan penolakan
Anda dapat menambahkan kebijakan penolakan ke organisasi, folder, dan project. Setiap resource dapat memiliki hingga 500 kebijakan penolakan.
Kebijakan penolakan berisi aturan penolakan, yang menentukan hal berikut:
- Izin untuk penolakan.
- Akun utama yang izinnya ditolak.
Opsional: Akun utama yang dikecualikan dari penolakan izin.
Misalnya, Anda dapat menolak izin ke suatu grup, tetapi mengecualikan pengguna tertentu yang termasuk dalam grup tersebut.
Opsional: Ekspresi kondisi yang menentukan kapan utama tidak dapat menggunakan izin. Dalam kebijakan penolakan, ekspresi kondisi hanya dapat digunakan fungsinya untuk tag resource—fungsi laninnya dan operator lain yang tidak mendukung.
Setiap resource dapat memiliki hingga 500 aturan penolakan di semua kebijakan penolakan yang dilampirkan.
Kebijakan penolakan diwariskan melalui hierarki resource. Misalnya, jika Anda menolak izin pada tingkat organisasi, yang izin tersebut juga akan ditolak pada folder dan project dalam organisasi tersebut, serta pada resource khusus layanan dalam setiap project.
Kebijakan penolakan akan menggantikan izin kebijakan. Jika akun utama diberi peran yang berisi izin tertentu, tetapi kebijakan penolakan mengatakan akun utama tidak dapat digunakan izinnya, maka akun utama tidak dapat izin penggunaannya.
Konsol
Di konsol Google Cloud , buka tab Tolak di halaman IAM.
Pilih project, folder, atau organisasi.
Klik Buat kebijakan penolakan.
Di bagian Nama kebijakan, tentukan ID kebijakan dengan melakukan salah satu hal berikut:
- Di kolom Nama tampilan, masukkan nama tampilan untuk kebijakan. Mengisi kolom ini akan otomatis mengisi kolom ID. Jika Anda ingin mengubah ID kebijakan, perbarui teks di kolom ID.
- Di kolom ID, masukkan ID untuk kebijakan.
Di bagian Aturan penolakan, tentukan aturan penolakan kebijakan. Setiap kebijakan penolakan harus memiliki minimal satu aturan penolakan. Untuk menambahkan aturan penolakan lainnya, klik Tambahkan aturan penolakan.
Untuk setiap aturan penolakan, lakukan hal berikut:
- Di kolom Akun utama yang ditolak, tambahkan satu atau beberapa akun utama yang ingin Anda cegah menggunakan izin yang ditentukan. Akun utama dapat berupa salah satu jenis akun utama dalam ID utama untuk kebijakan penolakan, kecuali akun utama yang ID-nya dimulai dengan
deleted:. Opsional: Di kolom Exception principals, tambahkan akun utama yang ingin Anda izinkan untuk menggunakan izin yang ditentukan, meskipun jika akun utama tersebut disertakan di bagian Denied principals. Misalnya, Anda dapat menggunakan kolom ini untuk membuat pengecualian bagi pengguna tertentu yang termasuk dalam grup yang ditolak.
Di bagian Izin ditolak, tambahkan izin yang ingin Anda tolak. Izin harus didukung dalam kebijakan penolakan.
Dalam beberapa kasus, Anda juga dapat menggunakan grup izin untuk menolak serangkaian izin. Untuk mengetahui informasi selengkapnya, lihat Grup izin.
Opsional: Tambahkan izin pengecualian. Izin pengecualian adalah izin yang tidak ingin Anda tolak dengan aturan penolakan ini, meskipun izin tersebut disertakan dalam daftar izin yang ditolak. Misalnya, Anda dapat menggunakan kolom ini untuk membuat pengecualian bagi izin tertentu dalam grup izin.
Untuk menambahkan izin pengecualian, klik Izin pengecualian, klik Tambahkan izin lain, lalu masukkan izin di kolom Izin 1. Lanjutkan menambahkan izin hingga Anda menambahkan semua izin yang ingin dikecualikan dari kebijakan penolakan.
Opsional: Tambahkan kondisi penolakan untuk menentukan kapan akun utama tidak dapat menggunakan izin. Untuk menambahkan kondisi penolakan, klik Tambahkan kondisi penolakan, lalu tentukan kolom berikut:
- Judul: Opsional. Rangkuman singkat dari tujuan terhadap kondisi.
- Deskripsi: opsional. Deskripsi panjang dari kondisi.
Ekspresi kondisi: Anda dapat menambahkan ekspresi kondisi 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 Common Expression Language (CEL).
Kondisi penolakan harus didasarkan pada tag resource. Fungsi dan operator lainnya tidak didukung.
- Di kolom Akun utama yang ditolak, tambahkan satu atau beberapa akun utama yang ingin Anda cegah menggunakan izin yang ditentukan. Akun utama dapat berupa salah satu jenis akun utama dalam ID utama untuk kebijakan penolakan, kecuali akun utama yang ID-nya dimulai dengan
Klik Create.
gcloud
Untuk membuat kebijakan penolakan untuk resource, mulailah dengan membuat file JSON yang berisi kebijakan tersebut. Kebijakan penolakan menggunakan format berikut:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Berikan nilai berikut:
POLICY_NAME: Nama tampilan untuk kebijakan penolakan.-
DENY_RULE_1,DENY_RULE_2,...DENY_RULE_N: Aturan penolakan dalam kebijakan. Setiap aturan penolakan dapat berisi kolom berikut:-
deniedPermissions: Daftar izin yang tidak dapat digunakan oleh akun utama yang ditentukan. Izin harus didukung dalam kebijakan penolakan.Dalam beberapa kasus, Anda juga dapat menggunakan grup izin untuk menolak serangkaian izin. Untuk mengetahui informasi selengkapnya, lihat Grup izin.
-
exceptionPermissions: Daftar izin yang dapat digunakan oleh akun utama yang ditentukan, meskipun jika izin tersebut disertakan dalamdeniedPermissions. Misalnya, Anda dapat menggunakan kolom ini untuk membuat pengecualian bagi izin tertentu dalam grup izin. -
deniedPrincipals: Daftar utama yang tidak dapat menggunakan izin yang ditentukan. Untuk mempelajari cara memformat ID utama, lihat ID utama untuk kebijakan penolakan. -
exceptionPrincipals: Opsional. Daftar akun utama yang dapat menggunakan izin yang ditentukan, meskipun jika akun utama tersebut disertakan di dalamdeniedPrincipals. Misalnya, Anda dapat menggunakan kolom ini untuk membuat pengecualian bagi pengguna tertentu yang termasuk dalam grup yang ditolak. Untuk mempelajari cara memformat ID utama, lihat ID utama untuk kebijakan penolakan. -
denialCondition: Opsional. Ekspresi kondisi yang menentukan kapan akun utama tidak dapat menggunakan izin. Berisi kolom berikut:-
expression: Ekspresi kondisi yang menggunakan sintaksis Expression Language (CEL). Ekspresi tersebut harus menggunakan fungsi CEL untuk mengevaluasi tag resource. Fungsi dan operator lain tidak didukung. -
title: Opsional. Rangkuman singkat dari tujuan terhadap kondisi. -
description: Opsional. Deskripsi panjang dari kondisi.
-
Contoh aturan penolakan, lihat Kasus penggunaan umum.
-
Misalnya, kebijakan penolakan berikut berisi satu aturan penolakan, yang menolak satu izin untuk Lucian:
{
"displayName": "My deny policy.",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principal://goog/subject/lucian@example.com"
],
"deniedPermissions": [
"iam.googleapis.com/roles.create"
]
}
}
]
}
Selanjutnya, jalankan perintah gcloud iam policies create:
gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Berikan nilai berikut:
-
POLICY_ID: ID untuk kebijakan penolakan. -
ATTACHMENT_POINT: ID untuk resource yang t kebijakan penolakannya melekat. Untuk mempelajari cara memformat nilai ini, lihat Titik lampiran. -
POLICY_FILE: Jalur file untuk file JSON yang berisi kebijakan penolakan.
Secara default, jika perintah ini berhasil dijalankan, output apa pun tidak akan dicetak. Untuk mencetak
respons mendetail, tambahkan flag --format=json ke perintah.
Misalnya, perintah berikut akan membuat kebijakan penolakan bernama my-deny-policy
untuk project my-project, menggunakan file bernama policy.json:
gcloud iam policies create my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies \
--policy-file=policy.json
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi penyedia Terraform.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Go IAM.
Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Java IAM.
Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.