Risoluzione dei problemi relativi alle autorizzazioni IAM

Lo strumento per la risoluzione dei problemi dei criteri ti aiuta a capire se un'entità può accedere a una risorsa. Dati un'entità, una risorsa e un'autorizzazione, lo strumento per la risoluzione dei problemi dei criteri esamina i criteri di autorizzazione, di negazione e di limite di accesso all'entità (PAB) che influiscono sull'accesso dell'entità. Poi ti dice se, in base a questi criteri, l'entità può utilizzare l'autorizzazione specificata per accedere alla risorsa. Vengono inoltre elencate le norme pertinenti e spiegato in che modo influiscono sull'accesso dell'entità.

Puoi accedere allo strumento per la risoluzione dei problemi relativi ai criteri utilizzando il Console Google Cloud, Google Cloud CLI o l'API REST. Per le versioni di base l'uso della console Google Cloud è in genere più veloce. Per scenari più complessi, valuta la possibilità di utilizzare l'interfaccia a riga di comando gcloud o l'API REST.

Prima di iniziare

  • Enable the Policy Troubleshooter API.

    Enable the API

Autorizzazioni obbligatorie

Per risolvere completamente i problemi di accesso dei principali, devi disporre delle seguenti autorizzazioni.

Autorizzazioni per risolvere i problemi di accesso per singole entità

Lo strumento per la risoluzione dei problemi relativi ai criteri analizza l'accesso di un'entità a una risorsa in base ai criteri di autorizzazione, ai criteri di negazione, ai criteri di Principal Access Boundary ruoli per cui disponi dell'autorizzazione di visualizzazione. Se non disponi dell'autorizzazione per visualizzare un criterio applicato a una risorsa o se non disponi dell'autorizzazione per visualizzare un ruolo personalizzato, potresti non essere in grado di stabilire se un entità dispone dell'accesso.

Autorizzazioni per la risoluzione dei problemi relativi ai criteri di autorizzazione e di negazione

Per risolvere i problemi relativi ai criteri di autorizzazione e negazione, devi disporre delle autorizzazioni nel organizzazione contenente la risorsa di cui vuoi risolvere i problemi. Queste autorizzazioni ti consentono di visualizzare i criteri di autorizzazione e di negazione che controllano l'accesso alla risorsa.

Per ottenere le autorizzazioni necessarie per risolvere i problemi di accesso di un'entità, chiedi all'amministratore di concederti I seguenti ruoli IAM nell'organizzazione contenente la risorsa per cui vuoi risolvere i problemi di accesso:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Se non disponi dell'autorizzazione per visualizzare i criteri di autorizzazione e di rifiuto per una risorsa, i risultati di accesso per questi criteri sono Unknown.

Autorizzazioni per risolvere i problemi relativi ai criteri di Principal Access Boundary

Per risolvere i problemi relativi ai criteri di confine dell'accesso dell'entità, devi disporre delle autorizzazioni per l'organizzazione il cui insieme di entità include l'entità. Il modo in cui identifichi questa organizzazione dipende dal tipo di principale:

  • Account Google e gruppi Google: l'organizzazione associata al dominio Google Workspace che include il principale
  • Identità federate (identità nei pool di identità della forza lavoro o nei pool di identità per i carichi di lavoro): l'organizzazione che contiene il pool di identità che include il principale
  • Account di servizio: l'organizzazione che contiene il progetto in cui è stato creato l'account di servizio

Queste autorizzazioni ti consentono di visualizzare i criteri di Principal Access Boundary che controllano ciò a cui può accedere l'entità.

Per ottenere le autorizzazioni necessarie per risolvere i problemi di accesso di un principale, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'organizzazione appropriata:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Se non hai l'autorizzazione per visualizzare i criteri di Principal Access Boundary che si applicano a un'entità, i risultati di accesso per i criteri di Principal Access Boundary Unknown.

Autorizzazioni per la risoluzione dei problemi di accesso per i membri del gruppo

Se i criteri di autorizzazione e negazione includono gruppi, devi avere Google Workspace Autorizzazione dell'API Admin groups.read per la risoluzione dei problemi di accesso per un singolo gruppo membri della community. I super amministratori e gli amministratori dei gruppi dispongono automaticamente di questa autorizzazione. A assegna questa autorizzazione a un utente che non è super o amministratore del gruppo, crea un amministratore di Google Workspace che contiene groups.read (che si trova in Privilegi delle API amministrative) e concedilo a per l'utente.

Se non hai queste autorizzazioni, associazioni di ruoli e regole di negazione che contengono gruppi o domini hanno come risultato di accesso Unknown, a meno che l'associazione dei ruoli o la regola di negazione include anche l'entità in modo esplicito.

Autorizzazioni per la risoluzione dei problemi di accesso per i membri del dominio

Se i tuoi criteri di autorizzazione e negazione includono un account Google Workspace o dominio Cloud Identity, devi essere un amministratore di dominio per risolvere i problemi l'accesso per i singoli membri del dominio.

Se non disponi di queste autorizzazioni, le associazioni di ruoli e le regole di rifiuto che contengono gruppi o domini hanno un risultato di accesso Sconosciuto, a meno che l'associazione di ruoli o la regola di rifiuto non includa esplicitamente anche l'entità.

Risolvere i problemi di accesso

