Risoluzione dei problemi relativi alle autorizzazioni IAM

Lo strumento per la risoluzione dei problemi relativi ai criteri ti aiuta a capire se un'entità possono accedere a una risorsa. Data un'entità, una risorsa e un'autorizzazione, Lo strumento per la risoluzione dei problemi relativi ai criteri esamina i criteri di autorizzazione, e i criteri PAB (Principal Access Boundary) che influiscono sull'accesso dell'entità. Poi indica se, in base a questi criteri, l'entità può utilizzare l'autorizzazione specificata per accedere alla risorsa. Elenca anche i contenuti pertinenti i criteri e spiega come 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 istruzioni più complesse utilizzi gcloud CLI o l'API REST.

Prima di iniziare

  • Attiva l'API Policy Troubleshooter.

    Abilita l'API

Autorizzazioni obbligatorie

Per risolvere completamente i problemi delle entità occorre disporre di quanto segue autorizzazioni aggiuntive.

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 hai l'autorizzazione per visualizzare criterio applicabile a una risorsa o se non hai l'autorizzazione per visualizzare ruolo personalizzato, potresti non essere in grado di capire se un'entità ha accesso.

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

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

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

Autorizzazioni per risolvere i problemi di accesso per i membri del gruppo

Se i tuoi 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 una 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 risolvere i 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 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.

Risolvere i problemi di accesso

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

  • Entità:l'indirizzo email da verificare. L'indirizzo email deve fare riferimento a un account utente o di servizio. Altri tipi di entità, inclusi gruppi, i domini, le identità della forza lavoro e le identità dei 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 di risorse completi.
  • 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 per risolvere i problemi relativi all'autorizzazione compute.instances.get per un nel cluster Google Kubernetes Engine, la richiesta non va a buon fine perché Impossibile usare l'autorizzazione compute.instance.get per accedere di cluster Google Kubernetes Engine.

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

Console

Per risolvere i problemi di accesso, segui questi passaggi:

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

    Vai a Strumento per la risoluzione dei problemi relativi ai criteri

  2. Inserisci l'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, procedi in uno dei seguenti modi:

    • 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 .
      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 il completamento automatico le opzioni di CPU e memoria disponibili.

  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 il metodo 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 in base ai criteri di autorizzazione, negazione e limite 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 la 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, effettua le seguenti sostituzioni:

  • VERSION: la versione 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 relativi all'accesso per i criteri di autorizzazione, negazione e limite di accesso all'entità, 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:

Comprendere i risultati dello strumento per la risoluzione dei problemi

Console

La pagina dei risultati contiene le seguenti informazioni:

Dettagli valutazione

La sezione Dettagli valutazione contiene un riepilogo dell'accesso a cui puoi accedere risoluzione dei problemi, tra cui entità, risorsa e autorizzazione specificate. Se stai risolvendo problemi relativi a più coppie di autorizzazioni di risorse, puoi utilizzare Accedi all'elenco Valutazione per passare dall'uno all'altro.

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 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
  • Gli eventuali criteri di negazione della risorsa
  • I criteri di autorizzazione del progetto, della cartella e organizzazione, se presente
  • 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 negazione più permissivi oppure criteri che concedono l'autorizzazione all'entità.

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

La sezione Dettagli norme contiene le seguenti sezioni:

Stato dell'accesso

La sezione Stato dell'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 di accedere alla risorsa, in base ai criteri pertinenti.

Affinché un utente sia in grado di usare l'autorizzazione per accedere alla risorsa, 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 influisce sull'accesso dell'entità.

I criteri di Principal Access Boundary possono influire sull'accesso di un'entità nel nei seguenti modi:

  • L'entità è idonea a accedi 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 della norma. Nel riquadro adiacente al riquadro Criteri viene visualizzata la i dettagli delle norme.

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 Principal Access Boundary è rilevante se influisce sul risultato complessivo la query sullo strumento per la risoluzione dei problemi relativi ai 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 la risorsa. Di conseguenza, le regole pertinenti sono quelle che rendono un'entità idonea ad accedere alla risorsa.
  • Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità non può accedere la 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 la 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 la 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 su La 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 mostra una tabella delle associazioni di criteri pertinenti per i Principal Access Boundary.

Un'associazione di criteri è pertinente se applica in modo efficace il limite di accesso all'entità all'entità sottoposta a query. Affinché un'associazione di criteri applichi criterio di Principal Access Boundary 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 di criteri devono restituire true per l'oggetto della query principale.

