Halaman ini menjelaskan cara menyimulasikan perubahan pada kebijakan izinkan menggunakan kebijakan izin Simulator Kebijakan untuk Pengelolaan Akses dan Identitas. Panduan ini juga menjelaskan cara menafsirkan hasil simulasi, dan cara menerapkan kebijakan izin yang disimulasikan jika Anda menginginkannya.
Sebelum memulai
-
Aktifkan API Policy Simulator and Resource Manager.
- Opsional: Pelajari cara kerja Simulator Kebijakan.
Izin yang diperlukan
Sebelum menyimulasikan perubahan pada kebijakan izinkan, Anda harus memastikan bahwa Anda memiliki izin yang sesuai. Izin tertentu diperlukan untuk menjalankan simulasi; izin yang lain tidak diperlukan, tetapi membantu Anda mendapatkan hasil yang paling lengkap dari simulasi.
Untuk mempelajari peran Identity and Access Management (IAM) lebih lanjut, lihat Memahami peran.
Izin resource target yang diperlukan
Resource target simulasi adalah resource yang kebijakan izinnya Anda simulasi.
Untuk mendapatkan izin yang Anda perlukan guna menjalankan simulasi, minta administrator Anda untuk memberi Anda peran IAM berikut pada resource target:
-
Viewer Aset Cloud (
roles/cloudasset.viewer
) -
Admin Simulator (
roles/policysimulator.admin
) -
Peninjau Keamanan (
roles/iam.securityReviewer
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Peran bawaan ini berisi izin yang diperlukan untuk menjalankan simulasi. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menjalankan simulasi:
-
cloudasset.assets.searchAllResources
-
policysimulator.replays.run
-
service.resource.getIamPolicy
, denganresource
adalah jenis resource dari resource target danservice
adalah nama layanan Google Cloud yang memiliki resource tersebut.
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Izin resource host yang diperlukan
Resource host simulasi adalah project, folder, atau organisasi yang membuat dan menjalankan simulasi. Dengan cara apa pun, resource host tidak perlu berkaitan dengan resource target.
Cara Anda menetapkan resource host bergantung pada platform yang Anda gunakan.
Konsol
Resource host adalah project, folder, atau organisasi yang muncul di pemilih resource.
Untuk mengubah resource host, pilih project, folder, atau organisasi lain di pemilih resource.
gcloud
Resource host adalah project kuota saat ini. Untuk menetapkan project kuota, gunakan perintah gcloud auth application-default set-quota-project
.
REST
Anda menentukan resource host secara manual setiap kali mengirim permintaan. Lihat Menyimulasikan perubahan kebijakan di halaman ini untuk mengetahui detailnya.
Untuk mendapatkan izin yang Anda perlukan untuk menjalankan simulasi,
minta administrator untuk memberi Anda peran IAM
Simulator Admin (roles/policysimulator.admin
) di resource host.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk menjalankan simulasi. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menjalankan simulasi:
-
policysimulator.replayResults.list
-
policysimulator.replays.create
-
policysimulator.replays.get
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Izin yang direkomendasikan
Untuk mendapatkan hasil yang paling lengkap dari simulasi, sebaiknya Anda memiliki izin IAM dan Google Workspace tertentu. Jika Anda tidak memiliki sebagian atau semua izin ini, Anda masih dapat menjalankan simulasi. Namun, menjalankan simulasi tanpa izin ini dapat mengakibatkan peningkatan jumlah perubahan akses yang tidak diketahui, karena Anda mungkin tidak dapat mengambil informasi yang dapat memengaruhi hasil simulasi.
Izin IAM yang direkomendasikan
Sebaiknya Anda memiliki peran Peninjau Keamanan (roles/iam.securityReviewer
) untuk organisasi Anda saat menjalankan simulasi.
Atau, jika sudah memiliki peran Security Admin (roles/iam.securityAdmin
), Anda tidak perlu diberi peran tambahan.
Peran ini memberi Anda izin berikut, yang membantu Anda mendapatkan hasil paling lengkap dari simulasi:
iam.roles.get
daniam.roles.list
di project, folder, atau organisasi yang relevan tempat peran khusus ditentukan. Project, folder, atau organisasi relevan jika merupakan ancestor atau turunan dari resource yang mengizinkan kebijakan yang Anda simulasikan.service.resource.getIamPolicy
, denganresource
adalah nama jenis resource yang dapat memiliki kebijakan izin danservice
adalah nama layanan Google Cloud yang memiliki resource tersebut.Saat menjalankan simulasi, sebaiknya Anda memiliki izin ini pada setiap resource yang sesuai dengan kriteria berikut:
- Policy Simulator mendukung resource.
Resource memiliki kebijakan izinkan yang mungkin memengaruhi akses pengguna. Hal ini berlaku jika salah satu hal berikut terjadi:
- Resource ini adalah turunan dari resource yang kebijakan izinkannya Anda simulasikan, dan muncul dalam log akses yang relevan.
- Resource ini adalah ancestor resource yang kebijakan izinkannya Anda simulasikan.
Misalnya, Anda ingin menyimulasikan kebijakan izinkan untuk sebuah project. Jika log akses menyertakan upaya akses untuk bucket Cloud Storage dalam project, Anda memerlukan izin
storage.buckets.getIamPolicy
di bucket tersebut. Jika project memiliki folder induk dengan kebijakan izinkan, Anda juga memerlukan izinresourcemanager.folders.getIamPolicy
di folder tersebut.
Izin Google Workspace yang direkomendasikan
Sebaiknya Anda memiliki izin untuk mengambil informasi keanggotaan grup untuk setiap grup Google dalam kebijakan izin awal dan kebijakan izin yang diusulkan.
Admin Super dan Admin Grup Google Workspace biasanya memiliki akses untuk
melihat keanggotaan grup. Jika Anda bukan Admin Super atau Admin Grup, minta
administrator Google Workspace untuk
membuat peran administrator Google Workspace khusus
yang berisi hak istimewa groups.read
(berada di bagian Hak Istimewa Admin
API) dan memberikannya kepada Anda. Hal ini memungkinkan Anda melihat keanggotaan
semua grup dalam domain Anda, dan menyimulasikan perubahan
kebijakan izin secara lebih efektif.
Menyimulasikan perubahan kebijakan
Simulasikan perubahan pada kebijakan izinkan dengan mengikuti langkah-langkah berikut.
Konsol
Contoh berikut menunjukkan cara menyimulasikan perubahan pada kebijakan izinkan untuk suatu project. Namun, Anda dapat menyimulasikan perubahan pada kebijakan izinkan untuk resource apa pun yang memiliki kebijakan izinkan.
Edit izin akun utama, lalu klik Uji perubahan, bukan mengklik Save:
Di konsol Google Cloud, buka halaman IAM.
Buat perubahan yang diusulkan pada kebijakan izinkan dengan mengedit izin akun utama yang ada:
- Temukan akun utama yang aksesnya ingin Anda edit, lalu klik tombol Edit di sebelah kanan.
- Edit akses akun utama dengan menambahkan peran baru, atau dengan mencabut atau mengubah peran yang ada.
Untuk menyimulasikan perubahan yang diusulkan, klik Uji perubahan.
Setelah beberapa menit, Google Cloud Console akan menampilkan hasil simulasi sebagai daftar perubahan akses. Lihat Memahami hasil Simulator Kebijakan di halaman ini untuk informasi selengkapnya.
Jika tidak ada perubahan akses antara kebijakan izinkan yang sudah ada dan kebijakan izin simulasi, Google Cloud Console tidak akan menampilkan perubahan akses apa pun.
gcloud
Untuk menyimulasikan perubahan pada kebijakan izinkan, ikuti pola read-modify-write, tetapi simulasikan kebijakan izin, bukan menulisnya.
Baca kebijakan izinkan saat ini dengan menjalankan perintah berikut:
gcloud resource-type get-iam-policy resource-id --format=format > filepath
Ganti nilai berikut:
resource-type
: Jenis resource yang ingin Anda simulasikan kebijakannya. Contoh,projects
.resource-id
: ID resource yang kebijakan izinnya ingin Anda simulasikan. Contoh,my-project
.format
: Format respons. Gunakan nilaijson
atauyaml
.filepath
: Jalur ke file output baru untuk kebijakan izinkan.
Misalnya, perintah berikut mendapatkan kebijakan izinkan untuk project
my-project
dalam format JSON dan menyimpannya ke direktori utama pengguna:gcloud projects get-iam-policy my-project --format=json > ~/policy.json
Ubah kebijakan izinkan JSON atau YAML yang ditampilkan oleh perintah
get-iam-policy
untuk mencerminkan perubahan yang ingin Anda simulasikan.Ada beberapa jenis perubahan yang dapat Anda buat pada kebijakan izinkan. Misalnya, Anda dapat menambahkan atau menghapus akun utama dari binding peran, atau menghapus binding peran dari kebijakan izinkan.
Jalankan perintah berikut untuk menyimulasikan perubahan pada kebijakan izinkan:
gcloud iam simulator replay-recent-access \ full-resource-name \ filepath \ --format=format
Ganti nilai berikut:
full-resource-name
: Nama lengkap resource resource yang kebijakan izinkannya ingin Anda simulasikan.Nama lengkap resource adalah URI yang terdiri dari nama layanan dan jalur ke resource. Misalnya, jika Anda menyimulasikan kebijakan izinkan untuk sebuah project, Anda akan menggunakan
//cloudresourcemanager.googleapis.com/projects/project- id
, denganproject-id
adalah ID project yang kebijakan izinnya Anda simulasikan.Untuk daftar format nama resource lengkap, lihat Nama resource lengkap.
filepath
: Jalur ke file yang berisi kebijakan izin yang telah diubah yang ingin Anda simulasikan. Misalnya,~/proposed_policy.json
.format
: Format respons. Misalnya,json
atauyaml
.
Setelah beberapa menit, perintah tersebut mencetak daftar hasil replay yang menjelaskan perubahan akses akun utama jika kebijakan izinkan yang diusulkan diterapkan. Hasil ini juga mencantumkan error apa pun yang terjadi selama simulasi, termasuk error apa pun karena jenis resource yang tidak didukung.
Lihat Memahami hasil Simulator Kebijakan di halaman ini untuk mempelajari cara membaca hasilnya. Untuk mempelajari cara menyimpan hasil simulasi, bukan mencetaknya, lihat Menyimpan hasil simulasi.
Berikut adalah contoh respons untuk simulasi kebijakan izinkan yang melibatkan pengguna
my-user@example.com
. Dalam hal ini, jika perubahan yang diusulkan diterapkan,my-user@example.com
kemungkinan tidak akan lagi memiliki izinresourcemanager.projects.list
danresourcemanager.projects.get
untuk projectmy-project
, dan tentu saja tidak lagi memiliki izinresourcemanager.projects.update
untuk projectmy-project
:[ { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.list", "principal": "my-user@example.com" }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ], "message": "Missing permission to get relevant IAM policies." } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } }, "lastSeenDate": { "day": 12, "month": 1, "year": 2021 } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.get", "principal": "my-user@example.com" }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to view group membership.", "resourceName": "group:everyone@example.com", "resourceType": "Google group" } ], "message": "Missing permission to view group membership." }, { "code": 7, "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ], "message": "Missing permission to get relevant IAM policies." } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "bindingExplanations": [ { "access": "UNKNOWN_INFO_DENIED", "memberships": { "group:everyone@example.com": { "membership": "MEMBERSHIP_UNKNOWN_INFO_DENIED" } }, "role": "roles/owner" } ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "policy": { "bindings": [ { "members": [ "group:everyone@example.com" ], "role": "roles/owner" } ], "etag": "BwWgJSIInYA=", "version": 3 } }, { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } }, "lastSeenDate": { "day": 10, "month": 1, "year": 2021 } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "diff": { "accessDiff": { "accessChange": "ACCESS_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" } } }, "lastSeenDate": { "day": 15, "month": 1, "year": 2021 } }, { "accessTuple": {}, "error": { "code": 12, "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.delete" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.update" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "pubsub.topics.publish" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.list" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.getIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ], "message": "Simulator does not yet support all resource types for 8 removed permissions." } } ]
Jika tidak ada perubahan akses antara kebijakan izinkan yang sudah ada dan kebijakan izin simulasi, perintah akan mencetak
No access changes found in the replay
.
REST
Untuk menyimulasikan perubahan pada kebijakan izinkan, ikuti pola read-modify-write. Namun, buat dan jalankan simulasi, bukan menulis kebijakan izinkan.
Baca kebijakan izin untuk resource.
Untuk mendapatkan kebijakan izin project, gunakan metode
projects.getIamPolicy
Resource Manager API.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 melihat respons JSON seperti berikut:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:fatima@example.com" ] } ] }
Ubah kebijakan izin yang ditampilkan untuk mencerminkan perubahan yang ingin Anda simulasikan.
Ada beberapa jenis perubahan yang dapat Anda buat pada kebijakan izinkan. Misalnya, Anda dapat menambahkan atau menghapus akun utama dari binding peran, atau menghapus binding peran dari kebijakan izinkan.
Buat simulasi, atau Replay, dengan kebijakan izin yang telah diubah.
Untuk membuat Replay untuk project, folder, atau organisasi, gunakan metode
replays.create
Policy Simulator API.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
-
HOST_RESOURCE_TYPE
: Jenis resource yang akan menghosting Replay. Nilai ini harusprojects
,folders
, atauorganizations
. HOST_RESOURCE_ID
: ID resource host, misalnya,my-project
.-
TARGET_FULL_RESOURCE_NAME
: Nama lengkap resource resource yang kebijakannya ingin Anda simulasikan. Resource ini dapat berupa resource apa pun yang menerima kebijakan IAM, dan tidak perlu terkait dengan resource host dengan cara apa pun.Nama lengkap resource adalah URI yang terdiri dari nama layanan dan jalur ke resource. Misalnya, jika Anda menyimulasikan kebijakan untuk suatu project, sebaiknya gunakan
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
, denganPROJECT_ID
sebagai ID project yang kebijakannya Anda simulasikan.Untuk daftar lengkap format nama resource, lihat Nama resource lengkap.
-
POLICY
: Kebijakan yang ingin Anda simulasikan. Untuk contoh kebijakan, lihat referensi kebijakan.Untuk menyimulasikan beberapa kebijakan, sertakan beberapa pasangan
"OBJECT_FULL_RESOURCE_NAME" : POLICY
dalam isi permintaan. PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
POST https://policysimulator.googleapis.com/v1/HOST_RESOURCE_TYPE/HOST_RESOURCE_ID/locations/global/replays
Meminta isi JSON:
{ "config": { "policyOverlay": { "TARGET_FULL_RESOURCE_NAME" : POLICY } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Respons berisi nama operasi yang merepresentasikan Replay:
{ "name": "operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8", "metadata": { "type_url": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata" } }
-
Polling metode
operations.get
sampai Replay selesai.Untuk polling operasi, sebaiknya Anda berulang kali memanggil metode
operations.get
hingga respons menyertakan kolom"done": true
dan kolomname
dengan nama Replay yang sudah selesai. Gunakan backoff eksponensial terpotong untuk memasukkan penundaan di antara setiap permintaan.Untuk mendapatkan status Replay, gunakan metode
operations.get
Policy Simulator API.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
OPERATION_NAME
: Nama operasi Replay, termasuk awalanoperations
. Salin nilai ini dari kolomname
dalam responsreplays.create
. Contoh:operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
GET https://policysimulator.googleapis.com/v1/OPERATION_NAME
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Operasi yang sedang berlangsung akan menampilkan respons seperti berikut:
{ "name": "operations/42083b6b-3788-41b9-ae39-e97d7615a22d", "metadata": { "@type": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata", "startTime": "2021-01-15T05:34:14.732Z" } }
Operasi yang telah selesai akan menampilkan respons seperti berikut:
{ "name": "operations/89ab4892-9605-4c84-aedb-4fce4fc5195b", "metadata": { "@type": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata", "startTime": "2021-01-15T05:40:15.922Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.policysimulator.v1.Replay", "replay": { "name": "projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b", "state": SUCCEEDED, "config": {}, "resultsSummary": { "logCount": 1319, "unchangedCount": 1169, "differenceCount": 149, "errorCount": 1, "oldestDate": { "year": 2020, "month": 10, "day": 15 }, "newestDate": { "year": 2021, "month": 1, "day": 12 } } } } }
Dapatkan hasil Replay.
Untuk mendapatkan hasil Replay, gunakan metode
replays.results.list
Policy Simulator API.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
-
REPLAY_NAME
: Nama Replay yang hasilnya ingin Anda ambil. Salin nilai ini dari kolomresponse.replay.name
dalam responsoperations.get
. Sertakan jenis resource dan awalan lokasi. Misalnya,"projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b"
-
PAGE_SIZE
: Opsional. Jumlah hasil maksimum yang akan ditampilkan dari permintaan ini. Jika tidak ditentukan, server akan menentukan jumlah hasil yang akan ditampilkan. Jika jumlah hasil lebih besar dari ukuran halaman, respons akan berisi token penomoran halaman yang dapat Anda gunakan untuk mengambil halaman hasil berikutnya. PAGE_TOKEN
: Opsional. Token penomoran halaman yang ditampilkan dalam respons sebelumnya dari metode ini. Jika ditentukan, daftar hasil akan dimulai dari akhir permintaan sebelumnya.PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
GET https://policysimulator.googleapis.com/v1/REPLAY_NAME/results?pageSize=page-size&pageToken=PAGE_TOKEN
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Respons ini berisi daftar hasil yang menjelaskan perubahan pada akses akun utama jika kebijakan yang diusulkan diterapkan. Hasil ini juga mencantumkan semua error yang terjadi selama simulasi, terutama error apa pun karena jenis resource yang tidak didukung
Lihat Memahami hasil Simulator Kebijakan di halaman ini untuk mempelajari cara membaca hasilnya.
Berikut adalah contoh respons untuk simulasi kebijakan yang melibatkan pengguna
my-user@example.com
. Dalam hal ini, jika perubahan yang diusulkan diterapkan,my-user@example.com
kemungkinan tidak akan lagi memiliki izinresourcemanager.projects.list
danresourcemanager.projects.get
untuk projectmy-project
, dan pasti tidak lagi memiliki izinresourcemanager.projects.update
untuk projectmy-project
:{ "replayResults": [ { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.list", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 27, "month": 3, "year": 2020 }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "message": "Missing permission to get relevant IAM policies.", "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ] } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.get", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 27, "month": 3, "year": 2020 }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "message": "Missing permission to view group membership.", "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to view group membership.", "resourceName": "group:everyone@example.com", "resourceType": "Google group" } ] }, { "code": 7, "message": "Missing permission to get relevant IAM policies.", "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ] } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "bindingExplanations": [ { "access": "UNKNOWN_INFO_DENIED", "memberships": { "group:everyone@example.com": { "membership": "MEMBERSHIP_UNKNOWN_INFO_DENIED" } }, "role": "roles/owner" } ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "policy": { "bindings": [ { "members": [ "group:everyone@example.com" ], "role": "roles/owner" } ], "etag": "BwWgJSIInYA=", "version": 3 } }, { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 27, "month": 3, "year": 2020 }, "diff": { "accessDiff": { "accessChange": "ACCESS_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" } } } }, { "accessTuple": {}, "error": { "code": 12, "message": "Simulator does not yet support all resource types for 8 removed permissions.", "details": [ { "@type": "type.googleapis.com/google.rpc.Status", "code": 12, "message": "Simulator does not yet support all resource types for 8 removed permissions.", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.delete" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.update" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "pubsub.topics.publish" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.list" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.getIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ] } ] } } ], "nextPageToken": "AWukk3zjv80La+chWx6WNt7X8czGPLtP792gRpkNVEV/URZ/VdWzxmuJKr" }
Jika tidak ada perubahan akses antara kebijakan izin yang sudah ada dan kebijakan izin simulasi, permintaan akan menampilkan daftar kosong (
{}
).-
Memahami hasil Policy Simulator
Policy Simulator melaporkan dampak perubahan yang diusulkan pada kebijakan izin sebagai daftar perubahan akses. Setiap perubahan akses mewakili upaya akses dari 90 hari terakhir yang akan memiliki hasil berbeda berdasarkan kebijakan izin yang diusulkan dibandingkan dengan kebijakan izin saat ini.
Policy Simulator juga mencantumkan semua error yang terjadi selama simulasi, yang membantu Anda mengidentifikasi potensi celah dalam simulasi.
Tampilan perubahan dan error ini bergantung pada platform yang Anda gunakan.
Konsol
Halaman hasil Policy Simulator menampilkan hasil simulasi di beberapa bagian yang berbeda:
Perubahan kebijakan: Bagian ini mencantumkan resource yang kebijakan izinnya Anda sarankan untuk diubah, peran yang Anda usulkan untuk dihapus, dan peran yang Anda sarankan untuk ditambahkan.
Bagian ini juga berisi tombol Lihat perbedaan kebijakan. Jika mengklik tombol ini, Anda dapat melihat tampilan kebijakan izin resource sebelum dan setelah perubahan yang diusulkan.
Perubahan izin: Bagian ini berisi jumlah izin yang dihapus dan ditambahkan, yang menjelaskan perubahan izin akun utama jika Anda menerapkan perubahan yang diusulkan. Jumlah izin ini dihitung dengan membandingkan izin dalam peran akun utama saat ini dengan izin dalam peran yang diusulkan akun utama, mengabaikan peran yang diwarisi.
Bagian ini juga berisi tombol Lihat perbedaan izin. Dengan mengklik tombol ini, Anda dapat melihat perbandingan izin secara berdampingan dalam peran akun utama saat ini dan yang diusulkan.
Perubahan akses selama 90 hari terakhir: Bagian ini menunjukkan upaya akses mana dari 90 hari terakhir yang memiliki hasil berbeda berdasarkan kebijakan izin yang diusulkan dan kebijakan izin saat ini. Bagian ini mencakup ringkasan perubahan akses, dan tabel yang berisi hasil yang lebih mendetail.
Ringkasan perubahan akses mencantumkan jumlah setiap jenis perubahan akses, jumlah error dan hasil yang tidak diketahui, serta jumlah upaya akses yang memiliki hasil yang sama berdasarkan kebijakan izin yang diusulkan dan kebijakan izin saat ini. Ringkasan ini juga menunjukkan jumlah izin yang tidak dapat disimulasikan. Untuk informasi selengkapnya, lihat Error di halaman ini.
Bagian ini juga berisi tabel perubahan akses. Tabel ini mencantumkan setiap upaya akses dari 90 hari terakhir yang memiliki hasil berbeda berdasarkan kebijakan izin yang diusulkan dan berdasarkan kebijakan izin saat ini. Setiap entri menyertakan resource yang coba diakses oleh akun utama, tanggal permintaan, akun utama yang membuat permintaan, izin dalam permintaan, dan status akses berdasarkan kebijakan izin yang diusulkan, dibandingkan dengan status akses berdasarkan kebijakan izin saat ini.
Ada beberapa jenis perubahan akses:
Perubahan akses Detail Akses dicabut Akun utama memiliki akses berdasarkan kebijakan izin saat ini, tetapi tidak akan lagi memiliki akses setelah perubahan yang diusulkan. Akses berpotensi dicabut Hasil ini dapat terjadi karena alasan berikut:
- Akun utama memiliki akses berdasarkan kebijakan izin saat ini, tetapi aksesnya berdasarkan kebijakan izin yang diusulkan tidak diketahui.
- Akses akun utama berdasarkan kebijakan izin saat ini tidak diketahui, tetapi akun utama tersebut tidak akan memiliki akses setelah perubahan yang diusulkan.
Akses diperoleh Akun utama tidak memiliki akses berdasarkan kebijakan izinkan saat ini, tetapi akan memiliki akses setelah perubahan yang diusulkan. Akses yang berpotensi diperoleh Hasil ini dapat terjadi karena alasan berikut:
- Akun utama tidak memiliki akses berdasarkan kebijakan izinkan saat ini, tetapi aksesnya setelah perubahan yang diusulkan tidak diketahui.
- Akses akun utama berdasarkan kebijakan izin saat ini tidak diketahui, tetapi akun tersebut akan memiliki akses setelah perubahan yang diusulkan.
Akses tidak diketahui Akses akun utama berdasarkan kebijakan izin saat ini dan kebijakan izin yang diusulkan tidak diketahui, dan perubahan yang diusulkan dapat memengaruhi akses akun utama. Error Terjadi error saat simulasi berlangsung. Untuk melihat detail tambahan tentang perubahan akses, klik perubahan akses. Tindakan ini akan membuka panel Detail perubahan akses yang menampilkan informasi tambahan tentang perubahan akses, termasuk akses yang ada milik akun utama, akses yang diusulkan akun utama, dan detail tambahan tentang hasil perubahan akses.
gcloud
Saat Anda menggunakan perintah replay-recent-access
, respons gcloud CLI akan berisi daftar replayResults
.
Setiap hasil replay menjelaskan upaya akses yang hasilnya akan berbeda jika kebijakan izinkan yang diusulkan telah diterapkan pada saat upaya tersebut. Misalnya, hasil replay berikut menunjukkan bahwa
my-user@example.com
menggunakan izin resourcemanager.projects.update
sebelumnya
untuk melakukan tindakan dalam project my-project
. Namun, jika kebijakan izin yang diusulkan diterapkan, akses mereka akan ditolak.
{ "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 15, "month": 1, "year": 2021 }, "diff": { "accessDiff": { "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" }, "accessChange": "ACCESS_REVOKED" } } }
Setiap hasil replay memiliki kolom berikut:
accessTuple
: Upaya akses yang terkait dengan hasil tersebut. Kolom ini mencakup resource, izin, dan akun utama yang terlibat dalam upaya akses.lastSeenDate
: Tanggal terakhir kali upaya akses dilakukan.diff.accessDiff
atauerror
: Jika replay upaya akses berhasil, hasilnya berisi kolomdiff.accessDiff
yang melaporkan perbedaan antara hasil upaya akses berdasarkan kebijakan izin saat ini dan berdasarkan kebijakan izin yang diusulkan. Jika upaya replay tidak berhasil, hasil replay akan berisi kolomerror
dengan deskripsi error. Untuk mempelajari error simulasi lebih lanjut, lihat Error di halaman ini.
Setiap perbedaan akses memiliki komponen berikut:
baseline
: Hasil akses saat menggunakan kebijakan izinkan saat ini. Nilai ini dilaporkan sebagai salah satu nilai berikut:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
, atauUNKNOWN_INFO_DENIED
. Jika hasilnya adalahUNKNOWN_CONDITIONAL
atauUNKNOWN_INFO_DENIED
, respons juga akan mencantumkan error yang terkait dengan informasi yang tidak diketahui, serta kebijakan izinkan yang terkait dengan error tersebut. Untuk informasi selengkapnya tentang nilaiUNKNOWN
, lihat Hasil tidak diketahui di halaman ini.simulated
: Hasil akses saat menggunakan kebijakan izinkan yang diusulkan. Dilaporkan sebagai salah satu nilai berikut:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
, atauUNKNOWN_INFO_DENIED
. Jika hasilnya adalahUNKNOWN_CONDITIONAL
atauUNKNOWN_INFO_DENIED
, respons juga akan mencantumkan error yang terkait dengan informasi yang tidak diketahui, serta kebijakan izinkan yang terkait dengan error tersebut. Untuk informasi selengkapnya tentang nilaiUNKNOWN
, lihat Hasil tidak diketahui di halaman ini.accessChange
: Perubahan antara status akses dasar pengukuran dan status akses simulasi. Lihat tabel berikut untuk daftar nilai potensial:Perubahan akses Detail ACCESS_REVOKED
Akun utama memiliki akses berdasarkan kebijakan izin saat ini, tetapi tidak akan lagi memiliki akses setelah perubahan yang diusulkan. ACCESS_MAYBE_REVOKED
Hasil ini dapat terjadi karena alasan berikut:
- Akun utama memiliki akses berdasarkan kebijakan izin saat ini, tetapi aksesnya berdasarkan kebijakan izin yang diusulkan tidak diketahui.
- Akses akun utama berdasarkan kebijakan izin saat ini tidak diketahui, tetapi akun utama tersebut tidak akan memiliki akses setelah perubahan yang diusulkan.
ACCESS_GAINED
Akun utama tidak memiliki akses berdasarkan kebijakan izinkan saat ini, tetapi akan memiliki akses setelah perubahan yang diusulkan. ACCESS_MAYBE_GAINED
Hasil ini dapat terjadi karena alasan berikut:
- Akun utama tidak memiliki akses berdasarkan kebijakan izinkan saat ini, tetapi aksesnya setelah perubahan yang diusulkan tidak diketahui.
- Akses akun utama berdasarkan kebijakan izin saat ini tidak diketahui, tetapi akun tersebut akan memiliki akses setelah perubahan yang diusulkan.
UNKNOWN_CHANGE
Akses akun utama berdasarkan kebijakan izin saat ini dan kebijakan izin yang diusulkan tidak diketahui, dan perubahan yang diusulkan dapat memengaruhi akses akun utama.
REST
Saat Anda memanggil metode replays.results.list
, respons akan berisi daftar
replayResults
.
Setiap hasil replay menjelaskan upaya akses yang hasilnya akan berbeda jika kebijakan izinkan yang diusulkan telah diterapkan pada saat upaya tersebut. Misalnya, hasil replay berikut menunjukkan bahwa
my-user@example.com
menggunakan izin resourcemanager.projects.update
sebelumnya
untuk melakukan tindakan dalam project my-project
. Namun, jika kebijakan izin yang diusulkan diterapkan, akses mereka akan ditolak.
{ "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 15, "month": 1, "year": 2021 }, "diff": { "accessDiff": { "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" }, "accessChange": "ACCESS_REVOKED" } } }
Setiap hasil replay memiliki kolom berikut:
accessTuple
: Upaya akses yang terkait dengan hasil tersebut. Kolom ini mencakup resource, izin, dan akun utama yang terlibat dalam upaya akses.lastSeenDate
: Tanggal terakhir kali upaya akses dilakukan.diff.accessDiff
atauerror
: Jika replay upaya akses berhasil, hasilnya berisi kolomdiff.accessDiff
yang melaporkan perbedaan antara hasil upaya akses berdasarkan kebijakan izin saat ini dan berdasarkan kebijakan izin yang diusulkan. Jika upaya replay tidak berhasil, hasil replay akan berisi kolomerror
dengan deskripsi error. Untuk mempelajari error simulasi lebih lanjut, lihat Error di halaman ini.
Setiap perbedaan akses memiliki komponen berikut:
baseline
: Hasil akses saat menggunakan kebijakan izinkan saat ini. Nilai ini dilaporkan sebagai salah satu nilai berikut:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
, atauUNKNOWN_INFO_DENIED
. Jika hasilnya adalahUNKNOWN_CONDITIONAL
atauUNKNOWN_INFO_DENIED
, respons juga akan mencantumkan error yang terkait dengan informasi yang tidak diketahui, serta kebijakan izinkan yang terkait dengan error tersebut. Untuk informasi selengkapnya tentang nilaiUNKNOWN
, lihat Hasil tidak diketahui di halaman ini.simulated
: Hasil akses saat menggunakan kebijakan izinkan yang diusulkan. Dilaporkan sebagai salah satu nilai berikut:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
, atauUNKNOWN_INFO_DENIED
. Jika hasilnya adalahUNKNOWN_CONDITIONAL
atauUNKNOWN_INFO_DENIED
, respons juga akan mencantumkan error yang terkait dengan informasi yang tidak diketahui, serta kebijakan izinkan yang terkait dengan error tersebut. Untuk informasi selengkapnya tentang nilaiUNKNOWN
, lihat Hasil tidak diketahui di halaman ini.accessChange
: Perubahan antara status akses dasar pengukuran dan status akses simulasi. Lihat tabel berikut untuk daftar nilai potensial:Perubahan akses Detail ACCESS_REVOKED
Akun utama memiliki akses berdasarkan kebijakan izin saat ini, tetapi tidak akan lagi memiliki akses setelah perubahan yang diusulkan. ACCESS_MAYBE_REVOKED
Hasil ini dapat terjadi karena alasan berikut:
- Akun utama memiliki akses berdasarkan kebijakan izin saat ini, tetapi aksesnya berdasarkan kebijakan izin yang diusulkan tidak diketahui.
- Akses akun utama berdasarkan kebijakan izin saat ini tidak diketahui, tetapi akun utama tersebut tidak akan memiliki akses setelah perubahan yang diusulkan.
ACCESS_GAINED
Akun utama tidak memiliki akses berdasarkan kebijakan izinkan saat ini, tetapi akan memiliki akses setelah perubahan yang diusulkan. ACCESS_MAYBE_GAINED
Hasil ini dapat terjadi karena alasan berikut:
- Akun utama tidak memiliki akses berdasarkan kebijakan izinkan saat ini, tetapi aksesnya setelah perubahan yang diusulkan tidak diketahui.
- Akses akun utama berdasarkan kebijakan izin saat ini tidak diketahui, tetapi akun tersebut akan memiliki akses setelah perubahan yang diusulkan.
UNKNOWN_CHANGE
Akses akun utama berdasarkan kebijakan izin saat ini dan kebijakan izin yang diusulkan tidak diketahui, dan perubahan yang diusulkan dapat memengaruhi akses akun utama.
Hasil tidak diketahui
Jika hasil akses tidak diketahui, artinya Simulator Kebijakan tidak memiliki cukup informasi untuk mengevaluasi upaya akses sepenuhnya.
Konsol
Jika hasil akses tidak diketahui, panel detail perubahan akses akan melaporkan alasan tidak diketahuinya, serta peran tertentu, kebijakan izinkan, keanggotaan grup, dan kondisi yang tidak dapat diakses atau dievaluasi.
Ada beberapa alasan mengapa hasilnya bisa tidak diketahui:
- Info peran ditolak: Akun utama yang menjalankan simulasi tidak memiliki izin untuk melihat detail peran satu atau beberapa peran yang disimulasikan.
- Tidak dapat mengakses kebijakan: Akun utama yang menjalankan simulasi tidak memiliki izin untuk mendapatkan kebijakan izinkan untuk satu atau beberapa resource yang terlibat dalam simulasi.
- Info keanggotaan ditolak: Akun utama yang menjalankan simulasi tidak memiliki izin untuk melihat anggota satu atau beberapa grup yang disertakan dalam kebijakan izin yang diusulkan.
- Kondisi tidak didukung: Ada binding peran bersyarat dalam kebijakan izin yang sedang diuji. Policy Simulator tidak mendukung kondisi, sehingga binding tidak dapat dievaluasi.
gcloud
Di gcloud CLI, hasil simulasi akan melaporkan alasan mengapa hasilnya tidak diketahui dalam perbedaan akses.
Alasan hasil akses tidak diketahui adalah salah satu alasan berikut:
UNKNOWN_INFO_DENIED
: Pengguna tidak memiliki izin untuk mengakses informasi yang diperlukan untuk mengevaluasi status akses. Hal ini dapat terjadi karena salah satu alasan berikut:- Pengguna tidak memiliki izin untuk mengambil kebijakan izinkan yang sedang disimulasikan, atau mereka tidak memiliki izin untuk mengambil kebijakan izinkan untuk resource dalam log akses.
- Pengguna tidak memiliki izin untuk melihat keanggotaan grup.
- Pengguna tidak dapat mengambil informasi peran yang diperlukan.
Untuk mengetahui informasi yang tidak ada, lihat informasi error mengikuti status akses yang dilaporkan.
UNKNOWN_CONDITIONAL
: Ada binding peran bersyarat dalam kebijakan izinkan yang sedang diuji. Policy Simulator tidak mendukung kondisi, sehingga binding tidak dapat dievaluasi.
Jika hasilnya tidak diketahui, kolom untuk kebijakan izin (baseline
atau
simulated
) berisi kolom errors
yang menjelaskan alasan informasi tersebut tidak diketahui, dan kolom policies
yang mencantumkan kebijakan izin yang terkait dengan error tersebut. Untuk informasi selengkapnya tentang error, lihat Error di halaman ini.
REST
Di REST API, hasil simulasi akan melaporkan alasan mengapa hasilnya tidak diketahui dalam perbedaan akses.
Alasan hasil akses tidak diketahui adalah salah satu alasan berikut:
UNKNOWN_INFO_DENIED
: Pengguna tidak memiliki izin untuk mengakses informasi yang diperlukan untuk mengevaluasi status akses. Hal ini dapat terjadi karena salah satu alasan berikut:- Pengguna tidak memiliki izin untuk mengambil kebijakan izinkan yang sedang disimulasikan, atau mereka tidak memiliki izin untuk mengambil kebijakan izinkan untuk resource dalam log akses.
- Pengguna tidak memiliki izin untuk melihat keanggotaan grup.
- Pengguna tidak dapat mengambil informasi peran yang diperlukan.
Untuk mengetahui informasi yang tidak ada, lihat informasi error mengikuti status akses yang dilaporkan.
UNKNOWN_CONDITIONAL
: Ada binding peran bersyarat dalam kebijakan izinkan yang sedang diuji. Policy Simulator tidak mendukung kondisi, sehingga binding tidak dapat dievaluasi.
Jika hasilnya tidak diketahui, kolom untuk kebijakan izin (baseline
atau
simulated
) berisi kolom errors
yang menjelaskan alasan informasi tersebut tidak diketahui, dan kolom policies
yang mencantumkan kebijakan izin yang terkait dengan error tersebut. Untuk informasi selengkapnya tentang error, lihat Error di halaman ini.
Error
Policy Simulator juga melaporkan error yang terjadi selama simulasi. Anda perlu meninjau error ini agar dapat memahami potensi celah dalam simulasi.
Konsol
Ada beberapa jenis error yang mungkin dilaporkan Simulator Kebijakan:
Error operasi: Simulasi tidak dapat dijalankan. Policy Simulator melaporkan error operasi di bagian atas halaman hasil.
Jika pesan error menyatakan bahwa simulasi tidak dapat dijalankan karena ada terlalu banyak log dalam project atau organisasi Anda, maka Anda tidak dapat menjalankan simulasi pada resource.
Jika Anda mendapatkan error ini karena alasan lain, coba jalankan simulasi lagi. Jika Anda tetap tidak dapat menjalankan simulasi, hubungi policy-simulator-feedback@google.com.
Error pengulangan: Pengulangan upaya akses tunggal tidak berhasil, sehingga Simulator Kebijakan tidak dapat menentukan apakah hasil upaya akses akan berubah berdasarkan kebijakan izin yang diusulkan.
Konsol Google Cloud mencantumkan error replay di tabel Perubahan akses selama 90 hari terakhir. Panel Detail perubahan akses untuk setiap error menyertakan pesan error untuk membantu Anda memahami masalah, serta resource dan izin yang disimulasikan saat error terjadi.
Error jenis resource yang tidak didukung: Kebijakan izinkan yang diusulkan memengaruhi izin yang terkait dengan jenis resource yang tidak didukung, yang tidak dapat disimulasikan oleh Policy Simulator.
Policy Simulator mencantumkan izin ini dalam hasil simulasi sehingga Anda mengetahui izin mana yang tidak dapat disimulasikan.
gcloud
Dalam hasil simulasi gcloud CLI, error dapat muncul di dua tempat:
- Kolom
replayResult.error
: Jika upaya replay tidak berhasil, Simulator Kebijakan akan melaporkan error di kolomreplayResult.error
. Jika hasil replay berisi kolom ini, hasil tersebut tidak akan berisi kolomdiff
. - Kolom
replayResult.diff.accessDiff.policy-type.errors
, dengan policy-type adalahbaseline
atausimulated
. Jika upaya replay berhasil, tetapi hasilnya adalahUNKNOWN_INFO_DENIED
atauUNKNOWN_CONDITIONAL
, Simulator Kebijakan akan melaporkan alasan bahwa hasil tidak diketahui di kolom ini.
Policy Simulator menghasilkan jenis error berikut:
Error | Kode error | Detail |
---|---|---|
GENERIC_INTERNAL_ERROR |
13 | Simulasi gagal karena terjadi error internal. Untuk mengatasinya, coba jalankan kembali simulasi. Jika simulasi masih gagal, hubungi policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Policy Simulator tidak dapat memutar ulang upaya akses karena berisi izin, nama resource, atau akun utama yang tidak valid. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator tidak dapat mengevaluasi keanggotaan akun utama dalam grup karena grup ini memiliki terlalu banyak subgrup. Error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin
untuk melihat keanggotaan grup. Error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_POLICY |
7 | Policy Simulator
tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin
untuk mengambil kebijakan yang diizinkan. Jenis error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_ROLE |
7 | Policy Simulator
tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin
untuk mengambil izin dalam peran IAM. Jenis error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_PARENT_IAM_POLICY |
7 | Policy Simulator tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin untuk mengambil kebijakan yang diizinkan resource ancestor. Jenis error ini terkait dengan perubahan akses UNKNOWN_INFO_DENIED . |
UNIMPLEMENTED_MEMBER_TYPE |
12 | Tuple akses berisi jenis utama yang tidak didukung Simulator Kebijakan. |
UNIMPLEMENTED_MEMBER |
12 | Tuple akses berisi entity utama yang tidak didukung Simulator Kebijakan. |
UNIMPLEMENTED_CONDITION |
12 | Tuple akses berisi kondisi yang tidak didukung oleh Simulator Kebijakan. Jenis error ini terkait dengan
perubahan akses UNKNOWN_CONDITIONAL . |
LOG_SIZE_TOO_LARGE |
8 | Resource ini dikaitkan dengan terlalu banyak log akses, sehingga Policy Simulator tidak dapat menjalankan simulasi. Lihat Ukuran replay log maksimum di halaman konsep Simulator Kebijakan untuk mengetahui detailnya. |
UNSUPPORTED_RESOURCE |
12 |
Usulan kebijakan izinkan mengubah izin yang terkait dengan
jenis resource yang tidak didukung. Error ini muncul di kolom
"error": { "code": 12, "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ], "message": "unsupported-permissions-error-message" } Untuk mengetahui informasi selengkapnya tentang jenis resource yang tidak didukung, lihat Tingkat dukungan untuk jenis resource di halaman konsep Policy Simulator. |
REST
Dalam hasil simulasi REST API, error dapat muncul di dua tempat:
- Kolom
replayResult.error
: Jika upaya replay tidak berhasil, Simulator Kebijakan akan melaporkan error di kolomreplayResult.error
. Jika hasil replay berisi kolom ini, hasil tersebut tidak akan berisi kolomdiff
. - Kolom
replayResult.diff.accessDiff.policy-type.errors
, dengan policy-type adalahbaseline
atausimulated
. Jika upaya replay berhasil, tetapi hasilnya adalahUNKNOWN_INFO_DENIED
atauUNKNOWN_CONDITIONAL
, Simulator Kebijakan akan melaporkan alasan bahwa hasil tidak diketahui di kolom ini.
Policy Simulator menghasilkan jenis error berikut:
Error | Kode error | Detail |
---|---|---|
GENERIC_INTERNAL_ERROR |
13 | Simulasi gagal karena terjadi error internal. Untuk mengatasinya, coba jalankan kembali simulasi. Jika simulasi masih gagal, hubungi policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Policy Simulator tidak dapat memutar ulang upaya akses karena berisi izin, nama resource, atau akun utama yang tidak valid. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator tidak dapat mengevaluasi keanggotaan akun utama dalam grup karena grup ini memiliki terlalu banyak subgrup. Error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin
untuk melihat keanggotaan grup. Error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_POLICY |
7 | Policy Simulator
tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin
untuk mengambil kebijakan yang diizinkan. Jenis error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_ROLE |
7 | Policy Simulator
tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin
untuk mengambil izin dalam peran IAM. Jenis error ini terkait dengan
perubahan akses UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_PARENT_IAM_POLICY |
7 | Policy Simulator tidak dapat mengevaluasi akses pengguna karena pemanggil tidak memiliki izin untuk mengambil kebijakan yang diizinkan resource ancestor. Jenis error ini terkait dengan perubahan akses UNKNOWN_INFO_DENIED . |
UNIMPLEMENTED_MEMBER_TYPE |
12 | Tuple akses berisi jenis utama yang tidak didukung Simulator Kebijakan. |
UNIMPLEMENTED_MEMBER |
12 | Tuple akses berisi entity utama yang tidak didukung Simulator Kebijakan. |
UNIMPLEMENTED_CONDITION |
12 | Tuple akses berisi kondisi yang tidak didukung oleh Simulator Kebijakan. Jenis error ini terkait dengan
perubahan akses UNKNOWN_CONDITIONAL . |
LOG_SIZE_TOO_LARGE |
8 | Resource ini dikaitkan dengan terlalu banyak log akses, sehingga Policy Simulator tidak dapat menjalankan simulasi. Lihat Ukuran replay log maksimum di halaman konsep Simulator Kebijakan untuk mengetahui detailnya. |
UNSUPPORTED_RESOURCE |
12 |
Usulan kebijakan izinkan mengubah izin yang terkait dengan
jenis resource yang tidak didukung. Error ini muncul di kolom
"error": { "code": 12, "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ], "message": "unsupported-permissions-error-message" } Untuk mengetahui informasi selengkapnya tentang jenis resource yang tidak didukung, lihat Tingkat dukungan untuk jenis resource di halaman konsep Policy Simulator. |
Menerapkan simulasi perubahan kebijakan
Untuk menerapkan simulasi perubahan pada kebijakan izinkan, ikuti langkah-langkah berikut:
Konsol
Klik Terapkan perubahan yang diusulkan.
Pada dialog konfirmasi, klik Apply untuk mengonfirmasi perubahan.
gcloud
Gunakan perintah set-iam-policy
, dan berikan jalur ke file JSON yang berisi kebijakan izin yang disimulasikan yang ingin Anda terapkan:
gcloud resource-type set-iam-policy resource-id filepath
Berikan nilai berikut:
resource-type
: Jenis resource yang kebijakan izinkannya ingin Anda update. Contoh,projects
.resource-id
: ID resource yang kebijakan izinnya ingin Anda perbarui. Contoh,my-project
.filepath
: Jalur ke file yang berisi kebijakan izin yang diperbarui.
Respons berisi kebijakan izin yang telah diperbarui. Jika Anda memperlakukan kebijakan izin IAM sebagai kode dan menyimpannya dalam sistem kontrol versi, Anda harus menyimpan kebijakan izinkan yang ditampilkan gcloud CLI, bukan file JSON yang berisi kebijakan izin yang disimulasikan.
REST
Tetapkan kebijakan izinkan yang diusulkan sebagai kebijakan izin baru untuk resource.
Untuk menetapkan kebijakan izinkan dalam permintaan sebagai kebijakan izin baru pada project, gunakan metode projects.setIamPolicy
Resource Manager API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.POLICY
: Representasi JSON dari kebijakan yang ingin Anda tetapkan. Untuk informasi selengkapnya tentang format kebijakan, lihat referensi Kebijakan.
Metode HTTP dan URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Meminta isi JSON:
{ "policy": { POLICY } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Respons berisi kebijakan izin yang telah diperbarui.
Simpan hasil simulasi
Jika menggunakan gcloud CLI, Anda dapat menyimpan hasil Simulator Kebijakan sebagai file JSON, YAML, atau CSV.
Simpan sebagai JSON atau YAML
Untuk menyimpan hasil simulasi sebagai file JSON atau YAML, tambahkan flag berikut ke perintah replay-recent-access
saat menjalankan simulasi:
--output=output-format > filename
Ganti nilai berikut:
output-format
: Bahasa file yang diekspor,json
atauyaml
.filename
: Nama untuk file yang diekspor.
Simpan sebagai CSV
Untuk menyimpan file CSV, tambahkan tanda berikut ke perintah replay-recent-access
saat menjalankan simulasi:
--flatten="diffs[]" --format=csv(output-fields) > filename
Ganti nilai berikut:
output-fields
: Daftar yang dipisahkan koma untuk kolom yang ingin disertakan dalam hasil yang diekspor. Misalnya,diffs.accessTuple.principal, diffs.accessTuple.permission
.filename
: Nama untuk file yang diekspor.
Secara opsional, Anda dapat menambahkan kolom lain, seperti errors[]
ke
tanda --flatten
. Dengan menambahkan kolom ke tanda --flatten
, elemen dalam kolom tersebut dapat dicantumkan pada baris terpisah dalam file CSV.
Berikut adalah contoh perintah replay-recent-access
yang menyimpan
kolom terpenting dari hasil simulasi sebagai file CSV
simulation-results.csv
:
gcloud iam simulator replay-recent-access --flatten="diffs[]" \ --format="csv(diffs.accessTuple.principal, diffs.accessTuple.permission, \ diffs.accessTuple.fullResourceName, diffs.diff.accessDiff.accessChange, \ diffs.diff.accessDiff.baseline.accessState, \ diffs.diff.accessDiff.simulated.accessState)" \ //cloudresourcemanager.googleapis.com/projects/my-project \ proposed-policy.json > simulation-results.csv
Contoh ini menyimulasikan proposed-policy.json
untuk project my-project
dan
menyimpan hasilnya sebagai simulation-results.csv
. File CSV ini berisi
kolom berikut: akun utama, izin, resource, perubahan akses, status akses
dasar pengukuran, dan simulasi status akses.
Untuk mengetahui informasi lebih lanjut tentang cara memformat dengan gcloud CLI, baca format.
Langkah selanjutnya
- Pelajari cara memecahkan masalah akses untuk akun utama yang ada.
- Pelajari cara menerapkan hak istimewa terendah dengan rekomendasi peran.