Resolver problemas com permissões do IAM

O solucionador de problemas de políticas ajuda a entender se um principal possam acessar um recurso. Com um principal, um recurso e uma permissão, O solucionador de problemas de políticas examina as políticas de permissão e negação e de limite de acesso principal (PAB, na sigla em inglês) que afetam o acesso do principal. Depois, ele informa se, com base nessas políticas, o principal pode usar a permissão especificada para acessar o recurso. Ele também lista os dados e explica como elas afetam o acesso do principal.

Acesse o solucionador de problemas de políticas o console do Google Cloud, a Google Cloud CLI ou a API REST. Para o Basic consultas usando o console do Google Cloud é normalmente mais rápido. Para casos mais complexos, considere a CLI gcloud ou a API REST.

Antes de começar

  • Ative a API Policy Troubleshooter.

    Ative a API

Permissões necessárias

Para resolver todos os problemas você precisa ter os seguintes permissões.

Permissões para resolver problemas de acesso de principais individuais

O solucionador de problemas de políticas analisa o acesso de um principal a um recurso com base nas políticas de permissão, negação, limite de acesso principal e que você tem permissão para visualizar. Se você não tiver permissão para ver uma política que se aplica a um recurso ou se você não tiver permissão para visualizar um papel personalizado, talvez não seja possível saber se um principal tem acesso.

Para ter as permissões necessárias para resolver problemas de acesso de um principal, peça ao administrador para conceder a você os seguintes papéis do IAM na organização:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Permissões para resolver problemas de acesso de participantes do grupo

Se as políticas de permissão e negação incluírem grupos, você vai precisar da permissão do Google Workspace Permissão da API Admin groups.read para resolver problemas de acesso a um grupo específico membros. Os superadministradores e administradores de grupo têm essa permissão automaticamente. Para conceder essa permissão a um usuário que não seja um superadministrador ou administrador de grupo, crie um administrador do Google Workspace de usuário que contém o Privilégio groups.read (localizado em Privilégios da API administrativa) e concedê-lo a o usuário.

Se você não tiver essas permissões, as vinculações de papéis e as regras de negação que contêm grupos ou domínios terão um resultado de acesso Desconhecido, a menos que a vinculação do papel de negação ou de negação também inclui explicitamente o principal.

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

Se as políticas de permissão e negação incluírem uma conta do Google Workspace ou domínio do Cloud Identity, você precisa ser um administrador de domínio para resolver problemas para membros individuais do domínio.

Se você não tiver essas permissões, as vinculações de papéis e as regras de negação que contêm grupos ou domínios terão um resultado de acesso Desconhecido, a menos que a vinculação do papel de negação ou de negação também inclui explicitamente o principal.

Resolver problemas no acesso

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

  • Principal: o endereço de e-mail a ser verificado. Esse endereço precisa se referir a uma conta de usuário ou de serviço. Outros tipos de principais, incluindo grupos, domínios, identidades de força de trabalho e identidades de carga de trabalho.
  • Recurso: o nome completo do recurso. Por exemplo, para verificar o projeto my-project, digite //cloudresourcemanager.googleapis.com/projects/my-project. Para outros tipos de recursos, consulte os exemplos de nomes completos de recursos.
  • Permissão: a permissão para verificar. Se você usar o método O console do Google Cloud apresenta uma lista de sugestões enquanto você digita.

    Para resolver problemas de uma permissão, ela precisa ser aplicável à recurso na solicitação. Em outras palavras, deve ser possível usar essa para acessar o recurso de alguma forma. Se a permissão não for aplicável ao recurso, a solicitação falhará. Por exemplo, se você tentar para solucionar problemas da permissão compute.instances.get para um cluster do Google Kubernetes Engine, a solicitação falhará porque o Não é possível usar a permissão compute.instance.get para acessar clusters do Google Kubernetes Engine.

    Para uma lista completa de permissões, consulte as permissões como referência.

