Resolva problemas com autorizações de IAM

A resolução de problemas de políticas ajuda a compreender se um principal pode aceder a um recurso. Dado um principal, um recurso e uma autorização, a ferramenta de resolução de problemas de políticas examina as políticas de permissão, as políticas de negação e as políticas de limite de acesso principal (PAB) que afetam o acesso do principal. Em seguida, indica se, com base nessas políticas, o principal pode usar a autorização especificada para aceder ao recurso. Também indica as políticas relevantes e explica como afetam o acesso do principal.

Pode aceder à ferramenta de resolução de problemas de políticas através da Google Cloud consola, da Google Cloud CLI ou da API REST. Para consultas básicas, a utilização da Google Cloud consola é normalmente a mais rápida. Para cenários mais complexos, considere a CLI gcloud ou a API REST.

Antes de começar

  • Enable the Policy Troubleshooter API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Autorizações necessárias

Para resolver totalmente o acesso dos seus diretores, precisa das seguintes autorizações.

Autorizações para resolver problemas de acesso para principais individuais

A ferramenta de resolução de problemas de políticas analisa o acesso de um principal a um recurso com base nas políticas de permissão, nas políticas de negação, nas políticas de limite de acesso principal e nas funções que tem autorização para ver. Se não tiver autorização para ver uma política que se aplica a um recurso ou se não tiver autorização para ver uma função personalizada, pode não conseguir saber se um principal tem acesso.

Autorizações para resolver problemas relativos às políticas de permissão e negação

Para resolver problemas relativos às políticas de permissão e negação, precisa de autorizações na organização que contém o recurso para o qual quer resolver problemas. Estas autorizações permitem-lhe ver as políticas de permissão e recusa que controlam o acesso ao recurso.

Para obter as autorizações de que precisa para resolver problemas de acesso de um principal, peça ao seu administrador que lhe conceda as seguintes funções de IAM na organização que contém o recurso para o qual quer resolver problemas de acesso:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Se não tiver autorização para ver as políticas de permissão e restrição de um recurso, os resultados de acesso para essas políticas de permissão e restrição são Unknown.

Autorizações para resolver problemas relativos a políticas de limite de acesso principal

Para resolver problemas relacionados com políticas de limite de acesso principal, precisa de autorizações na organização cujo conjunto principal inclui o principal. A forma como identifica esta organização depende do tipo de principal:

  • Contas Google e Grupos Google: a organização associada ao domínio do Google Workspace que inclui o principal
  • Identidades federadas (identidades em Workload Identity Pools ou Workforce Identity Pools): a organização que contém o Identity Pool que inclui o principal
  • Contas de serviço: a organização que contém o projeto onde a conta de serviço foi criada

Estas autorizações permitem-lhe ver as políticas de limite de acesso principal que controlam o que o principal pode aceder.

Para receber as autorizações de que precisa para resolver problemas de acesso de um principal, peça ao seu administrador que lhe conceda as seguintes funções do IAM na organização adequada:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Se não tiver autorização para ver as políticas de limite de acesso principal que se aplicam a um principal, os resultados de acesso para políticas de limite de acesso principal são Unknown.

Autorizações para resolver problemas de acesso para membros do grupo

Se as suas políticas de permissão e recusa incluírem grupos, precisa da autorização da API Google Workspace Admin groups.read para resolver problemas de acesso de membros individuais de grupos. Os superadministradores e os administradores de grupos têm automaticamente esta autorização. Para conceder esta autorização a um utilizador que não seja um administrador do grupo ou um superadministrador, crie uma função de administrador do Google Workspace personalizada que contenha o privilégio groups.read (localizado em Privilégios da API Admin) e conceda-o ao utilizador.

Se não tiver estas autorizações, as associações de funções e as regras de negação que contenham grupos ou domínios têm um resultado de acesso Desconhecido, a menos que a associação de funções ou a regra de negação também inclua explicitamente o principal.

Autorizações para resolver problemas de acesso para membros do domínio

Se as suas políticas de autorização e recusa incluírem uma conta do Google Workspace ou um domínio do Cloud Identity, tem de ser um administrador do domínio para resolver problemas de acesso de membros individuais do domínio.

Se não tiver estas autorizações, as associações de funções e as regras de negação que contenham grupos ou domínios têm um resultado de acesso Desconhecido, a menos que a associação de funções ou a regra de negação também inclua explicitamente o principal.

Resolva problemas de acesso