Per visualizzare tutte le associazioni di criteri con insiemi di entità che includono l'oggetto sottoposto a query a prescindere dal fatto che soddisfi la condizione in l'associazione, deseleziona la casella di controllo Mostra solo regole e associazioni pertinenti.

La colonna Risultati della tabella delle associazioni indica se l'associazione è applicato per l'entità sottoposta a query. 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é che nega l'autorizzazione o non nega l'autorizzazione.

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 negazione, che non riflette alcun accesso dai criteri ereditati. Se non disponi dell'autorizzazione per visualizzare il criterio di negazione di una risorsa, l'elenco delle risorse non includere quella 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. A per visualizzare tutte le regole di negazione nei criteri di negazione di una risorsa e fare clic su una risorsa. Il rifiuto vengono visualizzate nel riquadro Regole di negazione. Questo riquadro contiene una tabella di tutte le risposte regole con l'entità sottoposta a query o l'autorizzazione per la risorsa o il criterio di negazione che hai selezionato.

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

Criterio di autorizzazione

Nella sezione Criteri di autorizzazione puoi navigare tra 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 i relativi predecessori. Accanto a ogni risorsa è una valutazione dell'accesso. La valutazione si applica solo a questo caso, criterio di autorizzazione della risorsa, non riflette alcun accesso ereditato . Se non hai l'autorizzazione per visualizzare criterio di autorizzazione, l'elenco delle risorse non la include.

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 nella sezione Associazioni di ruoli riquadro.

Il riquadro Associazioni di ruoli contiene una tabella di associazioni di ruoli nel il 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 e i ruoli personalizzati modificabili. Per visualizzare tutte le associazioni di ruoli, deseleziona Mostra solo pertinenti.

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

gcloud