Console

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

  1. No console do Google Cloud, acesse o Solucionador de problemas de políticas página.

    Acesse o solucionador de problemas de políticas

  2. Insira o e-mail do principal com o acesso que você quer verificar.

  3. Insira o nome completo do recurso a ser verificado.

    Se você não souber o nome completo do recurso, siga um destes procedimentos:

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

      1. Na caixa Selecionar escopo, selecione um projeto, uma pasta ou organização para pesquisar.
      2. Na caixa Tipo de recurso, selecione os tipos de recurso que você quer pesquisar.
      3. Na caixa Pesquisar recursos, digite uma parte do recurso. nome.
      4. Na seção de resultados, selecione o recurso que você quer verificar.
      5. Clique em Selecionar para escolher o recurso e feche a caixa de diálogo.
  4. Insira a permissão a ser verificada.

    Se você não souber o nome completo da permissão, comece a digitar para ver o preenchimento automático .

  5. Opcional: para verificar vários recursos e permissões, selecione Adicionar outro par e repita a etapa anterior.

  6. Clique em Verificar acesso.

gcloud

Para descobrir por que um principal tem ou não uma permissão do IAM, use o gcloud beta policy-troubleshoot iam kubectl.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • VERSION: opcional. A versão do comando a ser usada. Para resolver problemas acesso baseado somente em políticas de permissão e negação, não especifique uma versão. Para resolver problemas de acesso com base nas políticas de permissão, negação e limite de acesso principal, use a versão beta.
  • EMAIL: o endereço de e-mail do participante com permissões que você quer resolver.
  • RESOURCE: o recurso em que a permissão é concedida.
  • PERMISSION: a permissão que você quer resolver.

Execute o gcloud beta policy-troubleshoot iam (em inglês) comando:

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

Você receberá uma resposta semelhante a esta:

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 descobrir por que um principal tem ou não uma permissão do IAM, use o comando iam.troubleshoot .

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • VERSION: a versão da API a ser usada para essa solicitação. Para resolver problemas com base apenas nas políticas de permissão e negação, use v3. Para resolver problemas de acesso com base nas políticas de permissão, negação e limite de acesso principal, use v3beta.
  • EMAIL: o endereço de e-mail do participante com permissões que você quer resolver.
  • RESOURCE: o recurso em que a permissão é concedida.
  • PERMISSION: a permissão que você quer resolver.
  • PROJECT_ID: o ID do projeto que você quer usar para fazer a solicitação. Os IDs do projeto são strings alfanuméricas, como my-project.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

Entender os resultados do solucionador de problemas

Console

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

Detalhes da avaliação

A seção Detalhes da avaliação contém um resumo do acesso que você está solução de problemas, incluindo o principal, o recurso e a permissão especificados. Se estiver solucionando vários pares de permissões de recursos, poderá usar o Acesse a lista de avaliação para alternar entre eles.

Detalhes da política

A seção Detalhes da política contém detalhes sobre como as permissões, negar, e as políticas de limite de acesso do principal afetam o acesso do principal.

As políticas de limite de acesso principal relevantes incluem todas as políticas de limite de acesso principal que estão vinculados como um conjunto de principais que inclui o principal.

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

  • A política de permissão do recurso
  • As políticas de negação do recurso, se houver
  • As políticas de permissão do projeto pai, pasta e organização do recurso, se houver
  • As políticas de negação do projeto pai, da pasta e da organização do recurso, se houver

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

Por exemplo, se uma política de negação para uma organização disser que um principal não pode usar uma permissão específica, o principal não poderá usar essa permissão para nenhum recurso dentro da organização. Essa regra se aplica mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que dão ao principal a permissão.

Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma permissão específica, o principal terá essa permissão para qualquer recurso no projeto, desde que essa permissão não seja negada.

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

Estado de acesso

A seção Estado de acesso resume os resultados de cada tipo de política (políticas de limite de acesso principais, políticas de negação e políticas de permissão) e estabelece a o resultado geral. O resultado indica se o principal é capaz de usar o permissão para acessar o recurso, de acordo com as políticas relevantes.

Para que um usuário possa usar a permissão para acessar o recurso, todas as políticas precisam permitir o acesso. Para mais informações, consulte Política de avaliação.

Política de limite de acesso principal

Na seção Política de limite de acesso principal, é possível conferir políticas de limite de acesso principal às quais o principal está sujeito e a política vinculações que vinculam essas políticas ao principal.

O painel Políticas lista todas as políticas vinculadas a um conjunto principal que inclui o principal. Ao lado de cada política há um ícone indicando como essa afeta o acesso do principal.