Para resolver problemas de acesso, precisa das seguintes informações:

  • Principal: o endereço de email a verificar. O endereço de email tem de se referir a um utilizador ou uma conta de serviço. Outros tipos de principais, incluindo grupos, domínios, identidades de força de trabalho e identidades de carga de trabalho, não são suportados.
  • Recurso: o nome completo do recurso ao qual quer resolver problemas de acesso. Por exemplo, para resolver problemas de acesso ao projeto my-project, introduza //cloudresourcemanager.googleapis.com/projects/my-project. Para outros tipos de recursos, consulte os exemplos de nomes de recursos completos.

  • Autorização: a autorização a verificar. Se usar a Google Cloud consola, é apresentada uma lista de sugestões à medida que escreve.

    Para resolver problemas de uma autorização, esta tem de ser aplicável ao recurso no pedido. Por outras palavras, tem de ser possível usar essa autorização para aceder ao recurso de alguma forma. Se a autorização não for aplicável ao recurso, o pedido falha. Por exemplo, se tentar resolver problemas com a autorização compute.instances.get para um cluster do Google Kubernetes Engine, o pedido falha porque a autorização compute.instance.get não pode ser usada para aceder a clusters do Google Kubernetes Engine.

    Para ver uma lista completa de autorizações, consulte a referência de autorizações.

Consola

Para resolver problemas de acesso, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Resolução de problemas de políticas.

    Aceder à resolução de problemas de políticas

  2. Introduza o email do principal cujo acesso quer verificar.

  3. Introduza o nome completo do recurso a verificar.

    Se não souber o nome completo do recurso, faça uma das seguintes ações:

    • Se estiver a resolver problemas de acesso para um projeto, uma pasta ou uma organização, comece a escrever para ver as opções de preenchimento automático.
    • Se estiver a resolver problemas de acesso para outro tipo de recurso, clique em Procurar para abrir a caixa de diálogo de pesquisa de recursos e, de seguida, pesquise o recurso:

      1. Na caixa Selecionar âmbito, selecione um projeto, uma pasta ou uma organização na qual pesquisar.
      2. Na caixa Tipo de recurso, selecione os tipos de recursos que quer pesquisar.
      3. Na caixa Pesquisar recursos, introduza uma parte do nome do recurso.
      4. Na secção de resultados, selecione o recurso que quer verificar.
      5. Clique em Selecionar para escolher o recurso e fechar a caixa de diálogo.
  4. Introduza a autorização a verificar.

    Se não souber o nome completo da autorização, comece a escrever para ver as opções de preenchimento automático.

  5. Opcional: para verificar vários recursos e autorizações, selecione Adicionar outro par e repita o passo anterior.

  6. Clique em Verificar acesso.

gcloud

Para saber por que motivo um principal tem ou não tem uma autorização de IAM, use o comando gcloud beta policy-troubleshoot iam.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • VERSION: opcional. A versão do comando a usar. Para resolver problemas de acesso com base apenas em políticas de permissão e negação, não especifique uma versão. Para resolver problemas de acesso com base em políticas de permissão, negação e limite de acesso principal, use a versão beta.
  • EMAIL: o endereço de email do principal cujas autorizações quer resolver.
  • RESOURCE: o recurso no qual a autorização é concedida.
  • PERMISSION: a autorização para a qual quer resolver problemas.

Execute o comando gcloud beta policy-troubleshoot iam:

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

Deve receber uma resposta semelhante à seguinte:

Resposta

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

Para saber por que motivo um principal tem ou não tem uma autorização do IAM, use o método iam.troubleshoot da API Policy Troubleshooter.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • VERSION: a versão da API a usar para este pedido. Para resolver problemas de acesso com base apenas em políticas de permissão e negação, use v3. Para resolver problemas de acesso com base em políticas de permissão, negação e limite de acesso principal, use o v3beta.
  • EMAIL: o endereço de email do principal cujas autorizações quer resolver.
  • RESOURCE: o recurso no qual a autorização é concedida.
  • PERMISSION: a autorização para a qual quer resolver problemas.
  • PROJECT_ID: o ID do projeto que quer usar para fazer o pedido. Os IDs dos projetos são strings alfanuméricas, como my-project.

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Compreenda os resultados da resolução de problemas

Consola

A página de resultados contém as seguintes informações:

Detalhes da avaliação

A secção Detalhes da avaliação contém um resumo do acesso que está a resolver, incluindo o principal, o recurso e a autorização especificados. Se estiver a resolver problemas de vários pares de autorizações de recursos, pode usar a lista Avaliação de acesso para alternar entre eles.

Detalhes da política

A secção Detalhes da política contém detalhes sobre como as políticas de permissão, negação e limite de acesso principal relevantes afetam o acesso do principal.

