Memecahkan masalah izin IAM

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 batas akses akun utama (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 Google Cloud konsol, 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

  • Enable the Policy Troubleshooter API.

    Enable the API

Izin yang diperlukan

Untuk memecahkan masalah akses akun utama Anda sepenuhnya, Anda memerlukan izin berikut.

Izin untuk memecahkan masalah akses untuk setiap akun utama

Pemecah Masalah Kebijakan menganalisis akses akun utama ke resource berdasarkan kebijakan izinkan, kebijakan tolak, kebijakan batas akses akun utama, 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 diperlukan untuk memecahkan masalah akses prinsipal, minta administrator Anda untuk memberi Anda peran IAM berikut pada organisasi yang berisi resource yang aksesnya ingin Anda pecahkan masalahnya:

Untuk mengetahui informasi selengkapnya tentang cara memberikan 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 izinkan dan tolak untuk resource, hasil akses untuk kebijakan izinkan dan tolak tersebut adalah Unknown.

Izin untuk memecahkan masalah kebijakan batas akses akun utama

Untuk memecahkan masalah kebijakan batas akses akun utama, Anda memerlukan izin pada 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

Dengan izin ini, Anda dapat melihat kebijakan batas akses akun utama yang mengontrol apa yang dapat diakses akun utama.

Untuk mendapatkan izin yang diperlukan untuk memecahkan masalah akses prinsipal, minta administrator Anda untuk memberi Anda peran IAM berikut pada organisasi yang sesuai:

Untuk mengetahui informasi selengkapnya tentang cara memberikan 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 akun utama yang berlaku untuk akun utama, hasil akses untuk kebijakan batas akses akun utama 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 akun 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 akun utama secara eksplisit.

Memecahkan masalah akses

Untuk memecahkan masalah akses, Anda memerlukan informasi berikut:

  • Principal: Alamat email yang akan diperiksa. Alamat email harus merujuk ke akun pengguna atau akun layanan. 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 konsol Google 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.get untuk cluster Google Kubernetes Engine, permintaan akan gagal karena izin compute.instance.get tidak dapat digunakan untuk mengakses cluster Google Kubernetes Engine.

    Untuk mengetahui daftar lengkap izin, lihat referensi izin.

Konsol

Untuk memecahkan masalah akses, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Pemecah Masalah Kebijakan.

    Buka Pemecah Masalah Kebijakan

  2. Masukkan email akun utama yang aksesnya ingin Anda periksa.

  3. 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:

      1. Di kotak Pilih cakupan, pilih project, folder, atau organisasi yang akan ditelusuri.
      2. Di kotak Jenis resource, pilih jenis resource yang ingin Anda cari.
      3. Di kotak Cari referensi, masukkan sebagian nama referensi.
      4. Di bagian hasil, pilih resource yang ingin Anda periksa.
      5. Klik Pilih untuk memilih resource dan menutup dialog.
  4. Masukkan izin yang akan diperiksa.

    Jika Anda tidak mengetahui nama izin lengkap, mulai ketik untuk melihat opsi pelengkapan otomatis.

  5. Opsional: Untuk memeriksa beberapa resource dan izin, pilih Tambahkan Pasangan Lain dan ulangi langkah sebelumnya.

  6. 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 batas akses akun utama, gunakan versi beta.
  • EMAIL: Alamat email akun utama yang izinnya ingin Anda pecahkan masalahnya.
  • 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, gunakan v3. Untuk memecahkan masalah akses berdasarkan kebijakan izin, penolakan, dan batas akses akun utama, gunakan v3beta.
  • EMAIL: Alamat email akun utama yang izinnya ingin Anda pecahkan masalahnya.
  • 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, seperti my-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

Bagian Detail evaluasi berisi ringkasan akses yang Anda pecahkan masalahnya, termasuk principal, 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 izin, penolakan, dan batas akses akun utama yang relevan terhadap akses akun utama.

Kebijakan batas akses akun utama yang relevan mencakup semua kebijakan batas akses akun 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 batas akses akun utama, 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 batas akses utama

Di bagian Kebijakan batas akses akun utama, Anda dapat melihat semua kebijakan batas akses akun utama yang tunduk pada akun utama, dan binding 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 batas akses akun utama berlaku untuk akun utama, tetapi resource yang dikueri tidak ada dalam aturan kebijakan tersebut.
  • Tidak diterapkan: Kebijakan batas akses prinsipal tidak diterapkan dalam situasi berikut:

    • IAM tidak menerapkan izin yang ditentukan pada versi penerapan kebijakan batas akses akun utama. Akibatnya, kebijakan batas akses utama tidak dapat memblokir akses.
    • Karena kondisi dalam binding kebijakan, kebijakan atau binding batas akses akun utama tidak berlaku untuk akun utama.
    • Kebijakan batas akses utama 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 binding 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 Boundary rules. Tab ini menampilkan tabel aturan kebijakan batas akses akun utama yang relevan.

Aturan batas akses utama 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. Oleh karena itu, 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 akun utama bukanlah alasan akun utama tidak dapat mengakses resource.
  • Pemecah Masalah Kebijakan menunjukkan bahwa akun utama tidak dapat mengakses resource. Selain itu, berdasarkan kebijakan batas akses utama yang relevan, akun utama 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 batas akses utama dalam kebijakan, hapus centang pada kotak Tampilkan hanya aturan dan binding yang relevan.

Kolom Temuan dalam tabel aturan batas menunjukkan apakah aturan batas akses akun utama 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 binding kebijakan yang relevan untuk kebijakan batas akses utama yang dipilih.

Binding kebijakan relevan jika menerapkan kebijakan batas akses utama secara efektif ke akun utama yang dikueri. Agar binding kebijakan menerapkan kebijakan batas akses utama ke utama, 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 true untuk 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, hapus centang pada kotak Tampilkan hanya aturan dan binding yang relevan.

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 diatur berdasarkan resource yang dilampirkan. Di samping setiap kebijakan penolakan terdapat evaluasi akses. Evaluasi ini hanya berlaku untuk kebijakan penolakan tersebut—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 akun 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 izin 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 mencakup peran dengan izin yang ditentukan. Jika akun utama tidak memiliki akses, tabel juga menampilkan binding peran dengan peran khusus 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 pengikatan peran, klik Lihat detail pengikatan di baris pengikatan peran tersebut.

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 akun utama yang relevan mencakup semua kebijakan batas akses akun 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 binding kebijakan batas akses akun utama dan kebijakan batas akses akun utama yang relevan.

    Kebijakan batas akses akun utama 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 versi penerapan kebijakan batas akses akun utama. Akibatnya, kebijakan batas akses utama tidak dapat memblokir akses.
    • Karena kondisi dalam binding kebijakan, kebijakan atau binding batas akses akun utama tidak berlaku untuk akun utama.
    • Kebijakan batas akses utama 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 binding kebijakan yang menyertakan akun utama, dan detail kebijakan batas akses akun utama di setiap binding kebijakan tersebut:

    • Untuk setiap binding kebijakan batas akses akun utama, respons akan mencetak apakah binding kebijakan diterapkan untuk akun utama, lalu mencetak teks binding kebijakan. Binding kebijakan diterapkan jika akun utama yang ditetapkan dalam binding mencakup akun utama yang dikueri, dan jika kondisi dalam binding kebijakan dievaluasi menjadi true untuk akun utama yang dikueri. Jika pengikatan kebijakan tidak diterapkan, kebijakan tidak dapat memengaruhi apakah akun utama dapat mengakses resource.
    • Untuk setiap kebijakan batas akses 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 batas akses akun utama 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 utama.
        • 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 akun utama yang relevan mencakup semua kebijakan batas akses akun 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 binding kebijakan batas akses akun utama dan kebijakan batas akses akun utama yang relevan.

      Kebijakan batas akses akun utama 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 versi penerapan kebijakan batas akses akun utama. Akibatnya, kebijakan batas akses utama tidak dapat memblokir akses.
      • Karena kondisi dalam binding kebijakan, kebijakan atau binding batas akses akun utama tidak berlaku untuk akun utama.
      • Kebijakan batas akses utama 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 binding kebijakan yang menyertakan akun utama, dan detail kebijakan batas akses akun utama di setiap binding kebijakan tersebut:

      • Untuk setiap binding kebijakan batas akses akun utama, respons akan mencetak apakah binding kebijakan diterapkan untuk akun utama, lalu mencetak teks binding kebijakan. Binding kebijakan diterapkan jika akun utama yang ditetapkan dalam binding mencakup akun utama yang dikueri, dan jika kondisi dalam binding kebijakan dievaluasi menjadi true untuk akun utama yang dikueri. Jika pengikatan kebijakan tidak diterapkan, kebijakan tidak dapat memengaruhi apakah akun utama dapat mengakses resource.
      • Untuk setiap kebijakan batas akses 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 batas akses akun utama 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 utama.
          • 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. Fitur ini juga secara otomatis memecahkan masalah binding kebijakan batas akses akun 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. 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, yang memungkinkan Pemecah Masalah Kebijakan menganalisis pengikatan peran bersyarat dan aturan penolakan.

    Konsol

    Untuk memecahkan masalah binding peran bersyarat dan aturan penolakan, lakukan hal berikut:

    1. Di konsol Google Cloud , buka halaman Logs Explorer.

      Buka Logs Explorer

    2. Jika judul halaman adalah Legacy Logs Viewer, klik daftar drop-down Upgrade, lalu pilih Upgrade to the new Logs Explorer.

    3. Untuk melihat hanya log audit Aktivitas Admin dan Akses Data, masukkan kueri berikut di pembuat kueri, lalu klik Jalankan kueri:

      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. Gunakan projects, folders, atau organizations.
      • RESOURCE_ID: ID resource Anda.
    4. 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.

    5. 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. 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.

    6. 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 izinnya ingin Anda pecahkan masalahnya.
    • 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 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 mencakup kolom conditionExplanation yang menjelaskan apakah kondisi dievaluasi sebagai 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 izinnya ingin Anda pecahkan masalahnya.
    • 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 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 mencakup kolom conditionExplanation yang menjelaskan apakah kondisi dievaluasi sebagai 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