As políticas de limite de acesso principal podem afetar o acesso de um principal na da seguinte maneira:

  • O principal é qualificado para acessar o recurso: a política de limite de acesso principal se aplica ao principal, e uma das regras dele tiver o recurso consultado.
  • O principal não está qualificado para acesso do recurso: a política de limite de acesso principal se aplica ao principal, mas o recurso consultado não esteja nas regras dessa política.
  • Não aplicado: As políticas de limite de acesso principal não são aplicadas nas seguintes situações:

    Se uma política de limite de acesso principal não for aplicada, ela não poderá afetar a o principal possa acessar o recurso.

Para conferir as regras e vinculações associadas a uma política de limite de acesso principal, clique no nome da política. O painel adjacente ao painel Políticas exibe o os detalhes dessa política.

Para conferir as regras na política, clique na guia Regras de limite. Esta guia exibe uma tabela das regras de política de limite de acesso principal relevantes.

Uma regra de limite de acesso principal é relevante se a regra afetar o resultado geral do a consulta do solucionador de problemas de políticas. Por isso, as regras relevantes variam de acordo com os resultados do solucionador. Por exemplo: considere as seguintes situações:

  • O solucionador de problemas de políticas indica que o principal pode acessar o recurso. Como resultado, as regras relevantes são as que fazem principal qualificado para acessar o recurso.
  • O solucionador de problemas de políticas indica que o principal não pode acessar o recurso. No entanto, de acordo com as políticas relevantes de limite de acesso principal, principal é elegível para acessar o recurso. Por isso, nenhuma regra é relevante, porque as políticas de limite de acesso principal não são o motivo pelo qual o principal não possa acessar o recurso.
  • O solucionador de problemas de políticas indica que o principal não pode acessar o recurso. Além disso, de acordo com o limite de acesso principal relevante, políticas, o principal não estará qualificado para acessar o recurso. Como resultado, as regras relevantes são as que não qualificam o principal para acessar o recurso.

Para acessar todas as regras de limite de acesso principal em uma política, desmarque a opção Mostrar apenas relevantes regras e vinculações.

A coluna Descobertas na tabela de regras de limite indica se o regra de limite de acesso principal contém o recurso consultado. Para mais detalhes sobre regra, clique em Ver detalhes da regra.

Para conferir as vinculações de política da política, clique na guia Vinculações. Esta guia exibe uma tabela das vinculações de política relevantes para os política de limite de acesso principal.

Uma vinculação de política será relevante se aplicar efetivamente o limite de acesso principal política para o principal consultado. Para que uma vinculação de política aplique uma política de limite de acesso principal a um principal, o seguinte precisa ser verdadeiro:

  • O principal definido na vinculação da política precisa incluir o principal consultado.
  • Todas as condições na vinculação da política precisam ser avaliadas como true para o objeto consultado. principal.

Para conferir todas as vinculações de política com conjuntos de principais que incluem a consulta principal, independentemente de ele atender à condição a vinculação, desmarque a caixa de seleção Mostrar apenas regras e vinculações relevantes.

A coluna Descobertas na tabela de vinculações indica se a vinculação está aplicada ao principal consultado. Para acessar mais detalhes sobre a política vinculação, clique em Ver detalhes da vinculação.

Política de negação

Na seção Política de negação, é possível conferir todas as políticas relevantes. identificar regras de negação que negam acesso ao principal e entender por que uma nega ou não nega a permissão ao principal.

O painel Recursos com políticas de negação lista todas as políticas de negação relevantes. e são organizados pelos recursos aos quais estão anexados. Ao lado de cada política de negação, há um avaliação do acesso. Essa avaliação só se aplica a essa política de negação, não reflete nenhum acesso das políticas herdadas. Se você não têm permissão para consultar a política de negação de um recurso, a lista de recursos não podem incluir esse recurso ou suas políticas de negação.

Para conferir as regras de negação relevantes nessas políticas, clique em uma delas. Para visualizar todas as regras de negação nas políticas de negação de um recurso, clique em um recurso. Negação aparecem no painel Negar regras. Este painel contém uma tabela de todas as recusas com o principal ou a permissão consultada do recurso ou da política de negação que você selecionou.