Per risolvere i problemi di accesso, sono necessarie le seguenti informazioni:

  • Principal: l'indirizzo email da controllare. L'indirizzo email deve fare riferimento a un account utente o di servizio. Altri tipi di entità, tra cui gruppi, domini, identità della forza lavoro e identità per i carichi di lavoro, non sono supportati.
  • Risorsa: il nome completo della risorsa. Ad esempio, per controllare il progetto my-project, inserisci //cloudresourcemanager.googleapis.com/projects/my-project. Per altri tipi di risorse, consulta gli esempi di nomi completi delle risorse.
  • Autorizzazione:l'autorizzazione da verificare. Se utilizzi Nella console Google Cloud, presenta un elenco di suggerimenti durante la digitazione.

    Per risolvere i problemi relativi a un'autorizzazione, quest'ultima deve essere applicabile al risorsa nella richiesta. In altre parole, deve essere possibile utilizzare questo l'autorizzazione ad accedere in qualche modo alla risorsa. Se l'autorizzazione non è applicabile per la risorsa, la richiesta non va a buon fine. Ad esempio, se provi a risolvere i problemi relativi all'autorizzazione compute.instances.get per un cluster Google Kubernetes Engine, la richiesta non va a buon fine perché l'autorizzazione compute.instances.get non può essere utilizzata per accedere ai cluster Google Kubernetes Engine.

    Per un elenco completo delle autorizzazioni, consulta le autorizzazioni riferimento.

Console

Per risolvere i problemi di accesso:

  1. Nella console Google Cloud, vai alla pagina Strumento per la risoluzione dei problemi relativi ai criteri.

    Vai a Strumento per la risoluzione dei problemi relativi ai criteri

  2. Inserisci l'indirizzo email dell'entità di cui vuoi controllare l'accesso.

  3. Inserisci il nome completo della risorsa da controllare.

    Se non conosci il nome completo della risorsa, esegui una delle seguenti operazioni:

    • Se stai risolvendo i problemi di accesso per un progetto, una cartella o un'organizzazione, inizia a digitare per visualizzare le opzioni di completamento automatico.
    • Se stai risolvendo i problemi di accesso per un altro tipo di risorsa, fai clic su Sfoglia per aprire la finestra di dialogo di ricerca delle risorse, quindi cerca il risorsa:

      1. Nella casella Seleziona ambito, seleziona un progetto, una cartella dell'organizzazione in cui eseguire ricerche.
      2. Nella casella Tipo di risorsa, seleziona i tipi di risorse che vuoi Google.
      3. Nella casella Cerca risorse, inserisci una parte della risorsa nome.
      4. Nella sezione dei risultati, seleziona la risorsa che vuoi controllare.
      5. Fai clic su Seleziona per scegliere la risorsa e chiudere la finestra di dialogo.
  4. Inserisci l'autorizzazione da verificare.

    Se non conosci il nome completo dell'autorizzazione, inizia a digitare per visualizzare le opzioni di completamento automatico.

  5. (Facoltativo) Per controllare più risorse e autorizzazioni, seleziona Aggiungi un'altra coppia e ripeti il passaggio precedente.

  6. Fai clic su Verifica accesso.

gcloud

Per scoprire perché un'entità ha o non ha un'autorizzazione IAM, utilizza la classe gcloud beta policy-troubleshoot iam .

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • VERSION: facoltativo. La versione del comando da utilizzare. Per risolvere i problemi solo in base ai criteri di autorizzazione e di negazione, non specificare una versione. Per risolvere i problemi di accesso basati su criteri di autorizzazione, di negazione e di limiti di accesso all'entità, utilizza la versione beta.
  • EMAIL: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni.
  • RESOURCE: la risorsa per cui viene concessa l'autorizzazione.
  • PERMISSION: l'autorizzazione di cui vuoi risolvere i problemi.

Esegui il comando gcloud beta policy-troubleshoot iam :

Linux, macOS o 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

Dovresti ricevere una risposta simile alla seguente:

Risposta