As políticas de limite de acesso principal relevantes incluem todas as políticas de limite de acesso principal associadas a um conjunto principal que inclui o principal.

As políticas de permissão e recusa relevantes incluem o seguinte:

  • A política de permissão do recurso
  • As políticas de recusa do recurso, se existirem
  • As políticas de permissão do projeto principal, da pasta e da organização do recurso, se existirem
  • As políticas de recusa do projeto, da pasta e da organização principais do recurso, se existirem

As políticas de permissão e negação de projetos, pastas e organizações principais são relevantes devido à herança de políticas. Quando anexa uma política de permissão ou negação a um projeto, uma pasta ou uma organização, essa política também se aplica a todos os recursos no interior desse projeto, pasta ou organização.

Por exemplo, se uma política de recusa para uma organização indicar que um principal não pode usar uma autorização específica, o principal não pode usar essa autorização para nenhum recurso na organização. Esta regra aplica-se mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que concedam a autorização ao principal.

Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma autorização específica, o principal tem essa autorização para qualquer recurso no projeto, desde que essa autorização não lhe seja recusada.

A secção Detalhes da política contém as seguintes secções:

Estado de acesso

A secção Estado de acesso resume os resultados de cada tipo de política (políticas de limite de acesso principal, políticas de negação e políticas de autorização) e indica o resultado geral. O resultado indica se o principal pode usar a autorização para aceder ao recurso, de acordo com as políticas relevantes.

Para que um utilizador possa usar a autorização para aceder ao recurso, todos os tipos de políticas têm de permitir o acesso. Para mais informações, consulte a avaliação de políticas.

Política de limite de acesso principal

Na secção Política de limite de acesso principal, pode ver todas as políticas de limite de acesso principal às quais o principal está sujeito e as associações de políticas que associam estas políticas ao principal.

O painel Políticas apresenta todas as políticas associadas a um conjunto de principais que inclui o principal. Junto a cada política, encontra um ícone que indica como essa política afeta o acesso do principal.

As políticas de limite de acesso principal podem afetar o acesso de um principal das seguintes formas:

  • O principal é elegível para aceder ao recurso: a política de limite de acesso do principal aplica-se ao principal e uma das respetivas regras contém o recurso consultado.
  • O principal não é elegível para aceder ao recurso: a política de limite de acesso principal aplica-se ao principal, mas o recurso consultado não está nas regras dessa política.
  • Não aplicada: as políticas de limite de acesso principal não são aplicadas nas seguintes situações:

    • O IAM não aplica a autorização especificada na versão de aplicação da política de limite de acesso principal. Como resultado, a política de limite de acesso principal não pode bloquear o acesso.
    • Devido a uma condição na associação de políticas, a política ou a associação de limites de acesso principal não se aplica ao principal.
    • Uma política de limite de acesso principal não tem regras.

    Se uma política de limite de acesso principal não for aplicada, não pode afetar se o principal pode aceder ao recurso.

Para ver as regras e as associações associadas a uma política de limite de acesso principal, clique no nome da política. O painel adjacente ao painel Políticas apresenta os detalhes da política.

Para ver as regras na política, clique no separador Regras de limites. Este separador apresenta uma tabela das regras de políticas de limite de acesso principal relevantes.

Uma regra de limite de acesso principal é relevante se afetar o resultado geral da consulta do resolutor de problemas de políticas. Como resultado, as regras relevantes variam consoante os resultados da resolução de problemas de políticas. Por exemplo, considere as seguintes situações:

  • A resolução de problemas de políticas indica que o principal pode aceder ao recurso. Como resultado, as regras relevantes são as que tornam o principal elegível para aceder ao recurso.
  • A resolução de problemas de políticas indica que o principal não consegue aceder ao recurso. No entanto, de acordo com as políticas de limite de acesso principal relevantes, o principal é elegível para aceder ao recurso. Como resultado, não existem regras relevantes, porque as políticas de limite de acesso principal não são o motivo pelo qual o principal não consegue aceder ao recurso.
  • A resolução de problemas de políticas indica que o principal não consegue aceder ao recurso. Além disso, de acordo com as políticas de limite de acesso principal relevantes, o principal não é elegível para aceder ao recurso. Como resultado, as regras relevantes são as que não tornam o principal elegível para aceder ao recurso.

Para ver todas as regras de limite de acesso principal numa política, desmarque a caixa de verificação Mostrar apenas regras e associações relevantes.

A coluna Resultados na tabela de regras de limites indica se a regra de limites de acesso principal contém o recurso consultado. Para ver mais detalhes acerca da regra, clique em Ver detalhes da regra.