A coluna Acesso indica se a regra de negação nega o principal que permissão. Para conferir mais detalhes sobre a regra de negação, clique em Ver regra de negação na à linha dessa regra.

Política de permissão

Na seção Política de permissão, você pode conferir todas as permissões políticas, identificar vinculações de papéis que concedem acesso ao principal e entendam por que uma vinculação de papel dá ou não ao principal permissão.

O painel Recursos lista o recurso especificado e os ancestrais dele. Ao lado de cada recurso é uma avaliação de acesso. Esta avaliação se aplica apenas a política de permissão do recurso. Ela não reflete nenhum acesso de herdada .. Se você não tiver permissão para visualizar o política de permissão, a lista de recursos não incluirá esse recurso.

Para conferir as vinculações de papéis relevantes na política de permissão de um recurso, confira como eles concedem ou não a permissão ao principal, clique no recurso. As vinculações de papéis da política de permissão aparecem em Vinculações de papéis. .

O painel Vinculações de papéis contém uma tabela de vinculações de papéis na política de permissão do recurso selecionado. Por padrão, a tabela contém apenas papéis vinculações que incluem um papel com a permissão especificada. Se o principal não tiver acesso, a tabela também mostrará vinculações de papéis com funções personalizadas editáveis. Para ver todas as vinculações de papéis, desmarque a opção Mostrar somente de vinculações relevantes.

A coluna Acesso indica se a vinculação de papel dá ao principal o permissão. Para conferir mais detalhes sobre a vinculação de papéis, clique em Ver vinculação details na linha dessa vinculação.

gcloud

A resposta contém quatro seções principais: uma descrição da tupla de acesso em a solicitação, os resultados da avaliação da política de permissão, os resultados da a avaliação da política de negação e o estado de acesso geral.

  • accessTuple: uma descrição da tupla de acesso na solicitação. incluindo qualquer contexto de condição que você tenha fornecido. Esta seção também contém um resumo das tags que se aplicam ao recurso.
  • allowPolicyExplanation: um resumo se a permissão relevante As políticas concedem a permissão ao principal, seguida por uma lista de solicitações e as vinculações de papéis de cada uma.

    Para cada política de permissão, a resposta lista todas as vinculações de papéis na política e as avalia com base nos seguintes critérios:

    • Indica se a vinculação do papel inclui a permissão.
    • Indica se a vinculação de papel inclui o principal.
    • Se as condições na vinculação do papel, se houver, foram atendidas.

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

  • denyPolicyExplanation: um resumo que informa se a negação relevante As políticas negam a permissão ao principal, seguida por uma lista de recursos com políticas de negação. Para cada recurso, a resposta lista todas as políticas de negação anexada ao recurso.

    Para cada política de negação, a resposta imprime os metadados dela, listando os de negação de serviço na política e, em seguida, avalia cada regra com base nos seguintes critérios:

    • Se a regra de negação inclui a permissão.
    • Se a permissão está listada como uma exceção na regra de negação.
    • Indica se a regra de negação inclui o principal.
    • Se o principal está listado como uma exceção na regra de negação.
    • Se as condições na regra de negação, se houver, são atendidas.
  • overallAccessState: se o principal pode usar o uma permissão específica para acessar o recurso especificado com base políticas de permissão, negação e de limite de acesso principal.

    As políticas de limite de acesso principal relevantes incluem todas as políticas de limite de acesso principal que estão vinculados como um conjunto de principais que inclui o principal.

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

    • A política de permissão do recurso
    • As políticas de negação do recurso, se houver
    • As políticas de permissão do projeto pai, pasta e organização do recurso, se houver
    • As políticas de negação do projeto pai, da pasta e da organização do recurso, se houver

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

    Por exemplo, se uma política de negação para uma organização disser que um principal não pode usar uma permissão específica, o principal não poderá usar essa permissão para nenhum recurso dentro da organização. Essa regra se aplica mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que dão ao principal a permissão.

    Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma permissão específica, o principal terá essa permissão para qualquer recurso no projeto, desde que essa permissão não seja negada.

    Para que um usuário possa usar a permissão para acessar o recurso, todas as os tipos de política precisam permitir o acesso. Para mais informações, consulte Avaliação da política.

  • pabPolicyExplanation: um resumo se a propriedade as políticas de limite de acesso principal permitem que o principal acesse a seguido pelas vinculações relevantes da política de limite de acesso principal e e as políticas de limite de acesso principal.

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

    Se uma política de limite de acesso principal não for aplicada, ela não poderá afetar a o principal possa acessar o recurso.

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

    • Para cada vinculação da política de limite de acesso principal, a resposta mostra se a vinculação da política é aplicada para o principal e, em seguida, imprime o texto de a vinculação de política. Uma vinculação de política será aplicada se o principal definido no a vinculação incluirá o principal consultado e, se a condição no A vinculação de política é avaliada como true para o principal consultado. Se a vinculação da política não for aplicada, a política não poderá afetar a o principal possa acessar o recurso.
    • Para cada política de limite de acesso principal, a resposta imprime o seguinte:

      • Se a política permite ou não o acesso. aplicadas.
      • A versão de aplicação da política. Este número de versão determina se o IAM aplica isso política de limite de acesso principal para a permissão consultada. Se o permissão não for aplicada, a política não poderá afetar se o principal possa acessar o 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 recurso consultado é incluído na regra.

        Um recurso será incluído em uma regra se uma das seguintes condições for verdadeira:

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