{
  "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

Per scoprire perché un'entità ha o non ha un'autorizzazione IAM, utilizza lo strumento iam.troubleshoot .

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • VERSION: la versione dell'API da utilizzare per questa richiesta. Per risolvere i problemi solo in base ai criteri di autorizzazione e negazione, utilizza v3. Per risolvere i problemi di accesso basati su criteri di autorizzazione, di negazione e di confine di accesso principale, utilizza v3beta.
  • EMAIL: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni.
  • RESOURCE: la risorsa per cui viene concessa l'autorizzazione.
  • PERMISSION: l'autorizzazione di cui vuoi risolvere i problemi.
  • PROJECT_ID: l'ID del progetto che vuoi utilizzare per effettuare la richiesta. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

POST https://policytroubleshooter.googleapis.com/VERSION/iam:troubleshoot

Corpo JSON della richiesta:

{
  "accessTuple": {
    "principal": "EMAIL",
    "fullResourceName": "RESOURCE",
    "permission": "PERMISSION"
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Informazioni sui risultati dello strumento per la risoluzione dei problemi

Console

La pagina dei risultati contiene le seguenti informazioni:

Dettagli della valutazione

La sezione Dettagli valutazione contiene un riepilogo dell'accesso a cui hai accesso risoluzione dei problemi, tra cui entità, risorsa e autorizzazione specificate. Se stai risolvendo i problemi relativi a più coppie di autorizzazioni delle risorse, puoi utilizzare l'elenco Valutazione accesso per passare da una all'altra.

Dettagli delle norme

La sezione Dettagli norme contiene dettagli su come le autorizzazioni pertinenti, i criteri di negazione e di accesso all'entità influiscono sull'accesso dell'entità.

I criteri di Principal Access Boundary pertinenti includono tutti i criteri di questo tipo associati a un insieme di entità che include l'entità.

I criteri di autorizzazione e rifiuto pertinenti includono quanto segue:

  • Il criterio di autorizzazione della risorsa
  • Eventuali criteri di rifiuto della risorsa
  • I criteri di autorizzazione del progetto, della cartella e dell'eventuale organizzazione di primo livello della risorsa
  • I criteri di negazione del progetto, della cartella e dell'organizzazione padre della risorsa. se presente

I criteri di autorizzazione e di negazione di organizzazioni, cartelle e progetti padre sono pertinenti a causa dell'ereditarietà dei criteri. Quando colleghi un criterio di autorizzazione o negazione a un progetto, una cartella o un'organizzazione, il criterio si applica anche a tutte le risorse all'interno del progetto, della cartella dell'organizzazione.

Ad esempio, se un criterio di negazione per un'organizzazione indica che un'entità non può usano un'autorizzazione specifica, l'entità non può usarla per nessuna risorsa all'interno dell'organizzazione. Questa regola si applica anche se le cartelle e i progetti all'interno dell'organizzazione hanno criteri di rifiuto più permissivi o criteri di autorizzazione che concedono all'entità l'autorizzazione.

Analogamente, se un criterio di autorizzazione per un progetto assegna a un'entità un'autorizzazione specifica, l'entità dispone di questa autorizzazione per qualsiasi risorsa all'interno del progetto, a condizione che l'autorizzazione non venga negata.

La sezione Dettagli norme contiene le seguenti sezioni:

Stato dell'accesso

La sezione Stato di accesso riassume i risultati per ciascun tipo di criterio (criteri di Principal Access Boundary, criteri di negazione e criteri di autorizzazione) e indica il risultato complessivo. Il risultato indica se l'entità è in grado di utilizzare l'autorizzazione per accedere alla risorsa, in base ai criteri pertinenti.

Affinché un utente possa utilizzare l'autorizzazione per accedere alla risorsa, tutti i tipi di criteri devono consentire l'accesso. Per ulteriori informazioni, consulta le Norme di valutazione.

Criterio di Principal Access Boundary

Nella sezione Criterio di Principal Access Boundary, puoi visualizzare i criteri di Principal Access Boundary a cui è soggetta l'entità e i criteri associazioni che associano questi criteri all'entità.

Il riquadro Criteri elenca tutti i criteri associati a un set di entità che include l'entità. Accanto a ogni criterio è presente un'icona che indica in che modo il criterio influisce sull'accesso dell'entità.

I criteri di confine dell'accesso dell'entità possono influire sull'accesso di un'entità nei seguenti modi:

  • L'entità è idonea ad accedere alla risorsa: il criterio di Principal Access Boundary si applica all'entità e una delle sue regole contiene la risorsa sottoposta a query.
  • Entità non idonea ad accedere la risorsa: il criterio di Principal Access Boundary si applica all'entità, ma la risorsa sottoposta a query non è inclusa nelle regole di quel criterio.
  • Non applicata: I criteri di Principal Access Boundary non vengono applicati in modo forzato nelle seguenti situazioni:

    Se un criterio di Principal Access Boundary non viene applicato, non è possibile determinare se un criterio di Principal Access Boundary viene applicato. l'entità può accedere alla risorsa.

Per visualizzare le regole e le associazioni associate a un criterio di Principal Access Boundary, fai clic sul nome del criterio. Il riquadro adiacente al riquadro Criteri mostra i dettagli del criterio.

Per visualizzare le regole nel criterio, fai clic sulla scheda Regole di confine. Questa scheda mostra una tabella delle regole dei criteri dei criteri di Principal Access Boundary.

Una regola di limite di accesso all'entità è pertinente se influisce sul risultato complessivo della query dello strumento per la risoluzione dei problemi dei criteri. Pertanto, le regole pertinenti variano a seconda dei risultati dello strumento per la risoluzione dei problemi relativi ai criteri. Ad esempio, considera le seguenti situazioni:

  • Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità può accedere alla risorsa. Di conseguenza, le regole pertinenti sono quelle che rendono l'entità idonea ad accedere alla risorsa.
  • Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità non può accedere alla risorsa. Tuttavia, in base ai criteri pertinenti per Principal Access Boundary, l'entità è idonea ad accedere alla risorsa. Di conseguenza, non vengono perché i criteri di Principal Access Boundary non sono la ragione per cui L'entità non può accedere alla risorsa.
  • Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità non può accedere alla risorsa. Inoltre, in base al limite di accesso all'entità pertinente criteri, l'entità non è idonea per accedere alla risorsa. Di conseguenza, le regole pertinenti sono quelle che non rendono l'entità idonea ad accedere alla risorsa.

Per visualizzare tutte le regole di Principal Access Boundary in un criterio, deseleziona Mostra solo pertinenti regole e associazioni.

La colonna Risultati della tabella delle regole di confine indica se le La regola di Principal Access Boundary contiene la risorsa sottoposta a query. Per visualizzare ulteriori dettagli sulla regola, fai clic su Visualizza i dettagli della regola.

Per visualizzare le associazioni di criteri per il criterio, fai clic sulla scheda Associazioni. Questa scheda visualizza una tabella delle associazioni di criteri pertinenti per il criterio di confine dell'accesso dell'entità selezionato.

Un'associazione di criteri è pertinente se applica effettivamente il criterio di confine dell'accesso dell'entità all'entità interrogata. Affinché un'associazione di criteri applichi un criterio di confine dell'accesso dell'entità a un'entità, deve essere vero quanto segue:

  • Il set di entità nell'associazione di criteri deve includere l'entità sottoposta a query
  • Eventuali condizioni nell'associazione delle norme devono restituire il valore true per il principale sottoposto a query.

Per visualizzare tutte le associazioni di criteri con insiemi di entità che includono l'entità interrogata, indipendentemente dal fatto che l'entità interrogata soddisfi la condizione nell'associazione, deseleziona la casella di controllo Mostra solo regole e associazioni pertinenti.

La colonna Risultati nella tabella delle associazioni indica se l'associazione è applicata per l'entità interrogata. Per visualizzare ulteriori dettagli sulle norme per l'associazione, fai clic su Visualizza i dettagli dell'associazione.

Criterio di negazione

Nella sezione Criterio di negazione puoi visualizzare tutti i criteri di negazione pertinenti, identificare le regole di negazione che negano l'accesso all'entità e capire perché la regola nega o non nega l'autorizzazione all'entità.

Il riquadro Risorse con criteri di negazione elenca tutti i criteri di negazione pertinenti, in base alle risorse a cui sono collegati. Accanto a ogni criterio di negazione è presente e la valutazione degli accessi. Questa valutazione si applica solo al criterio di rifiuto e non riflette alcun accesso dai criteri ereditati. Se non hai l'autorizzazione per visualizzare il criterio di negazione di una risorsa, l'elenco delle risorse non include la risorsa o i relativi criteri di negazione.

Per visualizzare le regole di negazione pertinenti in questi criteri di negazione, fai clic su un criterio di negazione. Per visualizzare tutte le regole di rifiuto nei criteri di rifiuto di una risorsa, fai clic su una risorsa. Le regole di negazione vengono visualizzate nel riquadro Regole di negazione. Questo riquadro contiene una tabella di tutte le regole di rifiuto con l'entità o l'autorizzazione interrogata per la risorsa o il criterio di rifiuto selezionato.

La colonna Accesso indica se la regola di negazione nega l'accesso all'entità autorizzazione. Per visualizzare ulteriori dettagli sulla regola di rifiuto, fai clic su Visualizza regola di rifiuto nella riga della regola.

Criterio di autorizzazione

Nella sezione Criteri di autorizzazione puoi esplorare tutte le norme di autorizzazione pertinenti. criteri, identificare le associazioni di ruoli che concedono l'accesso all'entità comprendi perché un'associazione di ruolo dà o non fornisce all'entità autorizzazione.

Il riquadro Risorse elenca la risorsa specificata e le risorse di primo livello. Accanto a ogni risorsa è una valutazione dell'accesso. Questa valutazione si applica solo al criterio di autorizzazione della risorsa e non riflette alcun accesso dai criteri ereditati. Se non disponi dell'autorizzazione per visualizzare il criterio di autorizzazione di una risorsa, la risorsa non è inclusa nell'elenco.

Per visualizzare le associazioni di ruoli pertinenti nel criterio di autorizzazione di una risorsa e vedere in che modo concedono o meno l'autorizzazione all'entità, fai clic risorsa. Le associazioni di ruoli del criterio di autorizzazione vengono visualizzate nel riquadro Associazioni di ruoli.

Il riquadro Associazioni di ruoli contiene una tabella delle associazioni di ruoli nel criterio di autorizzazione della risorsa selezionata. Per impostazione predefinita, la tabella contiene solo il ruolo associazioni che includono un ruolo con l'autorizzazione specificata. Se l'entità non ha accesso, la tabella mostra anche le associazioni di ruoli con ruoli personalizzati modificabili. Per visualizzare tutte le associazioni di ruoli, deseleziona la casella di controllo Mostra solo le associazioni pertinenti.

La colonna Accesso indica se l'associazione di ruoli concede all'entità l'autorizzazione. Per visualizzare ulteriori dettagli sull'associazione del ruolo, fai clic su Visualizza dettagli sull'associazione nella riga dell'associazione del ruolo.

gcloud

La risposta contiene quattro sezioni principali: una descrizione della tupla di accesso nella richiesta, i risultati della valutazione del criterio di autorizzazione, i risultati della valutazione del criterio di rifiuto e lo stato di accesso complessivo.

  • accessTuple: una descrizione della tupla di accesso nella richiesta. incluso il contesto della condizione che hai fornito. Questa sezione contiene inoltre un riepilogo dei tag che si applicano alla risorsa.
  • allowPolicyExplanation: un riepilogo che indica se i criteri di autorizzazione pertinenti concedono all'entità l'autorizzazione, seguito da un elenco di criteri di autorizzazione e dalle relative associazioni di ruoli.

    Per ogni criterio di autorizzazione, la risposta elenca tutte le associazioni di ruoli all'interno del criterio e le valuta in base ai seguenti criteri:

    • Indica se l'associazione del ruolo include l'autorizzazione.
    • Se l'associazione dei ruoli include l'entità.
    • Se le condizioni nell'associazione del ruolo, se presenti, sono soddisfatte.

    Quindi, la risposta stampa il testo JSON completo del criterio di autorizzazione.

  • denyPolicyExplanation: un riepilogo che indica se i criteri di negazione pertinenti negano all'entità l'autorizzazione, seguito da un elenco di risorse con criteri di negazione. Per ogni risorsa, la risposta elenca tutti i criteri di negazione associati alla risorsa.

    Per ogni criterio di rifiuto, la risposta stampa i metadati del criterio, elenca le regole di rifiuto al suo interno e valuta ogni regola in base ai seguenti criteri:

    • Indica se la regola di rifiuto include l'autorizzazione.
    • Indica se l'autorizzazione è elencata come eccezione nella regola di rifiuto.
    • Indica se la regola di negazione include l'entità.
    • Indica se l'entità è elencata come eccezione nella regola di rifiuto.
    • Se le condizioni nella regola di rifiuto, se presenti, sono soddisfatte.
  • overallAccessState: indica se l'entità è in grado di utilizzare l'autorizzazione specificata per accedere alla risorsa specificata in base ai criteri di autorizzazione, ai criteri di negazione e ai criteri di confine di accesso delle entità pertinenti.

    I criteri di Principal Access Boundary includono tutti i criteri di Principal Access Boundary che sono legati a un set di entità che include l'entità.

    I criteri di autorizzazione e rifiuto pertinenti includono quanto segue:

    • Il criterio di autorizzazione della risorsa
    • Eventuali criteri di rifiuto della risorsa
    • I criteri di autorizzazione del progetto, della cartella e dell'eventuale organizzazione di primo livello della risorsa
    • I criteri di negazione del progetto, della cartella e dell'organizzazione padre della risorsa. se presente

    I criteri di autorizzazione e di negazione di organizzazioni, cartelle e progetti padre sono pertinenti a causa dell'ereditarietà dei criteri. Quando colleghi un criterio di autorizzazione o diniego a un progetto, a una cartella o a un'organizzazione, questo criterio si applica anche a tutte le risorse all'interno del progetto, della cartella o dell'organizzazione.

    Ad esempio, se un criterio di negazione per un'organizzazione indica che un'entità non può usano un'autorizzazione specifica, l'entità non può usarla per nessuna risorsa all'interno dell'organizzazione. Questa regola si applica anche se le cartelle e i progetti all'interno dell'organizzazione hanno criteri di rifiuto più permissivi o criteri di autorizzazione che concedono all'entità l'autorizzazione.

    Analogamente, se un criterio di autorizzazione per un progetto assegna a un'entità un'autorizzazione specifica, l'entità dispone di questa autorizzazione per qualsiasi risorsa all'interno del progetto, a condizione che l'autorizzazione non venga negata.

    Affinché un utente sia in grado di usare l'autorizzazione per accedere alla risorsa, i tipi di criteri devono consentire l'accesso. Per ulteriori informazioni, consulta la sezione Valutazione delle norme.

  • pabPolicyExplanation: un riepilogo che indica se i criteri di Principal Access Boundary pertinenti consentono all'entità di accedere alla risorsa, seguito dalle associazioni e dai criteri di Principal Access Boundary pertinenti.

    I criteri di Principal Access Boundary possono consentire l'accesso, ma non consentire l'accesso, o non applicarla. I criteri di Principal Access Boundary non vengono applicati nelle seguenti situazioni:

    Se un criterio di Principal Access Boundary non viene applicato, non è possibile determinare se un criterio di Principal Access Boundary viene applicato. l'entità può accedere alla risorsa.

    La risposta elenca anche tutte le associazioni di criteri che includono l'entità e I dettagli del criterio di Principal Access Boundary in ognuno di questi criteri associazioni:

    • Per ogni associazione del criterio di confine dell'accesso dell'entità, la risposta stampa se l'associazione del criterio è applicata per l'entità, quindi stampa il testo dell'associazione del criterio. Un'associazione di criteri viene applicata se l'entità impostata nell'associazione include l'entità interrogata e se la condizione nell'associazione di criteri ha il valore true per l'entità interrogata. Se l'associazione dei criteri non viene applicata, il criterio non può influire sulla l'entità può accedere alla risorsa.
    • Per ciascun criterio di Principal Access Boundary, la risposta stampa quanto segue:

      • Indica se il criterio consente l'accesso, non consente l'accesso o non viene applicato.
      • La versione di applicazione del criterio. Questo numero di versione determina se IAM applica questo criterio di limite di accesso all'entità per l'autorizzazione interrogata. Se l'autorizzazione non viene applicata, il criterio non può influire sul fatto che l'entità possa accedere alla risorsa.
      • Le regole nel criterio di Principal Access Boundary e se ciascuna regola consente l'accesso. Per ogni regola, la risposta indica se la risorsa interrogata è inclusa nella regola.

        Una risorsa è inclusa in una regola se una delle seguenti condizioni è vera:

        • La risorsa è elencata nella regola. Solo le risorse Resource Manager (progetti, cartelle e organizzazioni) possono essere elencate direttamente nelle regole del confine di accesso dei principali.
        • Uno dei predecessori della risorsa (ovvero un progetto, una cartella superiore alla risorsa nella risorsa ) è elencata nella regola.

Anche molti oggetti nella risposta hanno un campo relevance. Il valore in questo campo indica l'entità con cui l'oggetto contribuisce allo stato di accesso complessivo. Il campo relevance può avere i seguenti valori:

  • HEURISTIC_RELEVANCE_HIGH: indica che l'oggetto ha un forte impatto sul risultato. In altre parole, la rimozione dell'oggetto probabilmente cambierà l'accesso a Google Cloud. Ad esempio, un'associazione di ruoli che concede all'entità l'autorizzazione specificata avrà questo valore di pertinenza.

  • HEURISTIC_RELEVANCE_NORMAL: indica che l'oggetto ha un impatto limitato sul risultato. In altre parole, è improbabile che la rimozione dell'oggetto modifichi lo stato di accesso complessivo. Ad esempio, una regola di rifiuto che non contiene l'autorizzazione o il principale avrà questo valore di pertinenza.

REST

La risposta contiene quattro sezioni principali: lo stato di accesso complessivo, una descrizione della tupla di accesso nella richiesta, i risultati della valutazione del criterio di autorizzazione e i risultati della valutazione del criterio di rifiuto.

  • overallAccessState: indica se l'entità è in grado di utilizzare l'autorizzazione specificata per accedere alla risorsa specificata in base ai criteri di autorizzazione, di negazione e di confine di accesso delle entità pertinenti.

    I criteri di Principal Access Boundary includono tutti i criteri di Principal Access Boundary che sono legati a un set di entità che include l'entità.

    I criteri di autorizzazione e di negazione pertinenti includono quanto segue:

    • Il criterio di autorizzazione della risorsa
    • Eventuali criteri di rifiuto della risorsa
    • I criteri di autorizzazione del progetto, della cartella e dell'eventuale organizzazione di primo livello della risorsa
    • I criteri di negazione del progetto, della cartella e dell'organizzazione padre della risorsa. se presente

    I criteri di autorizzazione e diniego di progetti, cartelle e organizzazioni principali sono pertinenti a causa dell'eredita dei criteri. Quando colleghi un criterio di autorizzazione o negazione a un progetto, una cartella o un'organizzazione, il criterio si applica anche a tutte le risorse all'interno del progetto, della cartella dell'organizzazione.

    Ad esempio, se un criterio di negazione per un'organizzazione indica che un'entità non può usano un'autorizzazione specifica, l'entità non può usarla per nessuna risorsa all'interno dell'organizzazione. Questa regola si applica anche se le cartelle e i progetti all'interno dell'organizzazione hanno criteri di rifiuto più permissivi o criteri di autorizzazione che concedono all'entità l'autorizzazione.

    Analogamente, se un criterio di autorizzazione per un progetto assegna a un'entità un'autorizzazione specifica, l'entità dispone di questa autorizzazione per qualsiasi risorsa all'interno del progetto, a condizione che l'autorizzazione non venga negata.

    Affinché un utente sia in grado di usare l'autorizzazione per accedere alla risorsa, i tipi di criteri devono consentire l'accesso. Per ulteriori informazioni, consulta la sezione Valutazione delle norme.

  • accessTuple: una descrizione della tupla di accesso nella richiesta, incluso qualsiasi contesto della condizione fornito. Questa sezione contiene inoltre un riepilogo dei tag che si applicano alla risorsa.
  • allowPolicyExplanation: un riepilogo che indica se i criteri di autorizzazione pertinenti concedono all'entità l'autorizzazione, seguito da un elenco di criteri di autorizzazione e dalle relative associazioni di ruoli.

    Per ogni criterio di autorizzazione, la risposta elenca tutte le associazioni di ruoli all'interno del criterio e le valuta in base ai seguenti criteri:

    • Indica se l'associazione del ruolo include l'autorizzazione.
    • Se l'associazione dei ruoli include l'entità.
    • Se le condizioni nell'associazione del ruolo, se presenti, sono soddisfatte.

    Quindi, la risposta stampa il testo JSON completo del criterio di autorizzazione.

  • denyPolicyExplanation: un riepilogo che indica se i criteri di negazione pertinenti negano all'entità l'autorizzazione, seguito da un elenco di risorse con criteri di negazione. Per ogni risorsa, la risposta elenca tutti i criteri di negazione associati alla risorsa.

    Per ogni criterio di rifiuto, la risposta stampa i metadati del criterio, elenca le regole di rifiuto al suo interno e valuta ogni regola in base ai seguenti criteri:

    • Indica se la regola di rifiuto include l'autorizzazione.
    • Indica se l'autorizzazione è elencata come eccezione nella regola di rifiuto.
    • Indica se la regola di negazione include l'entità.
    • Indica se l'entità è elencata come eccezione nella regola di rifiuto.
    • Se le condizioni della regola di negazione, se presenti, sono soddisfatte.
  • pabPolicyExplanation: un riepilogo che indica se i criteri di Principal Access Boundary pertinenti consentono all'entità di accedere alla risorsa, seguito dalle associazioni dei criteri di Principal Access Boundary e dai criteri di Principal Access Boundary pertinenti.

    I criteri di Principal Access Boundary possono consentire l'accesso, non consentire l'accesso o non essere applicati. I criteri di Principal Access Boundary non vengono applicati in le seguenti situazioni:

    • IAM non applica l'autorizzazione specificata nella versione di applicazione del criterio di Principal Access Boundary. Di conseguenza, il criterio di Principal Access Boundary non può bloccare l'accesso.
    • A causa di una condizione nell'associazione dei criteri, Il criterio o l'associazione di Principal Access Boundary non si applica al principale.
    • Un criterio di Principal Access Boundary non ha regole.

    Se un criterio di Principal Access Boundary non viene applicato, non è possibile determinare se un criterio di Principal Access Boundary viene applicato. l'entità può accedere alla risorsa.

    La risposta elenca anche tutte le associazioni di criteri che includono l'entità e I dettagli del criterio di Principal Access Boundary in ognuno di questi criteri associazioni:

    • Per ogni associazione del criterio di confine dell'accesso dell'entità, la risposta stampa se l'associazione del criterio è applicata per l'entità, quindi stampa il testo dell'associazione del criterio. Un'associazione di criteri viene applicata se l'entità impostata nell'associazione include l'entità interrogata e se la condizione nell'associazione di criteri ha il valore true per l'entità interrogata. Se l'associazione dei criteri non viene applicata, il criterio non può influire sulla l'entità può accedere alla risorsa.
    • Per ciascun criterio di Principal Access Boundary, la risposta stampa quanto segue:

      • Indica se il criterio consente l'accesso, non consente l'accesso o non viene applicato.
      • La versione di applicazione del criterio. Questo numero di versione determina se IAM applica questo criterio di limite di accesso all'entità per l'autorizzazione interrogata. Se l'autorizzazione non viene applicata, il criterio non può influire sul fatto che l'entità possa accedere alla risorsa.
      • Le regole nel criterio di Principal Access Boundary e se ciascuna regola consente l'accesso. Per ogni regola, la risposta indica se la risorsa interrogata è inclusa nella regola.

        Una risorsa è inclusa in una regola se una delle seguenti condizioni è vera:

        • La risorsa è elencata nella regola. Solo le risorse Resource Manager (progetti, cartelle e organizzazioni) possono essere elencate direttamente nelle regole del confine di accesso dei principali.
        • Uno dei predecessori della risorsa (ovvero un progetto, una cartella superiore alla risorsa nella risorsa ) è elencata nella regola.

Anche molti oggetti nella risposta hanno un campo relevance. Il valore in questo campo indica in che misura l'oggetto contribuisce allo stato di accesso complessivo. Il campo relevance può avere i seguenti valori:

  • HEURISTIC_RELEVANCE_HIGH: indica che l'oggetto ha un forte impatto sul risultato. In altre parole, la rimozione dell'oggetto probabilmente cambierà l'accesso a Google Cloud. Ad esempio, un'associazione di ruoli che concede all'entità l'autorizzazione specificata avrà questo valore di pertinenza.

  • HEURISTIC_RELEVANCE_NORMAL: indica che l'oggetto ha un impatto limitato sul risultato. In altre parole, è improbabile che la rimozione dell'oggetto modifichi lo stato di accesso complessivo. Ad esempio, una regola di negazione che non contiene autorizzazione o l'entità avrebbero questo valore di pertinenza.

Risoluzione dei problemi relativi alle associazioni condizionali dei ruoli

Lo strumento per la risoluzione dei problemi relativi ai criteri risolve automaticamente i problemi relativi alle associazioni di ruoli condizionali e alle regole di rifiuto in base ai tag. Inoltre, consente di risolvere automaticamente i problemi relativi alle associazioni dei criteri di confine dell'accesso dell'entità con condizioni basate su principali.

Per risolvere i problemi relativi ad altri tipi di associazioni di ruoli condizionali oppure delle regole di negazione condizionale, lo strumento per la risoluzione dei problemi relativi ai criteri ha bisogno contesto relativo alla richiesta. Ad esempio, per risolvere i problemi relativi alle condizioni basate su attributi data/ora, lo strumento per la risoluzione dei problemi relativi ai criteri ha bisogno dell'ora della richiesta.

Nell'interfaccia a riga di comando gcloud e nell'API REST, fornisci questo contesto aggiuntivo manualmente.

Nella console Google Cloud, puoi fornire questo contesto aggiuntivo risolvere i problemi direttamente da qualsiasi log di controllo dell'attività di amministrazione oppure Log di controllo degli accessi ai dati. Ogni voce dell'audit log corrisponde a un a un l'API Google Cloud o un'azione che Google Cloud intraprende sui tuoi per conto tuo. Quando esegui la risoluzione dei problemi da un log di controllo, lo strumento per la risoluzione dei problemi relativi ai criteri ottiene automaticamente informazioni aggiuntive sulla richiesta, ad esempio la data e l'ora, che consentono allo strumento di analizzare le associazioni di ruoli condizionali e le regole di rifiuto.

Console

Per risolvere i problemi relativi alle associazioni di ruoli condizionali e alle regole di rifiuto:

  1. Nella console Google Cloud, vai alla pagina Esplora log.

    Vai a Esplora log

  2. Se il titolo della pagina è Visualizzatore log legacy, fai clic sul menu a discesa Upgrade elenco e seleziona Esegui l'upgrade al nuovo Esplora log.

  3. Per visualizzare solo gli audit log per le attività di amministrazione e l'accesso ai dati, inserisci quanto segue in Query Builder, quindi fai clic su Esegui query:

    logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    Sostituisci i seguenti valori:

    • RESOURCE_TYPE: il tipo di risorsa che stai l'elenco dei log di controllo. Utilizza projects, folders o organizations.
    • RESOURCE_ID: l'ID della risorsa.
  4. Individua la voce dell'audit log corrispondente alla richiesta a cui vuoi applicarla. risolvere i problemi. Per scoprire come utilizzare Esplora log per trovare log specifici, consulta Utilizzo di Esplora log.

  5. Nella colonna Riepilogo della voce di log, fai clic su IAM e poi su Risolvi il problema di accesso.

    Lo strumento per la risoluzione dei problemi relativi ai criteri utilizza le informazioni nella voce del log per risolvere i problemi di accesso, quindi mostra i risultati. Il contesto aggiuntivo è elencato nei dettagli della valutazione in Contesto condizione. Per visualizzare i dettagli del contesto, fai clic su Visualizza il contesto della condizione. Per saperne di più sulla pagina dei risultati dello strumento per la risoluzione dei problemi relativi ai criteri, consulta Informazioni sui risultati dello strumento per la risoluzione dei problemi in questa pagina.

  6. (Facoltativo) Per risolvere i problemi di un'altra richiesta che coinvolge associazioni di ruoli condizionali e regole di rifiuto, torna alla pagina Esplora log e ripeti i passaggi precedenti.

gcloud

Per risolvere i problemi relativi alle associazioni di ruoli condizionali e alle regole di rifiuto, utilizza il gcloud policy-troubleshoot iam comando.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • EMAIL: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni.
  • RESOURCE: la risorsa per cui viene concessa l'autorizzazione.
  • PERMISSION: l'autorizzazione che vuoi concedere risolvere i problemi.
  • DESTINATION_IP: facoltativo. L'indirizzo IP di destinazione della richiesta da utilizzare per verificare le associazioni di ruoli condizionali. Ad esempio: 198.1.1.1.
  • DESTINATION_PORT: facoltativo. La porta di destinazione della richiesta da utilizzare per verificare le associazioni di ruoli condizionali. Ad esempio "8080".
  • REQUEST_TIME: facoltativo. Il timestamp della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. Utilizza un timestamp nel formato RFC 3339, ad esempio 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: facoltativo. Il valore del nome della risorsa da utilizzare per il controllo delle associazioni condizionali dei ruoli. Per un elenco delle risorse accettate formati dei nomi, consulta Nome risorsa standard.
  • RESOURCE_SERVICE: facoltativo. Il valore del servizio di risorse da utilizzare per verificare le associazioni di ruoli condizionali. Per un elenco dei valori accettati dei servizi, vedi Risorsa di servizio.
  • RESOURCE_TYPE: facoltativo. Per un elenco dei valori accettati di risorse, consulta Tipo di risorsa personalizzati.

Esegui il comando gcloud policy-troubleshoot iam :

Linux, macOS o 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

La risposta contiene una spiegazione dell'accesso dell'entità. Per ogni regola di associazione e di rifiuto dei ruoli con una condizione, la risposta include un campo conditionExplanation che descrive se la condizione è valutata come true o false in base al contesto della condizione che hai fornito.

Ad esempio, di seguito è riportata la valutazione di un'associazione di ruoli con una condizione che specifica il tipo di risorsa e il servizio della risorsa:

Risposta

...
{
  "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

Per risolvere i problemi relativi alle associazioni condizionali dei ruoli e alle regole di negazione, utilizza l'API Policy Troubleshooter iam.troubleshoot .

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • EMAIL: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni.
  • RESOURCE: la risorsa per cui viene concessa l'autorizzazione.
  • PERMISSION: l'autorizzazione che vuoi concedere risolvere i problemi.
  • DESTINATION_IP: facoltativo. L'indirizzo IP di destinazione della richiesta da utilizzare per verificare le associazioni di ruoli condizionali. Ad esempio: 198.1.1.1.
  • DESTINATION_PORT: facoltativo. La porta di destinazione della richiesta da utilizzare per verificare le associazioni di ruoli condizionali. Ad esempio "8080".
  • REQUEST_TIME: facoltativo. Il timestamp della richiesta da utilizzare durante la verifica delle associazioni di ruoli condizionali. Utilizza un timestamp in RFC 3339, ad esempio 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: facoltativo. Il valore del nome della risorsa da utilizzare per il controllo delle associazioni condizionali dei ruoli. Per un elenco delle risorse accettate formati dei nomi, consulta Nome risorsa standard.
  • RESOURCE_SERVICE: facoltativo. Il valore del servizio di risorse da utilizzare per verificare le associazioni di ruoli condizionali. Per un elenco dei nomi di servizio accettati, consulta Valori dei servizi di risorsa.
  • RESOURCE_TYPE: facoltativo. Per un elenco dei tipi di risorse accettati, consulta Valori di tipo di risorsa.

Metodo HTTP e URL:

POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot

Corpo JSON della richiesta:

{
  "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
      }
    }
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene una spiegazione dell'accesso del principale. Per ogni regola di associazione e di rifiuto dei ruoli con una condizione, la risposta include un campo conditionExplanation che descrive se la condizione è valutata come true o false in base al contesto della condizione che hai fornito.

Ad esempio, di seguito è riportata una valutazione di un'associazione di ruolo con una condizione che specifica e un servizio di risorse:

...
{
  "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
    }]
  }
}
...

Passaggi successivi