Para ver as associações de políticas da política, clique no separador Associações. Este separador apresenta uma tabela das associações de políticas relevantes para a política de limite de acesso principal selecionada.

Uma associação de políticas é relevante se aplicar efetivamente a política de limite de acesso principal ao principal consultado. Para que uma associação de políticas aplique uma política de limite de acesso principal a um principal, têm de se observar as seguintes condições:

  • O principal definido na associação de políticas tem de incluir o principal consultado
  • Todas as condições na associação de políticas têm de ser avaliadas como true para o principal consultado.

Para ver todas as associações de políticas com conjuntos de principais que incluem o principal consultado, independentemente de o principal consultado cumprir a condição na associação, desmarque a caixa de verificação Mostrar apenas regras e associações relevantes.

A coluna Resultados na tabela de associações indica se a associação é aplicada para o principal consultado. Para ver mais detalhes sobre a associação de políticas, clique em Ver detalhes da associação.

Política de recusa

Na secção Política de recusa, pode ver todas as políticas de recusa relevantes, identificar regras de recusa que negam o acesso ao principal e compreender por que motivo uma regra de recusa nega ou não nega ao principal a autorização.

O painel Recursos com políticas de recusa apresenta todas as políticas de recusa relevantes, organizadas pelos recursos aos quais estão anexadas. Junto a cada política de recusa, encontra-se uma avaliação de acesso. Esta avaliação aplica-se apenas a essa política de recusa. Não reflete qualquer acesso de políticas herdadas. Se não tiver autorização para ver a política de negação de um recurso, a lista de recursos não inclui esse recurso nem as respetivas políticas de negação.

Para ver as regras de recusa relevantes nestas políticas de recusa, clique numa política de recusa. Para ver todas as regras de recusa nas políticas de recusa de um recurso, clique num recurso. As regras de recusa são apresentadas no painel Regras de recusa. Este painel contém uma tabela de todas as regras de negação com o principal ou a autorização consultada para o recurso ou a política de negação que selecionou.

A coluna Acesso indica se a regra de negação nega ao principal a autorização. Para ver mais detalhes sobre a regra de recusa, clique em Ver regra de recusa na linha dessa regra.

Política de permissão

Na secção Política de autorização, pode navegar por todas as políticas de autorização relevantes, identificar associações de funções que concedem acesso ao principal e compreender por que motivo uma associação de funções concede ou não concede a autorização ao principal.

O painel Recursos apresenta o recurso especificado e os respetivos antecessores. Junto a cada recurso, encontra uma avaliação de acesso. Esta avaliação aplica-se apenas à política de autorização desse recurso. Não reflete qualquer acesso de políticas herdadas. Se não tiver autorização para ver a política de autorização de um recurso, a lista de recursos não inclui esse recurso.

Para ver as associações de funções relevantes na política de autorização de um recurso e ver como concedem ou não a autorização ao principal, clique no recurso. As associações de funções da política de permissão aparecem no painel Associações de funções

O painel Associações de funções contém uma tabela de associações de funções na política de autorização do recurso selecionado. Por predefinição, a tabela só contém associações de funções que incluem uma função com a autorização especificada. Se o principal não tiver acesso, a tabela também mostra associações de funções com funções personalizadas editáveis. Para ver todas as associações de funções, desmarque a caixa de verificação Mostrar apenas associações relevantes.

A coluna Acesso indica se a associação de funções concede ao principal a autorização. Para ver mais detalhes sobre a associação de funções, clique em Ver detalhes da associação na linha dessa associação de funções.

gcloud

