Pemecah Masalah Kebijakan membantu Anda memahami apakah akun utama dapat mengakses resource. Dengan mempertimbangkan akun utama, resource, dan izin, Pemecah Masalah Kebijakan memeriksa kebijakan izinkan, kebijakan tolak, dan kebijakan Principal Access Boundary (PAB) yang memengaruhi akses akun utama. Kemudian, class memberi tahu Anda apakah, berdasarkan kebijakan tersebut, akun utama dapat menggunakan izin yang ditentukan untuk mengakses resource. Bagian ini juga mencantumkan kebijakan yang relevan dan menjelaskan pengaruhnya terhadap akses akun utama.
Anda dapat mengakses Pemecah Masalah Kebijakan menggunakan konsolGoogle Cloud , Google Cloud CLI, atau REST API. Untuk kueri dasar, biasanya menggunakan konsol Google Cloud adalah cara tercepat. Untuk skenario yang lebih kompleks, pertimbangkan gcloud CLI atau REST API.
Sebelum memulai
-
Aktifkan Policy Troubleshooter 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.
Izin yang diperlukan
Untuk memecahkan masalah akses akun utama Anda sepenuhnya, Anda memerlukan izin berikut.
Izin untuk memecahkan masalah akses bagi setiap entitas
Pemecah Masalah Kebijakan menganalisis akses akun utama ke resource berdasarkan kebijakan izinkan, kebijakan tolak, kebijakan Principal Access Boundary, dan peran yang izinnya dapat Anda lihat. Jika Anda tidak memiliki izin untuk melihat kebijakan yang berlaku untuk resource, atau jika Anda tidak memiliki izin untuk melihat peran kustom, Anda mungkin tidak dapat mengetahui apakah suatu prinsipal memiliki akses.
Izin untuk memecahkan masalah kebijakan izinkan dan tolak
Untuk memecahkan masalah kebijakan izin dan penolakan, Anda memerlukan izin di organisasi yang berisi resource yang ingin Anda pecahkan masalahnya. Izin ini memungkinkan Anda melihat kebijakan izin dan tolak yang mengontrol akses ke resource.
Untuk mendapatkan izin yang Anda perlukan untuk memecahkan masalah akses prinsipal, minta administrator untuk memberi Anda peran IAM berikut pada organisasi yang berisi resource yang aksesnya ingin Anda pecahkan masalahnya:
- Security Reviewer (
roles/iam.securityReviewer) -
Memecahkan masalah kebijakan penolakan:
Deny Reviewer (
roles/iam.denyReviewer) -
Memecahkan masalah kebijakan yang mencakup binding untuk set utama akun layanan:
Browser (
roles/browser) -
Gunakan Google Cloud CLI untuk memecahkan masalah:
Pengguna Penggunaan Layanan (
roles/serviceusage.serviceUsageConsumer)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Jika Anda tidak memiliki izin untuk melihat kebijakan izin dan tolak untuk resource,
hasil akses untuk kebijakan izin dan tolak tersebut adalah Unknown.
Izin untuk memecahkan masalah kebijakan Principal Access Boundary
Untuk memecahkan masalah kebijakan Batas Akses Akun Utama, Anda memerlukan izin di organisasi yang set akun utamanya mencakup akun utama tersebut. Cara Anda mengidentifikasi organisasi ini bergantung pada jenis prinsipal:
- Akun Google dan grup Google: Organisasi yang terkait dengan domain Google Workspace yang mencakup prinsipal
- Identitas gabungan (identitas dalam workforce identity pool atau workload identity pool): Organisasi yang berisi identity pool yang menyertakan prinsipal
- Akun layanan: Organisasi yang berisi project tempat akun layanan dibuat
- Identitas agen: Organisasi yang berisi project tempat agen dibuat
Dengan izin ini, Anda dapat melihat kebijakan Principal Access Boundary yang mengontrol apa yang dapat diakses oleh akun utama.
Untuk mendapatkan izin yang Anda perlukan untuk memecahkan masalah akses prinsipal, minta administrator untuk memberi Anda peran IAM berikut di organisasi yang sesuai:
- Pelihat Kebijakan Batas Akses Principal (
roles/iam.principalAccessBoundaryViewer) -
Memecahkan masalah kebijakan Principal Access Boundary yang terikat ke set akun utama project, folder, atau organisasi, atau terikat ke identitas agen:
Administrator Organisasi (
roles/resourcemanager.organizationAdmin) -
Memecahkan masalah kebijakan Batas Akses Principal yang terikat ke domain Google Workspace:
Admin IAM Pool Workspace (
roles/iam.workspacePoolAdmin) -
Memecahkan masalah kebijakan Batas Akses Akun Utama yang terikat ke workforce identity pool:
Admin Workforce Pool IAM (
roles/iam.workforcePoolAdmin) -
Memecahkan masalah kebijakan Principal Access Boundary yang terikat ke workload identity pool:
IAM Workload Identity Pool Admin (
roles/iam.workloadIdentityPoolAdmin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Jika Anda tidak memiliki izin untuk melihat kebijakan Batas Akses Principal yang berlaku untuk principal, hasil akses untuk kebijakan Batas Akses Principal adalah Unknown.
Izin untuk memecahkan masalah akses bagi anggota grup
Jika kebijakan izinkan dan tolak Anda menyertakan grup, Anda memerlukan izin Google Workspace Admin API groups.read untuk memecahkan masalah akses bagi setiap anggota grup. Admin Super dan Admin Grup otomatis memiliki izin ini. Untuk
memberikan izin ini kepada pengguna yang bukan admin Super atau Grup, buat peran
administrator Google Workspace khusus yang berisi hak istimewa
groups.read (terletak di bagian Hak Istimewa Admin API) dan berikan peran tersebut kepada
pengguna.
Jika Anda tidak memiliki izin ini, binding peran dan aturan tolak yang berisi grup atau domain akan memiliki hasil akses Tidak diketahui, kecuali jika binding peran atau aturan tolak juga menyertakan utama secara eksplisit.
Izin untuk memecahkan masalah akses bagi anggota domain
Jika kebijakan izinkan dan tolak Anda mencakup akun Google Workspace atau domain Cloud Identity, Anda harus menjadi administrator domain untuk memecahkan masalah akses bagi setiap anggota domain.
Jika Anda tidak memiliki izin ini, binding peran dan aturan tolak yang berisi grup atau domain akan memiliki hasil akses Tidak diketahui, kecuali jika binding peran atau aturan tolak juga menyertakan utama secara eksplisit.
Memecahkan masalah akses
Untuk memecahkan masalah akses, Anda memerlukan akun utama, resource, dan izin yang ingin Anda periksa. Informasi ini dapat diberikan oleh ID error:
ID Error: ID unik untuk pesan error izin. ID error memberikan konteks untuk error, termasuk akun utama, resource, izin, dan kondisi IAM yang didukung. ID error yang terkait dengan Identitas Agen memberikan konteks untuk Identitas Agen dan klaimnya, seperti platform dan penampung.
Kondisi IAM yang didukung mencakup
principal.typedanprincipal.subject.
Jika tidak memiliki ID error, Anda dapat memecahkan masalah akses dengan informasi berikut:
Entitas: Identitas yang akan diperiksa. Anda dapat memasukkan salah satu dari berikut:
Alamat email: Harus merujuk ke pengguna, satu akun layanan, atau set utama akun layanan.
ID Identitas Agen: Harus mengikuti format ini:
TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH.Contoh:
agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agentPemecah Masalah Kebijakan mengekstrak atribut platform dan penampung resource dari string subjek agen menggunakan pola standar
resources/{platform}/projects/{project_number}/.... Jika agen menggunakan format subjek non-standar, Pemecah Masalah Kebijakan tidak dapat memperoleh atributnya, dan binding set akun utama berbasis atribut dievaluasi keUnknown.Jika agen tidak memiliki binding izin pemberian akses, Pemecah Masalah Kebijakan akan menampilkan status akses
UNKNOWN_INFO, bukanNOT_GRANTED.ID menggunakan hal berikut:
TRUST_DOMAIN: Domain tepercaya organisasi Anda (misalnya,agents.global.org-123456789012.system.id.goog)SERVICE: Nama pendek layanan Google Cloud(misalnya,aiplatformataudiscoveryengine)RESOURCE_PATH: Jalur lengkap ke resource yang menghosting agen
Jenis akun utama lainnya, termasuk grup, domain, identitas tenaga kerja, dan identitas workload, tidak didukung.
Resource: Nama lengkap resource yang aksesnya ingin Anda pecahkan masalahnya. Misalnya, untuk memecahkan masalah akses ke project
my-project, masukkan//cloudresourcemanager.googleapis.com/projects/my-project. Untuk jenis resource lainnya, lihat contoh nama resource lengkap.Izin: Izin yang akan diperiksa. Jika Anda menggunakan konsolGoogle Cloud , konsol akan menampilkan daftar saran saat Anda mengetik.
Untuk memecahkan masalah izin, izin harus berlaku untuk resource dalam permintaan. Dengan kata lain, izin tersebut harus dapat digunakan untuk mengakses resource dengan cara tertentu. Jika izin tidak berlaku untuk resource, permintaan akan gagal. Misalnya, jika Anda mencoba memecahkan masalah izin
compute.instances.getuntuk cluster Google Kubernetes Engine, permintaan akan gagal karena izincompute.instance.gettidak dapat digunakan untuk mengakses cluster Google Kubernetes Engine.Untuk mengetahui daftar lengkap izin, lihat referensi izin.
Konsol
Untuk memecahkan masalah akses, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Pemecah Masalah Kebijakan.
Jika Anda memiliki ID error, pilih ID error dan masukkan ID tersebut.
Jika Anda tidak memiliki ID error, pilih Manual.
Masukkan alamat email principal atau ID Identitas Agen yang aksesnya ingin Anda periksa.
Masukkan nama resource lengkap dari resource yang akan diperiksa.
Jika Anda tidak mengetahui nama resource lengkap, lakukan salah satu hal berikut:
- Jika Anda memecahkan masalah akses untuk project, folder, atau organisasi, mulai mengetik untuk melihat opsi pelengkapan otomatis.
Jika Anda memecahkan masalah akses untuk jenis resource lain, klik Jelajahi untuk membuka dialog penelusuran resource, lalu telusuri resource:
- Di kotak Pilih cakupan, pilih project, folder, atau organisasi yang akan ditelusuri.
- Di kotak Resource type, pilih jenis resource yang ingin Anda cari.
- Di kotak Cari referensi, masukkan sebagian nama referensi.
- Di bagian hasil, pilih resource yang ingin Anda periksa.
- Klik Pilih untuk memilih resource dan menutup dialog.
Masukkan izin yang akan diperiksa.
Jika Anda tidak mengetahui nama izin lengkap, mulai ketik untuk melihat opsi pelengkapan otomatis.
Opsional: Untuk memeriksa beberapa resource dan izin, pilih Tambahkan Pasangan Lain dan ulangi langkah sebelumnya.
Klik Periksa akses.
gcloud
Untuk mengetahui alasan akun utama memiliki, atau tidak memiliki, izin IAM, gunakan perintah
gcloud beta policy-troubleshoot iam.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
-
VERSION: Opsional. Versi perintah yang akan digunakan. Untuk memecahkan masalah akses berdasarkan kebijakan izinkan dan tolak saja, jangan tentukan versi. Untuk memecahkan masalah akses berdasarkan kebijakan izin, penolakan, dan Principal Access Boundary, gunakan versibeta. EMAIL: Alamat email akun utama yang izinnya ingin Anda pecahkan masalahnya. Untuk Agent Identity, Anda harus memberikan ID utama.RESOURCE: Resource tempat izin diberikan.PERMISSION: Izin yang ingin Anda pecahkan masalahnya.
Jalankan perintah gcloud beta policy-troubleshoot iam:
Linux, macOS, atau Cloud Shell
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION
Windows (PowerShell)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION
Windows (cmd.exe)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION
Anda akan melihat respons seperti berikut:
Respons
{
"accessTuple": {
"conditionContext": {
"destination": {},
"effectiveTags": [
{
"namespacedTagKey": "project-1/tag-key-1",
"namespacedTagValue": "project-1/tag-key-1/tag-value-1",
"tagKey": "tagKeys/123456789012",
"tagKeyParentName": "projects/123456789012",
"tagValue": "tagValues/123456789012"
},
],
"request": {},
"resource": {}
},
"fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
"permission": "bigtable.instances.create",
"permissionFqdn": "bigtable.googleapis.com/instances.create",
"principal": "service-account-3@project-1.iam.gserviceaccount.com"
},
"allowPolicyExplanation": {
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"explainedPolicies": [
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"bindingExplanations": [
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"condition": {
"expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
"title": "Resource-based condition"
},
"conditionExplanation": {
"evaluationStates": [
{
"end": 62,
"value": false
}
],
"value": false
},
"memberships": {
"serviceAccount:service-account-1@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/bigquery.admin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"condition": {
"expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
"title": "Tag-based condition"
},
"conditionExplanation": {
"evaluationStates": [
{
"end": 73,
"value": true
}
],
"value": true
},
"memberships": {
"serviceAccount:service-account-2@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/bigquery.admin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"user:user-2@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/compute.admin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"user:user-1@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"user:user-3@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/iam.serviceAccountTokenCreator",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"user:user-2@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"user:user-1@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"role": "roles/owner",
"rolePermission": "ROLE_PERMISSION_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"serviceAccount:service-account-3@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/resourcemanager.projectIamAdmin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/resourcemanager.tagViewer",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
}
],
"fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
"policy": {
"bindings": [
{
"condition": {
"expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
"title": "Resource-based condition"
},
"members": [
"serviceAccount:service-account-1@project-1.iam.gserviceaccount.com"
],
"role": "roles/bigquery.admin"
},
{
"condition": {
"expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
"title": "Tag-based condition"
},
"members": [
"serviceAccount:service-account-2@project-1.iam.gserviceaccount.com"
],
"role": "roles/bigquery.admin"
},
{
"members": [
"user:user-2@example.com"
],
"role": "roles/compute.admin"
},
{
"members": [
"user:user-1@example.com",
"user:user-3@example.com"
],
"role": "roles/iam.serviceAccountTokenCreator"
},
{
"members": [
"user:user-2@example.com",
"user:user-1@example.com"
],
"role": "roles/owner"
},
{
"members": [
"serviceAccount:service-account-3@project-1.iam.gserviceaccount.com",
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
],
"role": "roles/resourcemanager.projectIamAdmin"
},
{
"members": [
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
],
"role": "roles/resourcemanager.tagViewer"
}
],
"etag": "BwYY6ttEMEY=",
"version": 3
},
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
],
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"denyPolicyExplanation": {
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"explainedResources": [
{
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"explainedPolicies": [
{
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"policy": {
"createTime": "2024-04-09T23:28:24.103203Z",
"displayName": "Troubleshooter v3 prober non-tag deny policy",
"etag": "MTgyMzk3MDY4OTY4MDE0ODg4OTY=",
"kind": "DenyPolicy",
"name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F546942305807/denypolicies/deny-policy-1",
"rules": [
{
"denyRule": {
"deniedPermissions": [
"bigquery.googleapis.com/datasets.create"
],
"deniedPrincipals": [
"principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com"
]
}
}
],
"uid": "fab63b4d-ecfb-5f06-8a6d-602bf1be5062",
"updateTime": "2024-05-20T23:29:38.428095Z"
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"ruleExplanations": [
{
"combinedDeniedPermission": {
"permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"combinedDeniedPrincipal": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"combinedExceptionPermission": {
"permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"combinedExceptionPrincipal": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"deniedPermissions": {
"bigquery.googleapis.com/datasets.create": {
"permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"deniedPrincipals": {
"principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
]
},
],
"fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
],
"permissionDeniable": true,
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"overallAccessState": "CANNOT_ACCESS",
"pabPolicyExplanation": {
"explainedBindingsAndPolicies": [
{
"bindingAndPolicyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
"explainedPolicy": {
"explainedRules": [
{
"combinedResourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED",
"effect": "ALLOW",
"explainedResources": [
{
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"resource": "//cloudresourcemanager.googleapis.com/projects/project-2",
"resourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED"
}
],
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"ruleAccessState": "PAB_ACCESS_STATE_NOT_ALLOWED"
}
],
"policy": {
"createTime": "2024-04-09T17:40:51.627668Z",
"details": {
"enforcementVersion": "1",
"rules": [
{
"effect": "ALLOW",
"resources": [
"//cloudresourcemanager.googleapis.com/projects/project-2"
]
}
]
},
"displayName": "Troubleshooter v3 PAB Policy",
"etag": "m64s4IgR80eDJDywuVA2DA==",
"name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
"uid": "puid_11875429267422576641",
"updateTime": "2024-04-09T17:40:51.627668Z"
},
"policyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
"policyVersion": {
"enforcementState": "PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED",
"version": 1
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"explainedPolicyBinding": {
"conditionExplanation": {
"evaluationStates": [
{
"end": 53,
"value": true
},
{
"end": 153,
"start": 58,
"value": false
},
{
"end": 248,
"start": 157,
"value": false
}
],
"value": false
},
"policyBinding": {
"condition": {
"expression": "principal.type == 'iam.googleapis.com/ServiceAccount' && (principal.subject=='service-account-1@project-1.iam.gserviceaccount.com' || principal.subject=='service-account-2@project-1.iam.gserviceaccount.com')"
},
"createTime": "2024-04-09T17:51:13.504418Z",
"displayName": "PAB Policy Binding on project-1 project",
"etag": "W/\"hz9IKzHsIqvopqDRcVYDxQ==\"",
"name": "projects/123456789012/locations/global/policyBindings/example-policy-binding",
"policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
"policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
"policyUid": "puid_11875429267422576641",
"target": {
"principalSet": "//cloudresourcemanager.googleapis.com/projects/project-1"
},
"uid": "buid_1012746966204940289",
"updateTime": "2024-05-09T23:08:56.846355Z"
},
"policyBindingState": "POLICY_BINDING_STATE_NOT_ENFORCED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
],
"principalAccessBoundaryAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
}
REST
Untuk mengetahui alasan akun utama memiliki, atau tidak memiliki, izin IAM, gunakan metode
iam.troubleshoot
Policy Troubleshooter API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
-
VERSION: Versi API yang akan digunakan untuk permintaan ini. Untuk memecahkan masalah akses hanya berdasarkan kebijakan izinkan dan tolak, gunakanv3. Untuk memecahkan masalah akses berdasarkan kebijakan izinkan, tolak, dan Batas Akses Principal, gunakanv3beta. EMAIL: Alamat email akun utama yang izinnya ingin Anda pecahkan masalahnya. Untuk Agent Identity, Anda harus memberikan ID utama.RESOURCE: Resource tempat izin diberikan.PERMISSION: Izin yang ingin Anda pecahkan masalahnya.PROJECT_ID: ID project yang ingin Anda gunakan untuk membuat permintaan. Project ID adalah string alfanumerik, sepertimy-project.
Metode HTTP dan URL:
POST https://policytroubleshooter.googleapis.com/VERSION/iam:troubleshoot
Meminta isi JSON:
{
"accessTuple": {
"principal": "EMAIL",
"fullResourceName": "RESOURCE",
"permission": "PERMISSION"
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
Memahami hasil Pemecah Masalah
Konsol
Halaman hasil berisi informasi berikut:
- Detail evaluasi
- Detail kebijakan, yang berisi hal berikut:
Detail evaluasi
Bagian Detail evaluasi berisi ringkasan akses yang Anda pecahkan masalahnya, termasuk prinsipal, resource, dan izin yang ditentukan. Jika Anda memecahkan masalah beberapa pasangan izin resource, Anda dapat menggunakan daftar Evaluasi Akses untuk beralih di antara pasangan tersebut.

Detail kebijakan
Bagian Detail kebijakan berisi detail tentang pengaruh kebijakan izinkan, tolak, dan Batas Akses Akun Utama yang relevan terhadap akses akun utama.
Kebijakan Batas Akses Utama yang relevan mencakup semua kebijakan Batas Akses Utama yang terikat ke set akun utama yang mencakup akun utama.
Kebijakan izin dan penolakan yang relevan mencakup hal berikut:
- Kebijakan izinkan resource
- Kebijakan penolakan resource, jika ada
- Kebijakan izinkan project induk, folder, dan organisasi resource, jika ada
- Kebijakan penolakan project, folder, dan organisasi induk resource, jika ada
Kebijakan izinkan dan tolak project induk, folder, dan organisasi relevan karena adanya pewarisan kebijakan. Jika Anda melampirkan kebijakan izinkan atau tolak ke project, folder, atau organisasi, kebijakan tersebut juga berlaku untuk semua resource di dalam project, folder, atau organisasi tersebut.
Misalnya, jika kebijakan penolakan untuk organisasi mengatakan bahwa akun utama tidak dapat menggunakan izin tertentu, akun utama tidak dapat menggunakan izin tersebut untuk resource apa pun dalam organisasi. Aturan ini berlaku meskipun folder dan project di dalam organisasi tersebut memiliki kebijakan penolakan yang lebih permisif, atau mengizinkan kebijakan yang memberikan izin kepada entity utama.
Demikian pula, jika kebijakan izinkan untuk suatu project memberikan izin khusus kepada akun utama, maka akun utama memiliki izin tersebut untuk setiap resource dalam project, asalkan tidak ditolak.
Bagian Detail kebijakan berisi bagian berikut:
Status akses
Bagian Status akses merangkum hasil untuk setiap jenis kebijakan (kebijakan Principal Access Boundary, kebijakan penolakan, dan kebijakan izin), serta menyatakan hasil keseluruhan. Hasilnya menunjukkan apakah akun utama dapat menggunakan izin untuk mengakses resource, sesuai dengan kebijakan yang relevan.

Agar pengguna dapat menggunakan izin untuk mengakses resource, semua jenis kebijakan harus mengizinkan akses. Untuk mengetahui informasi selengkapnya, lihat Evaluasi kebijakan.
Kebijakan Principal Access Boundary
Di bagian Kebijakan batas akses utama, Anda dapat melihat semua kebijakan Batas Akses Utama yang tunduk pada akun utama, dan pengikatan kebijakan yang mengikat kebijakan ini ke akun utama.
Panel Kebijakan mencantumkan semua kebijakan yang terikat ke set akun utama yang mencakup akun utama. Di samping setiap kebijakan terdapat ikon yang menunjukkan pengaruh kebijakan tersebut terhadap akses akun utama.

Kebijakan Batas Akses Akun Utama dapat memengaruhi akses akun utama dengan cara berikut:
- Akun utama memenuhi syarat untuk mengakses resource: Kebijakan Batas Akses Akun Utama berlaku untuk akun utama, dan salah satu aturannya berisi resource yang dikueri.
- Akun utama tidak memenuhi syarat untuk mengakses resource: Kebijakan Principal Access Boundary berlaku untuk akun utama, tetapi resource yang dikueri tidak ada dalam aturan kebijakan tersebut.
Tidak diterapkan: Kebijakan Principal Access Boundary tidak diterapkan dalam situasi berikut:
- IAM tidak menerapkan izin yang ditentukan pada kebijakan Batas Akses Akun Utama versi penerapannya. Akibatnya, kebijakan Batas Akses Akun Utama tidak dapat memblokir akses.
- Karena kondisi dalam pengikatan kebijakan, kebijakan atau pengikatan Batas Akses Akun Utama tidak berlaku untuk akun utama.
- Kebijakan Principal Access Boundary tidak memiliki aturan.
Jika kebijakan Batas Akses Akun Utama tidak diterapkan, kebijakan tersebut tidak dapat memengaruhi apakah akun utama dapat mengakses resource atau tidak.
Untuk melihat aturan dan pengikatan yang terkait dengan kebijakan Batas Akses Utama, klik nama kebijakan. Panel yang berdekatan dengan panel Kebijakan menampilkan detail kebijakan.
Untuk melihat aturan dalam kebijakan, klik tab Aturan batas. Tab ini menampilkan tabel aturan kebijakan Batas Akses Utama yang relevan.

Aturan principal access boundary relevan jika aturan tersebut memengaruhi hasil keseluruhan kueri Pemecah Masalah Kebijakan. Akibatnya, aturan yang relevan bervariasi bergantung pada hasil Pemecah Masalah Kebijakan. Misalnya, pertimbangkan situasi berikut:
- Pemecah Masalah Kebijakan menunjukkan bahwa akun utama dapat mengakses resource. Akibatnya, aturan yang relevan adalah aturan yang membuat akun utama memenuhi syarat untuk mengakses resource.
- Pemecah Masalah Kebijakan menunjukkan bahwa akun utama tidak dapat mengakses resource. Namun, menurut kebijakan Batas Akses Akun Utama yang relevan, akun utama tersebut memenuhi syarat untuk mengakses resource. Akibatnya, tidak ada aturan yang relevan, karena kebijakan Batas Akses Utama (PAB) bukan alasan mengapa akun utama tidak dapat mengakses resource.
- Pemecah Masalah Kebijakan menunjukkan bahwa akun utama tidak dapat mengakses resource. Selain itu, menurut kebijakan Batas Akses Utama (PAB) yang relevan, prinsipal tidak memenuhi syarat untuk mengakses resource. Akibatnya, aturan yang relevan adalah aturan yang tidak membuat akun utama memenuhi syarat untuk mengakses resource.
Untuk melihat semua aturan Principal Access Boundary dalam kebijakan, hapus centang pada kotak Tampilkan hanya aturan dan binding yang relevan.
Kolom Temuan dalam tabel aturan batas menunjukkan apakah aturan principal access boundary berisi resource yang dikueri. Untuk melihat detail selengkapnya tentang aturan, klik Lihat detail aturan.
Untuk melihat binding kebijakan untuk kebijakan, klik tab Bindings. Tab ini menampilkan tabel pengikatan kebijakan yang relevan untuk kebijakan Batas Akses Utama yang dipilih.

Pengikatan kebijakan relevan jika secara efektif menerapkan kebijakan Batas Akses Akun Utama ke akun utama yang dikueri. Agar pengikatan kebijakan menerapkan kebijakan Batas Akses Principal ke principal, hal berikut harus benar:
- Akun utama yang ditetapkan dalam binding kebijakan harus menyertakan akun utama yang dikueri
- Semua kondisi dalam pengikatan kebijakan harus dievaluasi ke
trueuntuk prinsipal yang dikueri.
Untuk melihat semua binding kebijakan dengan set akun utama yang menyertakan akun utama yang dikueri, terlepas dari apakah akun utama yang dikueri memenuhi kondisi dalam binding atau tidak, hapus centang pada kotak Tampilkan hanya aturan dan binding yang relevan.
Untuk Identitas Agen,
Pemecah Masalah Kebijakan mengevaluasi kebijakan Batas Akses Utama
yang terkait dengan hierarki resource project atau
penampung hosting agen, dan mengevaluasi kondisi yang cocok dengan jenis identitas
(principal.type == 'iam.googleapis.com/AgentPoolIdentity') dan pola subjek
(principal.subject.startsWith(...)) agen.
Kolom Temuan dalam tabel binding menunjukkan apakah binding diterapkan untuk akun utama yang dikueri. Untuk melihat detail selengkapnya tentang pengikatan kebijakan, klik Lihat detail pengikatan.
Kebijakan penolakan
Di bagian Kebijakan penolakan, Anda dapat melihat semua kebijakan penolakan yang relevan, mengidentifikasi aturan penolakan yang menolak akses ke akun utama, dan memahami alasan aturan penolakan menolak atau tidak menolak izin akun utama.
Panel Resources with deny policies mencantumkan semua kebijakan penolakan yang relevan, yang dikelompokkan berdasarkan resource yang dilampirkan. Di samping setiap kebijakan penolakan terdapat evaluasi akses. Evaluasi ini hanya berlaku untuk kebijakan penolakan tersebut—evaluasi ini tidak mencerminkan akses apa pun dari kebijakan yang diwariskan. Jika Anda tidak memiliki izin untuk melihat kebijakan penolakan resource, daftar resource tidak menyertakan resource tersebut atau kebijakan penolakannya.

Untuk melihat aturan penolakan yang relevan dalam kebijakan penolakan ini, klik kebijakan penolakan. Untuk melihat semua aturan penolakan dalam kebijakan penolakan resource, klik resource. Aturan penolakan muncul di panel Aturan penolakan. Panel ini berisi tabel semua aturan penolakan dengan prinsipal atau izin yang dikueri untuk resource atau kebijakan penolakan yang telah Anda pilih.

Kolom Akses menunjukkan apakah aturan penolakan menolak izin utama. Untuk melihat detail selengkapnya tentang aturan penolakan, klik Lihat aturan penolakan di baris aturan tersebut.
Kebijakan izin
Di bagian Kebijakan izinkan, Anda dapat melihat semua kebijakan izinkan yang relevan, mengidentifikasi pengikatan peran yang memberikan akses ke akun utama, dan memahami alasan pengikatan peran memberikan atau tidak memberikan izin kepada akun utama.
Panel Resource mencantumkan resource yang ditentukan dan ancestor-nya. Di samping setiap resource terdapat evaluasi akses. Evaluasi ini hanya berlaku untuk kebijakan izinkan resource tersebut—tidak mencerminkan akses apa pun dari kebijakan yang diwariskan. Jika Anda tidak memiliki izin untuk melihat kebijakan izin resource, daftar resource tidak menyertakan resource tersebut.
Untuk melihat binding peran yang relevan dalam kebijakan izin resource dan melihat bagaimana binding tersebut memberikan atau tidak memberikan izin kepada akun utama, klik resource. Binding peran kebijakan izinkan muncul di panel Binding peran.
Panel Binding peran berisi tabel binding peran dalam kebijakan izin resource yang dipilih. Secara default, tabel hanya berisi binding peran yang menyertakan peran dengan izin yang ditentukan. Jika akun utama tidak memiliki akses, tabel juga menampilkan binding peran dengan peran kustom yang dapat diedit. Untuk melihat semua binding peran, hapus centang pada kotak Tampilkan hanya binding yang relevan.

Kolom Akses menunjukkan apakah binding peran memberikan izin kepada akun utama. Untuk melihat detail selengkapnya tentang binding peran, klik Lihat detail binding di baris binding peran tersebut.
Saat mengevaluasi kebijakan izin untuk identitas agen, Pemecah Masalah Kebijakan akan memeriksa apakah agen cocok dengan salah satu ID akun utama berikut:
| ID entitas | Contoh |
|---|---|
| Identitas agen langsung | principal://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH |
| Memercayai set prinsipal domain | principalSet://TRUST_DOMAIN/* |
| Setiap prinsipal platform | principalSet://TRUST_DOMAIN/attribute.platform/SERVICE |
| Kumpulan prinsipal penampung resource | principalSet://TRUST_DOMAIN/attribute.container/projects/PROJECT_NUMBER |
| Set utama container platform | principalSet://TRUST_DOMAIN/attribute.platformContainer/SERVICE/projects/PROJECT_NUMBER |
Saat Anda memecahkan masalah akses untuk akun utama non-agen, seperti pengguna atau akun layanan, semua binding peran untuk Identitas Agen akan dievaluasi menjadi Not matched.
gcloud
Respons berisi empat bagian utama: deskripsi tuple akses dalam permintaan, hasil evaluasi kebijakan izin, hasil evaluasi kebijakan penolakan, dan status akses keseluruhan.
-
accessTuple: Deskripsi tuple akses dalam permintaan, termasuk konteks kondisi yang Anda berikan. Bagian ini juga berisi ringkasan tag yang berlaku untuk resource. -
allowPolicyExplanation: Ringkasan apakah kebijakan izin yang relevan memberikan izin kepada akun utama, diikuti dengan daftar kebijakan izin dan binding perannya.Untuk setiap kebijakan izin, respons mencantumkan semua binding peran dalam kebijakan dan mengevaluasinya berdasarkan kriteria berikut:
- Apakah binding peran mencakup izin.
- Apakah binding peran menyertakan akun utama.
- Apakah kondisi dalam binding peran, jika ada, terpenuhi.
Kemudian, respons akan mencetak teks JSON lengkap dari kebijakan izin.
-
denyPolicyExplanation: Ringkasan apakah kebijakan penolakan yang relevan menolak izin utama, diikuti dengan daftar resource dengan kebijakan penolakan. Untuk setiap resource, respons mencantumkan semua kebijakan penolakan yang dilampirkan ke resource.Untuk setiap kebijakan penolakan, respons mencetak metadata kebijakan, mencantumkan aturan penolakan dalam kebijakan, lalu mengevaluasi setiap aturan berdasarkan kriteria berikut:
- Apakah aturan penolakan mencakup izin.
- Apakah izin dicantumkan sebagai pengecualian dalam aturan penolakan.
- Apakah aturan penolakan menyertakan akun utama.
- Apakah prinsipal tercantum sebagai pengecualian dalam aturan penolakan.
- Apakah kondisi dalam aturan penolakan, jika ada, terpenuhi.
-
overallAccessState: Apakah akun utama dapat menggunakan izin yang ditentukan untuk mengakses resource yang ditentukan berdasarkan kebijakan izin, kebijakan penolakan, dan kebijakan Batas Akses Akun Utama yang relevan.Kebijakan Batas Akses Utama yang relevan mencakup semua kebijakan Batas Akses Utama yang terikat ke set akun utama yang mencakup akun utama.
Kebijakan izin dan penolakan yang relevan mencakup hal berikut:
- Kebijakan izinkan resource
- Kebijakan penolakan resource, jika ada
- Kebijakan izinkan project induk, folder, dan organisasi resource, jika ada
- Kebijakan penolakan project, folder, dan organisasi induk resource, jika ada
Kebijakan izinkan dan tolak project induk, folder, dan organisasi relevan karena adanya pewarisan kebijakan. Jika Anda melampirkan kebijakan izinkan atau tolak ke project, folder, atau organisasi, kebijakan tersebut juga berlaku untuk semua resource di dalam project, folder, atau organisasi tersebut.
Misalnya, jika kebijakan penolakan untuk organisasi mengatakan bahwa akun utama tidak dapat menggunakan izin tertentu, akun utama tidak dapat menggunakan izin tersebut untuk resource apa pun dalam organisasi. Aturan ini berlaku meskipun folder dan project di dalam organisasi tersebut memiliki kebijakan penolakan yang lebih permisif, atau mengizinkan kebijakan yang memberikan izin kepada entity utama.
Demikian pula, jika kebijakan izinkan untuk suatu project memberikan izin khusus kepada akun utama, maka akun utama memiliki izin tersebut untuk setiap resource dalam project, asalkan tidak ditolak.
Agar pengguna dapat menggunakan izin untuk mengakses resource, semua jenis kebijakan harus mengizinkan akses. Untuk mengetahui informasi selengkapnya, lihat Evaluasi kebijakan.
-
pabPolicyExplanation: Ringkasan apakah kebijakan Batas Akses Akun Utama yang relevan mengizinkan akun utama mengakses resource, diikuti dengan pengikatan kebijakan Batas Akses Akun Utama dan kebijakan Batas Akses Akun Utama yang relevan.Kebijakan Principal Access Boundary dapat mengizinkan akses, tidak mengizinkan akses, atau tidak diterapkan. Kebijakan Batas Akses Akun Utama tidak diterapkan dalam situasi berikut:
- IAM tidak menerapkan izin yang ditentukan pada kebijakan Batas Akses Akun Utama versi penerapannya. Akibatnya, kebijakan Batas Akses Akun Utama tidak dapat memblokir akses.
- Karena kondisi dalam pengikatan kebijakan, kebijakan atau pengikatan Batas Akses Akun Utama tidak berlaku untuk akun utama.
- Kebijakan Principal Access Boundary tidak memiliki aturan.
Jika kebijakan Batas Akses Akun Utama tidak diterapkan, kebijakan tersebut tidak dapat memengaruhi apakah akun utama dapat mengakses resource atau tidak.
Respons juga mencantumkan semua pengikatan kebijakan yang menyertakan akun utama, dan detail kebijakan Batas Akses Akun Utama di setiap pengikatan kebijakan tersebut:
-
Untuk setiap pengikatan kebijakan Batas Akses Akun Utama, respons akan mencetak apakah
pengikatan kebijakan diberlakukan untuk akun utama, lalu mencetak teks
pengikatan kebijakan. Binding kebijakan diterapkan jika akun utama yang ditetapkan dalam
binding mencakup akun utama yang dikueri, dan jika kondisi dalam
binding kebijakan dievaluasi menjadi
trueuntuk akun utama yang dikueri. Jika pengikatan kebijakan tidak diterapkan, kebijakan tidak dapat memengaruhi apakah akun utama dapat mengakses resource. -
Untuk setiap kebijakan Batas Akses Akun Utama, respons mencetak hal berikut:
- Apakah kebijakan mengizinkan akses, tidak mengizinkan akses, atau tidak diterapkan.
- Versi penegakan kebijakan. Nomor versi ini menentukan apakah IAM menerapkan kebijakan Batas Akses Akun Utama ini untuk izin yang dikueri. Jika izin tidak diterapkan, kebijakan tidak dapat memengaruhi apakah akun utama dapat mengakses resource.
-
Aturan dalam kebijakan Principal Access Boundary dan apakah setiap aturan mengizinkan akses. Untuk setiap aturan, respons menunjukkan apakah resource yang dikueri disertakan dalam aturan.
Resource disertakan dalam aturan jika salah satu kondisi berikut terpenuhi:
- Resource tercantum dalam aturan. Hanya resource Resource Manager (project, folder, dan organisasi) yang dapat dicantumkan secara langsung dalam aturan Batas Akses Principal.
- Salah satu ancestor resource (yaitu, project, folder, atau organisasi di atas resource dalam hierarki resource) tercantum dalam aturan.
Banyak objek dalam respons juga memiliki kolom relevance. Nilai dalam kolom ini menunjukkan seberapa besar kontribusi objek tersebut terhadap status akses keseluruhan.
Kolom relevance dapat memiliki nilai berikut:
HEURISTIC_RELEVANCE_HIGH: Menunjukkan bahwa objek memiliki dampak yang kuat pada hasil. Dengan kata lain, menghapus objek kemungkinan akan mengubah status akses secara keseluruhan. Misalnya, binding peran yang memberikan izin yang ditentukan kepada akun utama akan memiliki nilai relevansi ini.HEURISTIC_RELEVANCE_NORMAL: Menunjukkan bahwa objek memiliki dampak terbatas pada hasil. Dengan kata lain, menghapus objek tidak mungkin mengubah status akses secara keseluruhan. Misalnya, aturan penolakan yang tidak berisi izin atau pokok akan memiliki nilai relevansi ini.
REST
Respons berisi empat bagian utama: status akses keseluruhan, deskripsi tuple akses dalam permintaan, hasil evaluasi kebijakan izin, dan hasil evaluasi kebijakan penolakan.
-
overallAccessState: Apakah akun utama dapat menggunakan izin yang ditentukan untuk mengakses resource yang ditentukan berdasarkan kebijakan izin, kebijakan penolakan, dan kebijakan Batas Akses Akun Utama yang relevan.Kebijakan Batas Akses Utama yang relevan mencakup semua kebijakan Batas Akses Utama yang terikat ke set akun utama yang mencakup akun utama.
Kebijakan izin dan penolakan yang relevan mencakup hal berikut:
- Kebijakan izinkan resource
- Kebijakan penolakan resource, jika ada
- Kebijakan izinkan project induk, folder, dan organisasi resource, jika ada
- Kebijakan penolakan project, folder, dan organisasi induk resource, jika ada
Kebijakan izinkan dan tolak project induk, folder, dan organisasi relevan karena adanya pewarisan kebijakan. Jika Anda melampirkan kebijakan izinkan atau tolak ke project, folder, atau organisasi, kebijakan tersebut juga berlaku untuk semua resource di dalam project, folder, atau organisasi tersebut.
Misalnya, jika kebijakan penolakan untuk organisasi mengatakan bahwa akun utama tidak dapat menggunakan izin tertentu, akun utama tidak dapat menggunakan izin tersebut untuk resource apa pun dalam organisasi. Aturan ini berlaku meskipun folder dan project di dalam organisasi tersebut memiliki kebijakan penolakan yang lebih permisif, atau mengizinkan kebijakan yang memberikan izin kepada entity utama.
Demikian pula, jika kebijakan izinkan untuk suatu project memberikan izin khusus kepada akun utama, maka akun utama memiliki izin tersebut untuk setiap resource dalam project, asalkan tidak ditolak.
Agar pengguna dapat menggunakan izin untuk mengakses resource, semua jenis kebijakan harus mengizinkan akses. Untuk mengetahui informasi selengkapnya, lihat Evaluasi kebijakan.
-
accessTuple: Deskripsi tuple akses dalam permintaan, termasuk konteks kondisi yang Anda berikan. Bagian ini juga berisi ringkasan tag yang berlaku untuk resource. -
allowPolicyExplanation: Ringkasan apakah kebijakan izin yang relevan memberikan izin kepada akun utama, diikuti dengan daftar kebijakan izin dan binding perannya.Untuk setiap kebijakan izin, respons mencantumkan semua binding peran dalam kebijakan dan mengevaluasinya berdasarkan kriteria berikut:
- Apakah binding peran mencakup izin.
- Apakah binding peran menyertakan akun utama.
- Apakah kondisi dalam binding peran, jika ada, terpenuhi.
Kemudian, respons akan mencetak teks JSON lengkap dari kebijakan izin.
-
denyPolicyExplanation: Ringkasan apakah kebijakan penolakan yang relevan menolak izin utama, diikuti dengan daftar resource dengan kebijakan penolakan. Untuk setiap resource, respons mencantumkan semua kebijakan penolakan yang dilampirkan ke resource.Untuk setiap kebijakan penolakan, respons mencetak metadata kebijakan, mencantumkan aturan penolakan dalam kebijakan, lalu mengevaluasi setiap aturan berdasarkan kriteria berikut:
- Apakah aturan penolakan mencakup izin.
- Apakah izin dicantumkan sebagai pengecualian dalam aturan penolakan.
- Apakah aturan penolakan menyertakan akun utama.
- Apakah prinsipal tercantum sebagai pengecualian dalam aturan penolakan.
- Apakah kondisi dalam aturan penolakan, jika ada, terpenuhi.
-
pabPolicyExplanation: Ringkasan apakah kebijakan Batas Akses Akun Utama yang relevan mengizinkan akun utama mengakses resource, diikuti dengan pengikatan kebijakan Batas Akses Akun Utama dan kebijakan Batas Akses Akun Utama yang relevan.Kebijakan Principal Access Boundary dapat mengizinkan akses, tidak mengizinkan akses, atau tidak diterapkan. Kebijakan Batas Akses Akun Utama tidak diterapkan dalam situasi berikut:
- IAM tidak menerapkan izin yang ditentukan pada kebijakan Batas Akses Akun Utama versi penerapannya. Akibatnya, kebijakan Batas Akses Akun Utama tidak dapat memblokir akses.
- Karena kondisi dalam pengikatan kebijakan, kebijakan atau pengikatan Batas Akses Akun Utama tidak berlaku untuk akun utama.
- Kebijakan Principal Access Boundary tidak memiliki aturan.
Jika kebijakan Batas Akses Akun Utama tidak diterapkan, kebijakan tersebut tidak dapat memengaruhi apakah akun utama dapat mengakses resource atau tidak.
Respons juga mencantumkan semua pengikatan kebijakan yang menyertakan akun utama, dan detail kebijakan Batas Akses Akun Utama di setiap pengikatan kebijakan tersebut:
-
Untuk setiap pengikatan kebijakan Batas Akses Akun Utama, respons akan mencetak apakah
pengikatan kebijakan diberlakukan untuk akun utama, lalu mencetak teks
pengikatan kebijakan. Binding kebijakan diterapkan jika akun utama yang ditetapkan dalam
binding mencakup akun utama yang dikueri, dan jika kondisi dalam
binding kebijakan dievaluasi menjadi
trueuntuk akun utama yang dikueri. Jika pengikatan kebijakan tidak diterapkan, kebijakan tidak dapat memengaruhi apakah akun utama dapat mengakses resource. -
Untuk setiap kebijakan Batas Akses Akun Utama, respons mencetak hal berikut:
- Apakah kebijakan mengizinkan akses, tidak mengizinkan akses, atau tidak diterapkan.
- Versi penegakan kebijakan. Nomor versi ini menentukan apakah IAM menerapkan kebijakan Batas Akses Akun Utama ini untuk izin yang dikueri. Jika izin tidak diterapkan, kebijakan tidak dapat memengaruhi apakah akun utama dapat mengakses resource.
-
Aturan dalam kebijakan Principal Access Boundary dan apakah setiap aturan mengizinkan akses. Untuk setiap aturan, respons menunjukkan apakah resource yang dikueri disertakan dalam aturan.
Resource disertakan dalam aturan jika salah satu kondisi berikut terpenuhi:
- Resource tercantum dalam aturan. Hanya resource Resource Manager (project, folder, dan organisasi) yang dapat dicantumkan secara langsung dalam aturan Batas Akses Principal.
- Salah satu ancestor resource (yaitu, project, folder, atau organisasi di atas resource dalam hierarki resource) tercantum dalam aturan.
Banyak objek dalam respons juga memiliki kolom relevance. Nilai dalam kolom ini menunjukkan seberapa besar kontribusi objek tersebut terhadap status akses keseluruhan.
Kolom relevance dapat memiliki nilai berikut:
HEURISTIC_RELEVANCE_HIGH: Menunjukkan bahwa objek memiliki dampak yang kuat pada hasil. Dengan kata lain, menghapus objek kemungkinan akan mengubah status akses secara keseluruhan. Misalnya, binding peran yang memberikan izin yang ditentukan kepada akun utama akan memiliki nilai relevansi ini.HEURISTIC_RELEVANCE_NORMAL: Menunjukkan bahwa objek memiliki dampak terbatas pada hasil. Dengan kata lain, menghapus objek tidak mungkin mengubah status akses secara keseluruhan. Misalnya, aturan penolakan yang tidak berisi izin atau pokok akan memiliki nilai relevansi ini.
Memecahkan masalah binding peran bersyarat
Pemecah Masalah Kebijakan secara otomatis memecahkan masalah pengikatan peran bersyarat dan aturan penolakan berdasarkan tag. Kebijakan ini juga secara otomatis memecahkan masalah pengikatan kebijakan Batas Akses Utama dengan kondisi berdasarkan akun utama.
Untuk memecahkan masalah jenis binding peran bersyarat atau aturan penolakan bersyarat lainnya, Pemecah Masalah Kebijakan memerlukan konteks tambahan tentang permintaan tersebut. Misalnya, untuk memecahkan masalah kondisi berdasarkan atribut tanggal/waktu, Pemecah Masalah Kebijakan memerlukan waktu permintaan.
Di gcloud CLI dan REST API, Anda memberikan konteks tambahan ini secara manual.
Di konsol Google Cloud , Anda dapat memberikan konteks tambahan ini dengan memecahkan masalah langsung dari log audit Aktivitas Admin atau log audit Akses Data. Setiap entri log audit sesuai dengan permintaan ke Google Cloud API, atau tindakan yang Google Cloud dilakukan atas nama Anda. Saat Anda memecahkan masalah dari log audit, Pemecah Masalah Kebijakan akan otomatis mendapatkan informasi tambahan tentang permintaan, seperti tanggal dan waktunya, sehingga Pemecah Masalah Kebijakan dapat menganalisis pengikatan peran bersyarat dan aturan penolakan.
Konsol
Untuk memecahkan masalah binding peran bersyarat dan aturan penolakan, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Logs Explorer.
Jika judul halaman adalah Legacy Logs Viewer, klik daftar drop-down Upgrade, lalu pilih Upgrade to the new Logs Explorer.
Untuk melihat hanya log audit Aktivitas Admin dan Akses Data, masukkan kueri berikut di pembuat kueri, lalu klik Run query:
logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")Ganti nilai berikut:
RESOURCE_TYPE: Jenis resource yang log auditnya Anda cantumkan. Gunakanprojects,folders, atauorganizations.RESOURCE_ID: ID resource Anda.
Temukan entri log audit yang sesuai dengan permintaan yang ingin Anda pecahkan masalahnya. Untuk mempelajari cara menggunakan Logs Explorer guna menemukan entri log tertentu, lihat Menggunakan Logs Explorer.
Di kolom Summary pada entri log, klik IAM, lalu klik Troubleshoot access issue.
Pemecah Masalah Kebijakan menggunakan informasi dalam entri log untuk memecahkan masalah akses, lalu menampilkan hasilnya kepada Anda. Konteks tambahan dicantumkan dalam detail evaluasi di bagian Konteks kondisi. Untuk melihat detail konteks, klik Lihat konteks kondisi. Untuk mempelajari lebih lanjut halaman hasil Pemecah Masalah Kebijakan, lihat Memahami hasil Pemecah Masalah di halaman ini.
Opsional: Untuk memecahkan masalah permintaan lain yang melibatkan pengikatan peran bersyarat dan aturan penolakan, kembali ke halaman Logs Explorer dan ulangi langkah-langkah sebelumnya.
gcloud
Untuk memecahkan masalah binding peran bersyarat dan aturan penolakan, gunakan perintah
gcloud policy-troubleshoot iam.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
-
EMAIL: Alamat email akun utama yang izinya ingin Anda pecahkan masalahnya. Untuk Agent Identity, Anda harus memberikan ID utama. -
RESOURCE: Resource tempat izin diberikan. -
PERMISSION: Izin yang ingin Anda pecahkan masalahnya. -
DESTINATION_IP: Opsional. Alamat IP tujuan permintaan yang akan digunakan saat memeriksa binding peran bersyarat. Misalnya,198.1.1.1. -
DESTINATION_PORT: Opsional. Tujuan permintaan port yang akan digunakan saat memeriksa binding peran bersyarat. Misalnya, `8080`. -
REQUEST_TIME: Opsional. Stempel waktu permintaan yang akan digunakan saat memeriksa binding peran bersyarat. Gunakan stempel waktu dalam format RFC 3339—misalnya,2099-02-01T00:00:00Z. -
RESOURCE_NAME: Opsional. Nilai nama resource yang akan digunakan saat memeriksa binding peran bersyarat. Untuk daftar format nama resource yang diterima, lihat Format nama resource. -
RESOURCE_SERVICE: Opsional. Nilai layanan resource yang akan digunakan saat memeriksa binding peran bersyarat. Untuk daftar nama layanan yang diterima, lihat Nilai layanan resource. -
RESOURCE_TYPE: Opsional. Untuk mengetahui daftar jenis resource yang diterima, lihat Nilai jenis resource.
Jalankan perintah gcloud policy-troubleshoot iam:
Linux, macOS, atau Cloud Shell
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION --destination-ip=DESTINATION_IP \ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME \ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE \ --resource-type=RESOURCE_TYPE
Windows (PowerShell)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION --destination-ip=DESTINATION_IP ` --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ` --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ` --resource-type=RESOURCE_TYPE
Windows (cmd.exe)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION --destination-ip=DESTINATION_IP ^ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ^ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ^ --resource-type=RESOURCE_TYPE
Responsnya berisi penjelasan tentang akses kepala sekolah. Untuk setiap pengikatan peran dan aturan penolakan dengan kondisi, respons menyertakan kolom conditionExplanation yang menjelaskan apakah kondisi bernilai benar atau salah berdasarkan konteks kondisi yang Anda berikan.
Misalnya, berikut adalah evaluasi binding peran dengan kondisi yang menentukan jenis resource dan layanan resource:
Respons
...
{
"allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"condition": {
"expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
"title": "Compute instances only",
"description": "Condition that limits permissions to only Compute instances"
},
"conditionExplanation": {
"evaluationStates": [{
"end": 51,
"start": 1,
"value": true
}, {
"end": 99,
"start": 55,
"value": true
}],
"value": true,
},
"memberships": {
"user:my-user@example.com": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"role": "roles/compute.viewer",
"rolePermission": "ROLE_PERMISSION_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
}
...
REST
Untuk memecahkan masalah binding peran bersyarat dan aturan penolakan, gunakan metode
iam.troubleshoot
Policy Troubleshooter API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
-
EMAIL: Alamat email akun utama yang izinya ingin Anda pecahkan masalahnya. Untuk Agent Identity, Anda harus memberikan ID utama. -
RESOURCE: Resource tempat izin diberikan. -
PERMISSION: Izin yang ingin Anda pecahkan masalahnya. -
DESTINATION_IP: Opsional. Alamat IP tujuan permintaan yang akan digunakan saat memeriksa binding peran bersyarat. Misalnya,198.1.1.1. -
DESTINATION_PORT: Opsional. Tujuan permintaan port yang akan digunakan saat memeriksa binding peran bersyarat. Misalnya, `8080`. -
REQUEST_TIME: Opsional. Stempel waktu permintaan yang akan digunakan saat memeriksa binding peran bersyarat. Gunakan stempel waktu dalam format RFC 3339—misalnya,2099-02-01T00:00:00Z. -
RESOURCE_NAME: Opsional. Nilai nama resource yang akan digunakan saat memeriksa binding peran bersyarat. Untuk daftar format nama resource yang diterima, lihat Format nama resource. -
RESOURCE_SERVICE: Opsional. Nilai layanan resource yang akan digunakan saat memeriksa binding peran bersyarat. Untuk daftar nama layanan yang diterima, lihat Nilai layanan resource. -
RESOURCE_TYPE: Opsional. Untuk mengetahui daftar jenis resource yang diterima, lihat Nilai jenis resource.
Metode HTTP dan URL:
POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot
Meminta isi JSON:
{
"accessTuple": {
"principal": "EMAIL",
"fullResourceName": "RESOURCE",
"permission": "PERMISSION",
"conditionContext": {
"destination": {
"ip": DESTINATION_IP,
"port": DESTINATION_PORT
},
"request": {
"receiveTime": REQUEST_TIME
},
"resource": {
"name": RESOURCE_NAME,
"service": RESOURCE_SERVICE,
"type": RESOURCE_TYPE
}
}
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Responsnya berisi penjelasan tentang akses kepala sekolah. Untuk setiap pengikatan peran dan aturan penolakan dengan kondisi, respons menyertakan kolom conditionExplanation yang menjelaskan apakah kondisi bernilai benar atau salah berdasarkan konteks kondisi yang Anda berikan.
Misalnya, berikut adalah evaluasi binding peran dengan kondisi yang menentukan jenis resource dan layanan resource:
...
{
"allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
"role": "roles/compute.viewer",
"rolePermission": "ROLE_PERMISSION_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH",
"combinedMembership": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"memberships": {
"user:my-user@example.com": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"condition": {
"expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
"title": "Compute instances only",
"description": "Condition that limits permissions to only Compute instances"
},
"conditionExplanation": {
"value": true,
"evaluationStates": [{
"start": 1,
"end": 51,
"value": true
}, {
"start": 55,
"end": 99,
"value": true
}]
}
}
...
Langkah berikutnya
- Gunakan referensi izin atau referensi peran bawaan untuk menentukan peran yang akan diberikan kepada pengguna yang tidak memiliki izin.
- Baca tentang alat Policy Intelligence lainnya, yang membantu Anda memahami dan mengelola kebijakan untuk meningkatkan konfigurasi keamanan secara proaktif.