Muitos objetos na resposta também têm um campo relevance. O valor neste indica o quanto esse objeto contribui 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 na o resultado. Em outras palavras, a remoção do objeto provavelmente mudará a o estado de acesso. Por exemplo, uma vinculação de papel que concede ao principal específica teria esse valor de relevância.

  • HEURISTIC_RELEVANCE_NORMAL: indica que o objeto tem impacto limitado. no resultado. Em outras palavras, é improvável que a remoção do objeto mude a o estado de acesso geral. Por exemplo, uma regra de negação que não contenha o permissão ou o principal teria esse valor de relevância.

REST

A resposta contém quatro seções principais: o estado geral do acesso, uma descrição da tupla de acesso na solicitação, os resultados da política de permissão e os resultados da avaliação da política de negação.

  • overallAccessState: se o principal pode usar o uma permissão específica para acessar o recurso especificado com base políticas de permissão, negação e de limite de acesso principal.

    As políticas de limite de acesso principal relevantes incluem todas as políticas de limite de acesso principal que estão vinculados como um conjunto de principais que inclui o principal.

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

    • A política de permissão do recurso
    • As políticas de negação do recurso, se houver
    • As políticas de permissão do projeto pai, pasta e organização do recurso, se houver
    • As políticas de negação do projeto pai, da pasta e da organização do recurso, se houver

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

    Por exemplo, se uma política de negação para uma organização disser que um principal não pode usar uma permissão específica, o principal não poderá usar essa permissão para nenhum recurso dentro da organização. Essa regra se aplica mesmo que as pastas e os projetos nessa organização tenham políticas de negação mais permissivas ou permitam políticas que dão ao principal a permissão.

    Da mesma forma, se uma política de permissão para um projeto conceder a um principal uma permissão específica, o principal terá essa permissão para qualquer recurso no projeto, desde que essa permissão não seja negada.

    Para que um usuário possa usar a permissão para acessar o recurso, todas as os tipos de política precisam permitir o acesso. Para mais informações, consulte Avaliação da política.

  • accessTuple: uma descrição da tupla de acesso na solicitação. incluindo qualquer contexto de condição que você tenha fornecido. Esta seção também contém um resumo das tags que se aplicam ao recurso.
  • allowPolicyExplanation: um resumo se a permissão relevante As políticas concedem a permissão ao principal, seguida por uma lista de solicitações e as vinculações de papéis de cada uma.

    Para cada política de permissão, a resposta lista todas as vinculações de papéis na política e as avalia com base nos seguintes critérios:

    • Indica se a vinculação do papel inclui a permissão.
    • Indica se a vinculação de papel inclui o principal.
    • Se as condições na vinculação do papel, se houver, foram atendidas.

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

  • denyPolicyExplanation: um resumo que informa se a negação relevante As políticas negam a permissão ao principal, seguida por uma lista de recursos com políticas de negação. Para cada recurso, a resposta lista todas as políticas de negação anexada ao recurso.

    Para cada política de negação, a resposta imprime os metadados dela, listando os de negação de serviço na política e, em seguida, avalia cada regra com base nos seguintes critérios:

    • Se a regra de negação inclui a permissão.
    • Se a permissão está listada como uma exceção na regra de negação.
    • Indica se a regra de negação inclui o principal.
    • Se o principal está listado como uma exceção na regra de negação.
    • Se as condições na regra de negação, se houver, são atendidas.
  • pabPolicyExplanation: um resumo se a propriedade as políticas de limite de acesso principal permitem que o principal acesse a seguido pelas vinculações relevantes da política de limite de acesso principal e e as políticas de limite de acesso principal.

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

    Se uma política de limite de acesso principal não for aplicada, ela não poderá afetar a o principal possa acessar o recurso.

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

    • Para cada vinculação da política de limite de acesso principal, a resposta mostra se a vinculação da política é aplicada para o principal e, em seguida, imprime o texto de a vinculação de política. Uma vinculação de política será aplicada se o principal definido no a vinculação incluirá o principal consultado e, se a condição no A vinculação de política é avaliada como true para o principal consultado. Se a vinculação da política não for aplicada, a política não poderá afetar a o principal possa acessar o recurso.
    • Para cada política de limite de acesso principal, a resposta imprime o seguinte:

      • Se a política permite ou não o acesso. aplicadas.
      • A versão de aplicação da política. Este número de versão determina se o IAM aplica isso política de limite de acesso principal para a permissão consultada. Se o permissão não for aplicada, a política não poderá afetar se o principal possa acessar o 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 recurso consultado é incluído na regra.

        Um recurso será incluído em uma regra se uma das seguintes condições for verdadeira:

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