A resposta contém quatro secções principais: uma descrição da tupla de acesso no pedido, os resultados da avaliação da política de permissão, os resultados da avaliação da política de recusa e o estado de acesso geral.

  • accessTuple: uma descrição da tupla de acesso no pedido, incluindo qualquer contexto de condição que tenha fornecido. Esta secção também contém um resumo das etiquetas que se aplicam ao recurso.
  • allowPolicyExplanation: um resumo que indica se as políticas de permissão relevantes concedem a autorização ao principal, seguido de uma lista de políticas de permissão e das respetivas associações de funções.

    Para cada política de autorização, a resposta lista todas as associações de funções na política e avalia-as com base nos seguintes critérios:

    • Se a associação de funções inclui a autorização.
    • Se a associação de funções inclui o principal.
    • Se as condições na atribuição de função, se existirem, são cumpridas.

    Em seguida, a resposta imprime o texto JSON completo da política de autorização.

  • denyPolicyExplanation: um resumo que indica se as políticas de negação relevantes negam a permissão ao principal, seguido de uma lista de recursos com políticas de negação. Para cada recurso, a resposta lista todas as políticas de recusa anexadas ao recurso.

    Para cada política de recusa, a resposta imprime os metadados da política, lista as regras de recusa na política e, em seguida, avalia cada regra com base nos seguintes critérios:

    • Se a regra de recusa inclui a autorização.
    • Se a autorização está listada como uma exceção na regra de recusa.
    • Se a regra de recusa inclui o principal.
    • Se o principal está listado como uma exceção na regra de recusa.
    • Se as condições na regra de recusa, se existirem, forem cumpridas.
  • overallAccessState: Indica se o principal consegue usar a autorização especificada para aceder ao recurso especificado com base nas políticas de autorização, nas políticas de recusa e nas políticas de limite de acesso do principal relevantes.

    As políticas de limite de acesso principal relevantes incluem todas as políticas de limite de acesso principal associadas a um conjunto principal que inclui o principal.

    As políticas de permissão e recusa relevantes incluem o seguinte:

    • A política de permissão do recurso
    • As políticas de recusa do recurso, se existirem
    • As políticas de permissão do projeto principal, da pasta e da organização do recurso, se existirem
    • As políticas de recusa do projeto, da pasta e da organização principais do recurso, se existirem

    As políticas de permissão e negação de projetos, pastas e organizações principais são relevantes devido à herança de políticas. Quando anexa uma política de permissão ou negação a um projeto, uma pasta ou uma organização, essa política também se aplica a todos os recursos no interior desse projeto, pasta ou organização.

    Por exemplo, se uma política de recusa para uma organização indicar que um principal não pode usar uma autorização específica, o principal não pode usar essa autorização para nenhum recurso na organização. Esta regra aplica-se mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que concedam a autorização ao principal.

    Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma autorização específica, o principal tem essa autorização para qualquer recurso no projeto, desde que essa autorização não lhe seja recusada.

    Para que um utilizador possa usar a autorização para aceder ao recurso, todos os tipos de políticas têm de permitir o acesso. Para mais informações, consulte o artigo Avaliação de políticas.

  • pabPolicyExplanation: um resumo que indica se as políticas de limite de acesso principal relevantes permitem que o principal aceda ao recurso, seguido das associações de políticas de limite de acesso principal relevantes e das políticas de limite de acesso principal.

    As políticas de limite de acesso principal podem permitir o acesso, não permitir o acesso ou não ser aplicadas. As políticas de limite de acesso principal não são aplicadas nas seguintes situações:

    • O IAM não aplica a autorização especificada na versão de aplicação da política de limite de acesso principal. Como resultado, a política de limite de acesso principal não pode bloquear o acesso.
    • Devido a uma condição na associação de políticas, a política ou a associação de limites de acesso principal não se aplica ao principal.
    • Uma política de limite de acesso principal não tem regras.

    Se uma política de limite de acesso principal não for aplicada, não pode afetar se o principal pode aceder ao recurso.

    A resposta também lista todas as associações de políticas que incluem o principal e os detalhes da política de limite de acesso principal em cada uma dessas associações de políticas:

    • Para cada associação de políticas de limites de acesso principais, a resposta imprime se a associação de políticas é aplicada para o principal e, em seguida, imprime o texto da associação de políticas. Uma associação de políticas é aplicada se o principal definido na associação incluir o principal consultado e se a condição na associação de políticas for avaliada como true para o principal consultado. Se a associação de políticas não for aplicada, a política não pode afetar se o principal pode aceder ao recurso.
    • Para cada política de limite de acesso principal, a resposta imprime o seguinte:

      • Se a política permite o acesso, não permite o acesso ou não é aplicada.
      • A versão de aplicação da política. Este número de versão determina se o IAM aplica esta política de limite de acesso principal à autorização consultada. Se a autorização não for aplicada, a política não pode afetar a capacidade do principal de aceder ao recurso.
      • As regras na política de limite de acesso principal e se cada regra permite o acesso. Para cada regra, a resposta indica se o recurso consultado está incluído na regra.

        Um recurso é incluído numa regra se uma das seguintes afirmações for verdadeira:

        • O recurso está listado na regra. Apenas os recursos do Resource Manager (projetos, pastas e organizações) podem ser listados diretamente nas regras de limite de acesso principal.
        • Um dos antecessores do recurso (ou seja, um projeto, uma pasta ou uma organização acima do recurso na hierarquia de recursos) está listado na regra.
  • Muitos objetos na resposta também têm um campo relevance. O valor neste campo indica a contribuição desse objeto para o estado de acesso geral. O campo relevance pode ter os seguintes valores:

    • HEURISTIC_RELEVANCE_HIGH: indica que o objeto tem um forte impacto no resultado. Por outras palavras, a remoção do objeto vai provavelmente alterar o estado de acesso geral. Por exemplo, uma associação de funções que concede ao principal a autorização especificada teria este valor de relevância.

    • HEURISTIC_RELEVANCE_NORMAL: indica que o objeto tem um impacto limitado no resultado. Por outras palavras, é pouco provável que a remoção do objeto altere o estado de acesso geral. Por exemplo, uma regra de recusa que não contenha a autorização ou o principal teria este valor de relevância.

    REST

    A resposta contém quatro secções principais: o estado de acesso geral, uma descrição da tupla de acesso no pedido, os resultados da avaliação da política de autorização e os resultados da avaliação da política de recusa.

    • overallAccessState: Indica se o principal consegue usar a autorização especificada para aceder ao recurso especificado com base nas políticas de autorização, nas políticas de recusa e nas políticas de limite de acesso do principal relevantes.

      As políticas de limite de acesso principal relevantes incluem todas as políticas de limite de acesso principal associadas a um conjunto principal que inclui o principal.

      As políticas de permissão e recusa relevantes incluem o seguinte:

      • A política de permissão do recurso
      • As políticas de recusa do recurso, se existirem
      • As políticas de permissão do projeto principal, da pasta e da organização do recurso, se existirem
      • As políticas de recusa do projeto, da pasta e da organização principais do recurso, se existirem

      As políticas de permissão e negação de projetos, pastas e organizações principais são relevantes devido à herança de políticas. Quando anexa uma política de permissão ou negação a um projeto, uma pasta ou uma organização, essa política também se aplica a todos os recursos no interior desse projeto, pasta ou organização.

      Por exemplo, se uma política de recusa para uma organização indicar que um principal não pode usar uma autorização específica, o principal não pode usar essa autorização para nenhum recurso na organização. Esta regra aplica-se mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que concedam a autorização ao principal.

      Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma autorização específica, o principal tem essa autorização para qualquer recurso no projeto, desde que essa autorização não lhe seja recusada.

      Para que um utilizador possa usar a autorização para aceder ao recurso, todos os tipos de políticas têm de permitir o acesso. Para mais informações, consulte o artigo Avaliação de políticas.

    • accessTuple: uma descrição da tupla de acesso no pedido, incluindo qualquer contexto de condição que tenha fornecido. Esta secção também contém um resumo das etiquetas que se aplicam ao recurso.
    • allowPolicyExplanation: um resumo que indica se as políticas de permissão relevantes concedem a autorização ao principal, seguido de uma lista de políticas de permissão e das respetivas associações de funções.

      Para cada política de autorização, a resposta lista todas as associações de funções na política e avalia-as com base nos seguintes critérios:

      • Se a associação de funções inclui a autorização.
      • Se a associação de funções inclui o principal.
      • Se as condições na atribuição de função, se existirem, são cumpridas.

      Em seguida, a resposta imprime o texto JSON completo da política de autorização.

    • denyPolicyExplanation: um resumo que indica se as políticas de negação relevantes negam a permissão ao principal, seguido de uma lista de recursos com políticas de negação. Para cada recurso, a resposta lista todas as políticas de recusa anexadas ao recurso.

      Para cada política de recusa, a resposta imprime os metadados da política, lista as regras de recusa na política e, em seguida, avalia cada regra com base nos seguintes critérios:

      • Se a regra de recusa inclui a autorização.
      • Se a autorização está listada como uma exceção na regra de recusa.
      • Se a regra de recusa inclui o principal.
      • Se o principal está listado como uma exceção na regra de recusa.
      • Se as condições na regra de recusa, se existirem, forem cumpridas.
    • pabPolicyExplanation: um resumo que indica se as políticas de limite de acesso principal relevantes permitem que o principal aceda ao recurso, seguido das associações de políticas de limite de acesso principal relevantes e das políticas de limite de acesso principal.

      As políticas de limite de acesso principal podem permitir o acesso, não permitir o acesso ou não ser aplicadas. As políticas de limite de acesso principal não são aplicadas nas seguintes situações:

      • O IAM não aplica a autorização especificada na versão de aplicação da política de limite de acesso principal. Como resultado, a política de limite de acesso principal não pode bloquear o acesso.
      • Devido a uma condição na associação de políticas, a política ou a associação de limites de acesso principal não se aplica ao principal.
      • Uma política de limite de acesso principal não tem regras.

      Se uma política de limite de acesso principal não for aplicada, não pode afetar se o principal pode aceder ao recurso.

      A resposta também lista todas as associações de políticas que incluem o principal e os detalhes da política de limite de acesso principal em cada uma dessas associações de políticas:

      • Para cada associação de políticas de limites de acesso principais, a resposta imprime se a associação de políticas é aplicada para o principal e, em seguida, imprime o texto da associação de políticas. Uma associação de políticas é aplicada se o principal definido na associação incluir o principal consultado e se a condição na associação de políticas for avaliada como true para o principal consultado. Se a associação de políticas não for aplicada, a política não pode afetar se o principal pode aceder ao recurso.
      • Para cada política de limite de acesso principal, a resposta imprime o seguinte:

        • Se a política permite o acesso, não permite o acesso ou não é aplicada.
        • A versão de aplicação da política. Este número de versão determina se o IAM aplica esta política de limite de acesso principal à autorização consultada. Se a autorização não for aplicada, a política não pode afetar a capacidade do principal de aceder ao recurso.
        • As regras na política de limite de acesso principal e se cada regra permite o acesso. Para cada regra, a resposta indica se o recurso consultado está incluído na regra.

          Um recurso é incluído numa regra se uma das seguintes afirmações for verdadeira:

          • O recurso está listado na regra. Apenas os recursos do Resource Manager (projetos, pastas e organizações) podem ser listados diretamente nas regras de limite de acesso principal.
          • Um dos antecessores do recurso (ou seja, um projeto, uma pasta ou uma organização acima do recurso na hierarquia de recursos) está listado na regra.

    Muitos objetos na resposta também têm um campo relevance. O valor neste campo indica a contribuição desse objeto para o estado de acesso geral. O campo relevance pode ter os seguintes valores:

    • HEURISTIC_RELEVANCE_HIGH: indica que o objeto tem um forte impacto no resultado. Por outras palavras, a remoção do objeto vai provavelmente alterar o estado de acesso geral. Por exemplo, uma associação de funções que concede ao principal a autorização especificada teria este valor de relevância.

    • HEURISTIC_RELEVANCE_NORMAL: indica que o objeto tem um impacto limitado no resultado. Por outras palavras, é pouco provável que a remoção do objeto altere o estado de acesso geral. Por exemplo, uma regra de recusa que não contenha a autorização ou o principal teria este valor de relevância.

    Resolução de problemas de associações de funções condicionais

    A resolução de problemas de políticas resolve automaticamente as associações de funções condicionais e as regras de negação com base em etiquetas. Também resolve automaticamente problemas de associações de políticas de limite de acesso principal com condições com base em principais.

    Para resolver problemas de outros tipos de associações de funções condicionais ou regras de negação condicionais, a ferramenta de resolução de problemas de políticas precisa de contexto adicional acerca do pedido. Por exemplo, para resolver problemas de condições baseadas em atributos de data/hora, a resolução de problemas de políticas precisa da hora do pedido.

    Na CLI gcloud e na API REST, fornece este contexto adicional manualmente.

    Na Google Cloud consola, pode fornecer este contexto adicional resolvendo problemas diretamente a partir de qualquer registo de auditoria da atividade do administrador ou registo de auditoria de acesso aos dados. Cada entrada do registo de auditoria corresponde a um pedido à APIGoogle Cloud ou a uma ação que a Google Cloud realiza em seu nome. Quando resolve problemas a partir de um registo de auditoria, a ferramenta de resolução de problemas de políticas recebe automaticamente informações adicionais sobre o pedido, como a data e a hora, o que permite à ferramenta de resolução de problemas de políticas analisar as associações de funções condicionais e as regras de recusa.

    Consola

    Para resolver problemas de associações de funções condicionais e regras de negação, faça o seguinte:

    1. Na Google Cloud consola, aceda à página Explorador de registos.

      Aceda ao Explorador de registos

    2. Se o título da página for Visualizador de registos antigo, clique na lista pendente Atualizar e selecione Atualizar para o novo Explorador de registos.

    3. Para ver apenas os registos de auditoria de atividade do administrador e de acesso aos dados, introduza a seguinte consulta no criador de consultas e, de seguida, clique em Executar consulta:

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

      Substitua os seguintes valores:

      • RESOURCE_TYPE: o tipo de recurso para o qual está a listar os registos de auditoria. Use projects, folders ou organizations.
      • RESOURCE_ID: o ID do seu recurso.
    4. Localize a entrada do registo de auditoria que corresponde ao pedido para o qual quer resolver problemas. Para saber como usar o Explorador de registos para encontrar entradas de registo específicas, consulte o artigo Usar o Explorador de registos.

    5. Na coluna Resumo da entrada do registo, clique em IAM e, de seguida, clique em Resolver problema de acesso.

      A resolução de problemas de políticas usa as informações na entrada do registo para resolver problemas de acesso e, em seguida, mostra-lhe os resultados. O contexto adicional é apresentado nos detalhes da avaliação em Contexto da condição. Para ver os detalhes do contexto, clique em Ver contexto da condição. Para saber mais sobre a página de resultados do resolução de problemas de políticas, consulte a secção Compreender os resultados da resolução de problemas nesta página.

    6. Opcional: para resolver problemas de outro pedido que envolva associações de funções condicionais e regras de recusa, regresse à página do Explorador de registos e repita os passos anteriores.

    gcloud

    Para resolver problemas de associações de funções condicionais e regras de recusa, use o comando gcloud policy-troubleshoot iam.

    Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • EMAIL: o endereço de email do principal cujas autorizações quer resolver.
    • RESOURCE: o recurso no qual a autorização é concedida.
    • PERMISSION: a autorização para a qual quer resolver problemas.
    • DESTINATION_IP: opcional. O endereço IP de destino do pedido a usar ao verificar as associações de funções condicionais. Por exemplo, 198.1.1.1.
    • DESTINATION_PORT: opcional. A porta de destino a usar ao verificar as associações de funções condicionais. Por exemplo, `8080`.
    • REQUEST_TIME: opcional. A data/hora do pedido a usar ao verificar as associações de funções condicionais. Use uma indicação de tempo no formato RFC 3339, por exemplo, 2099-02-01T00:00:00Z.
    • RESOURCE_NAME: opcional. O valor do nome do recurso a usar ao verificar as associações de funções condicionais. Para ver uma lista dos formatos de nomes de recursos aceites, consulte o artigo Formato do nome do recurso.
    • RESOURCE_SERVICE: opcional. O valor do serviço de recursos a usar ao verificar as associações de funções condicionais. Para ver uma lista dos nomes de serviços aceites, consulte os valores dos serviços de recursos.
    • RESOURCE_TYPE: opcional. Para ver uma lista dos tipos de recursos aceites, consulte os valores do tipo de recurso.

    Execute o comando gcloud policy-troubleshoot iam:

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

    A resposta contém uma explicação do acesso do diretor. Para cada associação de função e regra de negação com uma condição, a resposta inclui um campo conditionExplanation que descreve se a condição é avaliada como verdadeira ou falsa com base no contexto da condição que forneceu.

    Por exemplo, segue-se uma avaliação de uma associação de funções com uma condição que especifica o tipo de recurso e o serviço de recursos:

    Resposta

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

    Para resolver problemas de associações de funções condicionais e regras de recusa, use o método iam.troubleshoot da API Policy Troubleshooter.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • EMAIL: o endereço de email do principal cujas autorizações quer resolver.
    • RESOURCE: o recurso no qual a autorização é concedida.
    • PERMISSION: a autorização para a qual quer resolver problemas.
    • DESTINATION_IP: opcional. O endereço IP de destino do pedido a usar ao verificar as associações de funções condicionais. Por exemplo, 198.1.1.1.
    • DESTINATION_PORT: opcional. A porta de destino a usar ao verificar as associações de funções condicionais. Por exemplo, `8080`.
    • REQUEST_TIME: opcional. A data/hora do pedido a usar ao verificar as associações de funções condicionais. Use uma data/hora no formato RFC 3339, por exemplo, 2099-02-01T00:00:00Z.
    • RESOURCE_NAME: opcional. O valor do nome do recurso a usar ao verificar as associações de funções condicionais. Para ver uma lista dos formatos de nomes de recursos aceites, consulte o artigo Formato do nome do recurso.
    • RESOURCE_SERVICE: opcional. O valor do serviço de recursos a usar ao verificar as associações de funções condicionais. Para ver uma lista dos nomes de serviços aceites, consulte os valores dos serviços de recursos.
    • RESOURCE_TYPE: opcional. Para ver uma lista dos tipos de recursos aceites, consulte os valores do tipo de recurso.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

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

    Para enviar o seu pedido, expanda uma destas opções:

    A resposta contém uma explicação do acesso do diretor. Para cada associação de função e regra de negação com uma condição, a resposta inclui um campo conditionExplanation que descreve se a condição é avaliada como verdadeira ou falsa com base no contexto da condição que forneceu.

    Por exemplo, segue-se uma avaliação de uma associação de funções com uma condição que especifica o tipo de recurso e o serviço de recursos:

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

    O que se segue?