La risposta contiene quattro sezioni principali: una descrizione della tupla di accesso in richiesta, i risultati della valutazione dei criteri di autorizzazione, i risultati la valutazione dei criteri di negazione e lo stato complessivo dell'accesso.

  • 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 dell'eventuale autorizzazione pertinente concedono all'entità l'autorizzazione, seguita da un elenco di i criteri e le 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:

    • Se l'associazione dei ruoli 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 dell'eventuale rifiuto pertinente criteri negano l'autorizzazione all'entità, seguita da un elenco di risorse con i criteri di negazione. Per ogni risorsa, la risposta elenca tutti i criteri di negazione collegate alla risorsa.

    Per ogni criterio di negazione, la risposta stampa i metadati del criterio, riporta l'elenco le regole di negazione nel criterio, poi valuta ogni regola in base a quanto segue: di classificazione:

    • Indica se la regola di negazione include l'autorizzazione.
    • Indica se l'autorizzazione è elencata come eccezione nella regola di negazione.
    • Indica se la regola di negazione include l'entità.
    • Indica se l'entità è elencata come eccezione nella regola di negazione.
    • Se le condizioni della regola di negazione, se presenti, sono soddisfatte.
  • overallAccessState: se l'entità può utilizzare il valore l'autorizzazione specificata per accedere alla risorsa specificata in base al criteri di autorizzazione, criteri di negazione e criteri di Principal Access Boundary.

    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
    • Gli eventuali criteri di negazione della risorsa
    • I criteri di autorizzazione del progetto, della cartella e organizzazione, se presente
    • 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 negazione più permissivi oppure criteri che concedono l'autorizzazione all'entità.

    Analogamente, se un criterio di autorizzazione per un progetto assegna a un'entità un criterio l'autorizzazione, l'entità dispone di quell'autorizzazione per qualsiasi risorsa all'interno progetto, a condizione che questa 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 saperne di più, consulta la pagina Valutazione dei criteri.

  • pabPolicyExplanation: un riepilogo dell'eventuale presenza di elementi pertinenti I criteri di Principal Access Boundary consentono all'entità di accedere risorsa, seguita dalle associazioni dei criteri di Principal Access Boundary e i criteri di Principal Access Boundary.

    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 in le 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 dei criteri di Principal Access Boundary, la risposta stampa se viene applicata l'associazione dei criteri per l'entità, quindi viene stampato il testo l'associazione dei criteri. Un'associazione di criteri viene applicata se l'entità impostata in l'associazione include l'entità sottoposta a query e se la condizione nel L'associazione di criteri restituisce true per l'entità sottoposta a query. 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:

      • Se il criterio consente l'accesso, non consente l'accesso o non lo è in modo forzato.
      • La versione di applicazione del criterio. Questo numero di versione determina se IAM applica in modo forzato criterio di Principal Access Boundary per l'autorizzazione per cui è stata eseguita la query. Se non viene applicata in modo forzato, il criterio non può influire sul fatto che L'entità può accedere alla risorsa.
      • Le regole del criterio di Principal Access Boundary e se ogni regola consente l'accesso. Per ogni regola, la risposta indica se la risorsa su cui è stata eseguita la query è inclusa nella regola.

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

        • La risorsa è elencata nella regola. Solo Resource Manager risorse (progetti, cartelle e organizzazioni) possono essere elencate nelle regole di Principal Access Boundary.
        • Uno dei predecessori della risorsa (ovvero un progetto, una cartella dell'organizzazione al di sopra della 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 su per ottenere il risultato. In altre parole, la rimozione dell'oggetto probabilmente cambierà l'accesso a Google Cloud. Ad esempio, un'associazione di ruolo che concede all'entità l'autorizzazione specificata avrebbe 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 cambi lo stato generale dell'accesso. Ad esempio, una regola di negazione che non contiene autorizzazione o l'entità avrebbe questo valore di pertinenza.

REST

La risposta contiene quattro sezioni principali: lo stato generale dell'accesso, una descrizione della tupla di accesso nella richiesta, i risultati del criterio di autorizzazione e i risultati della valutazione dei criteri di negazione.

  • overallAccessState: se l'entità può utilizzare il valore l'autorizzazione specificata per accedere alla risorsa specificata in base al criteri di autorizzazione, criteri di negazione e criteri di Principal Access Boundary.

    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
    • Gli eventuali criteri di negazione della risorsa
    • I criteri di autorizzazione del progetto, della cartella e organizzazione, se presente
    • 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 negazione più permissivi oppure criteri che concedono l'autorizzazione all'entità.

    Analogamente, se un criterio di autorizzazione per un progetto assegna a un'entità un criterio l'autorizzazione, l'entità dispone di quell'autorizzazione per qualsiasi risorsa all'interno progetto, a condizione che questa 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 saperne di più, consulta la pagina Valutazione dei criteri.

  • 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 dell'eventuale autorizzazione pertinente concedono all'entità l'autorizzazione, seguita da un elenco di i criteri e le 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:

    • Se l'associazione dei ruoli 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 dell'eventuale rifiuto pertinente criteri negano l'autorizzazione all'entità, seguita da un elenco di risorse con i criteri di negazione. Per ogni risorsa, la risposta elenca tutti i criteri di negazione collegate alla risorsa.

    Per ogni criterio di negazione, la risposta stampa i metadati del criterio, riporta l'elenco le regole di negazione nel criterio, poi valuta ogni regola in base a quanto segue: di classificazione:

    • Indica se la regola di negazione include l'autorizzazione.
    • Indica se l'autorizzazione è elencata come eccezione nella regola di negazione.
    • Indica se la regola di negazione include l'entità.
    • Indica se l'entità è elencata come eccezione nella regola di negazione.
    • Se le condizioni della regola di negazione, se presenti, sono soddisfatte.
  • pabPolicyExplanation: un riepilogo dell'eventuale presenza di elementi pertinenti I criteri di Principal Access Boundary consentono all'entità di accedere risorsa, seguita dalle associazioni dei criteri di Principal Access Boundary e i criteri di Principal Access Boundary.

    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 in le 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 dei criteri di Principal Access Boundary, la risposta stampa se viene applicata l'associazione dei criteri per l'entità, quindi viene stampato il testo l'associazione dei criteri. Un'associazione di criteri viene applicata se l'entità impostata in l'associazione include l'entità sottoposta a query e se la condizione nel L'associazione di criteri restituisce true per l'entità sottoposta a query. 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:

      • Se il criterio consente l'accesso, non consente l'accesso o non lo è in modo forzato.
      • La versione di applicazione del criterio. Questo numero di versione determina se IAM applica in modo forzato criterio di Principal Access Boundary per l'autorizzazione per cui è stata eseguita la query. Se non viene applicata in modo forzato, il criterio non può influire sul fatto che L'entità può accedere alla risorsa.
      • Le regole del criterio di Principal Access Boundary e se ogni regola consente l'accesso. Per ogni regola, la risposta indica se la risorsa su cui è stata eseguita la query è inclusa nella regola.

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

        • La risorsa è elencata nella regola. Solo Resource Manager risorse (progetti, cartelle e organizzazioni) possono essere elencate nelle regole di Principal Access Boundary.
        • Uno dei predecessori della risorsa (ovvero un progetto, una cartella dell'organizzazione al di sopra della 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 su per ottenere il risultato. In altre parole, la rimozione dell'oggetto probabilmente cambierà l'accesso a Google Cloud. Ad esempio, un'associazione di ruolo che concede all'entità l'autorizzazione specificata avrebbe 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 cambi lo stato generale dell'accesso. Ad esempio, una regola di negazione che non contiene autorizzazione o l'entità avrebbe 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 associazioni di ruoli e regole di negazione basate sui tag. Inoltre, risolve automaticamente le associazioni dei criteri di Principal Access Boundary con condizioni in base alle entità.

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 in base data/ora, lo strumento per la risoluzione dei problemi relativi ai criteri richiede l'ora richiesta.

In gcloud CLI 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 una richiesta a un l'API Google Cloud o un'azione che Google Cloud intraprende sui tuoi per conto tuo. Quando risolvi i problemi in un log di controllo, Lo strumento per la risoluzione dei problemi relativi ai criteri riceve automaticamente ulteriori informazioni informazioni sulla richiesta, come la data e l'ora, il che consente Strumento per la risoluzione dei problemi relativi ai criteri, che consente di analizzare le associazioni di ruoli condizionali e e regole di negazione.

Console

Per risolvere i problemi relativi alle associazioni condizionali dei ruoli e alle regole di negazione, segui questi passaggi:

  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. Usa 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 contenute nella voce di log. per risolvere i problemi di accesso, quindi mostra i risultati. Il contesto aggiuntivo è elencato nei dettagli della valutazione in Contesto della condizione. Per visualizzare dettagli del contesto, fai clic su Visualizza il contesto della condizione. Per saperne di più sulle Pagina dei risultati dello strumento per la risoluzione dei problemi relativi ai criteri, consulta Comprendere Risultati dello strumento per la risoluzione dei problemi in questa pagina.

  6. (Facoltativo) Per risolvere i problemi relativi a un'altra richiesta che riguarda il ruolo condizionale associazioni e regole di negazione, torna alla pagina Esplora log e ripeti passaggi precedenti.

gcloud

Per risolvere i problemi relativi alle associazioni condizionali dei ruoli e alle regole di negazione, utilizza la gcloud policy-troubleshoot iam .

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

  • EMAIL: l'indirizzo email dell'entità di cui autorizzazioni di cui vuoi risolvere i problemi.
  • RESOURCE: la risorsa su cui è disponibile l'autorizzazione concesso.
  • PERMISSION: l'autorizzazione che vuoi concedere risolvere i problemi.
  • DESTINATION_IP: facoltativo. L'IP di destinazione della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. Ad esempio: 198.1.1.1.
  • DESTINATION_PORT: facoltativo. La destinazione della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. Ad esempio "8080".
  • REQUEST_TIME: facoltativo. Il timestamp della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. 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 servizio di risorse da utilizzare durante la verifica delle associazioni condizionali dei ruoli. 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 la 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 ruolo di associazione e di negazione con una condizione, la risposta include una Campo conditionExplanation che descrive se la condizione restituisce 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:

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 autorizzazioni di cui vuoi risolvere i problemi.
  • RESOURCE: la risorsa su cui è disponibile l'autorizzazione concesso.
  • PERMISSION: l'autorizzazione che vuoi concedere risolvere i problemi.
  • DESTINATION_IP: facoltativo. L'IP di destinazione della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. Ad esempio: 198.1.1.1.
  • DESTINATION_PORT: facoltativo. La destinazione della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. Ad esempio "8080".
  • REQUEST_TIME: facoltativo. Il timestamp della richiesta da utilizzare durante il controllo delle associazioni condizionali dei ruoli. 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 servizio di risorse da utilizzare durante la verifica delle associazioni condizionali dei ruoli. 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.

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 dell'entità. Per ogni ruolo di associazione e di negazione con una condizione, la risposta include una Campo conditionExplanation che descrive se la condizione restituisce 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