Muitos objetos na resposta também têm um campo relevance. O valor neste indica o quanto esse objeto contribui 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 na o resultado. Em outras palavras, a remoção do objeto provavelmente mudará a o estado de acesso. Por exemplo, uma vinculação de papel que concede ao principal específica teria esse valor de relevância.

  • HEURISTIC_RELEVANCE_NORMAL: indica que o objeto tem impacto limitado. no resultado. Em outras palavras, é improvável que a remoção do objeto mude a o estado de acesso geral. Por exemplo, uma regra de negação que não contenha o permissão ou o principal teria esse valor de relevância.

Solução de problemas em vinculações de papéis condicionais

O solucionador de problemas de políticas soluciona automaticamente vinculações de papéis e regras de negação com base em tags. Ela também resolve automaticamente os problemas das vinculações de política de limite de acesso principal com condições com base nos principais.

Para resolver problemas de outros tipos de vinculações de papéis condicionais ou regras de negação condicional, o solucionador de problemas de políticas contexto sobre a solicitação. Por exemplo, para solucionar problemas de condições de data/hora, o solucionador de problemas de políticas precisa do horário do solicitação.

Na CLI gcloud e na API REST, você fornece esse contexto adicional manualmente.

No console do Google Cloud, é possível dar mais contexto solução de problemas diretamente em qualquer registro de auditoria de atividades do administrador ou Registro de auditoria de acesso a dados. Cada entrada de registro de auditoria corresponde a um para um uma API do Google Cloud ou uma ação que o Google Cloud executa nome de usuário. Quando você resolve problemas em um registro de auditoria, O solucionador de problemas de políticas recebe informações adicionais automaticamente sobre a solicitação, como data e hora, o que permite Solucionador de problemas de políticas para analisar vinculações de papéis condicionais e e negar regras.

Console

Para resolver problemas de vinculações de papéis condicionais e regras de negação, faça o seguinte:

  1. No console do Google Cloud, acesse a página do Explorador de registros.

    Acessar o Explorador de registros

  2. Se o título da página for Visualizador de registros legados, clique na lista suspensa Upgrade e selecione Fazer upgrade para o novo Explorador de registros.

  3. Para visualizar somente os registros de auditoria de Atividade do administrador e Acesso a dados, insira a seguinte consulta no criador de consultas e 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 que está listando os registros de auditoria. Use projects, folders ou organizations.
    • RESOURCE_ID: o ID do recurso.
  4. Localize a entrada de registro de auditoria que corresponde à solicitação que você quer solucionar. Para saber como usar o Explorador de registros para encontrar entradas de registro específicas, consulte Como usar o Explorador de registros.

  5. Na coluna Resumo da entrada de registro, clique em IAM e em Resolver problemas de acesso.

    O solucionador de problemas de políticas usa as informações na entrada de registro para solucionar problemas de acesso e, em seguida, mostra os resultados. O contexto adicional está listada nos detalhes da avaliação em Contexto da condição. Para acessar detalhes do contexto, clique em Ver contexto da condição. Para saber mais sobre o do solucionador de problemas de políticas, consulte Entender Resultados do solucionador de problemas nesta página.

  6. Opcional: para resolver problemas de outra solicitação que envolve o papel condicional vinculações e regras de negação, retorne à página da Análise de registros e repita etapas anteriores.

gcloud

Para resolver problemas de vinculações de papéis condicionais e regras de negação, use o gcloud policy-troubleshoot iam kubectl.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • EMAIL: o endereço de e-mail do principal cujo que você quer resolver.
  • RESOURCE: o recurso em que a permissão está concedido.
  • PERMISSION: a permissão que você quer solucionar problemas.
  • DESTINATION_IP: opcional. O IP de destino da solicitação endereço a ser usado ao verificar vinculações de papéis condicionais. Por exemplo, 198.1.1.1.
  • DESTINATION_PORT: opcional. O destino da solicitação porta a ser usada ao verificar vinculações de papéis condicionais. Por exemplo, "8080".
  • REQUEST_TIME: opcional. O carimbo de data/hora da solicitação a ser usada ao verificar vinculações de papéis condicionais. Use um carimbo de data/hora no RFC 3339, por exemplo, 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: opcional. O valor do nome do recurso a usar ao verificar vinculações de papéis condicionais. Para uma lista de recursos aceitos formatos de nome, consulte Nome do recurso formato.
  • RESOURCE_SERVICE: opcional. O serviço de recurso o valor a ser usado ao verificar vinculações de papéis condicionais. Para uma lista de imagens nomes de serviço, consulte Recurso valores de serviço.
  • RESOURCE_TYPE: opcional. Para uma lista de imagens tipos de recursos, consulte Tipo de recurso de imagem.

Execute o gcloud policy-troubleshoot iam (em inglês) comando:

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 principal. Para cada função regra de vinculação e negação com uma condição, a resposta inclui uma Campo conditionExplanation que descreve se a condição avalia como verdadeiro ou falso com base no contexto da condição que você informou.

Por exemplo, veja a seguir uma avaliação de uma vinculação de papel com uma condição que especifica tipo e serviço do recurso:

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 vinculações de papéis condicionais e regras de negação, use os recursos iam.troubleshoot .

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • EMAIL: o endereço de e-mail do principal cujo que você quer resolver.
  • RESOURCE: o recurso em que a permissão está concedido.
  • PERMISSION: a permissão que você quer solucionar problemas.
  • DESTINATION_IP: opcional. O IP de destino da solicitação endereço a ser usado ao verificar vinculações de papéis condicionais. Por exemplo, 198.1.1.1.
  • DESTINATION_PORT: opcional. O destino da solicitação porta a ser usada ao verificar vinculações de papéis condicionais. Por exemplo, "8080".
  • REQUEST_TIME: opcional. O carimbo de data/hora da solicitação a ser usada ao verificar vinculações de papéis condicionais. Use um carimbo de data/hora no RFC 3339, por exemplo, 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: opcional. O valor do nome do recurso a usar ao verificar vinculações de papéis condicionais. Para uma lista de recursos aceitos formatos de nome, consulte Nome do recurso formato.
  • RESOURCE_SERVICE: opcional. O serviço de recurso o valor a ser usado ao verificar vinculações de papéis condicionais. Para uma lista de imagens nomes de serviço, consulte Recurso valores de serviço.
  • RESOURCE_TYPE: opcional. Para uma lista de imagens tipos de recursos, consulte Tipo de recurso de imagem.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, expanda uma destas opções:

A resposta contém uma explicação do acesso do principal. Para cada função regra de vinculação e negação com uma condição, a resposta inclui uma Campo conditionExplanation que descreve se a condição avalia como verdadeiro ou falso com base no contexto da condição que você informou.

Por exemplo, veja a seguir uma avaliação de uma vinculação de papel com uma condição que especifica tipo e serviço do recurso:

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

A seguir