Solução de problemas de acesso

O solucionador de problemas de políticas facilita a compreensão do motivo pelo qual um usuário tem acesso a um recurso ou não tem permissão para chamar uma API. Com um e-mail, um recurso e uma permissão, o solucionador de problemas de políticas examinará todas as políticas de gerenciamento de identidade e acesso (IAM, na sigla em inglês) aplicáveis ao recurso. Em seguida, ele revelará se os papéis do membro incluem a permissão nesse recurso e, em caso afirmativo, quais políticas vinculam o membro a esses papéis.

Acesse o solucionador de problemas de políticas usando o Console do Cloud, a ferramenta de linha de comando gcloud ou a API REST. Para consultas simples, o uso do Console do Cloud normalmente é mais rápido. Para cenários mais complexos, considere a ferramenta gcloud ou a API REST.

Permissões necessárias

O solucionador de problemas de políticas analisa o acesso principal a um recurso com base nas políticas e nos papéis do IAM que você tem permissão para ver. Se você não tiver permissão para ver uma política que se aplica a um recurso ou se não tiver permissão para visualizar um papel personalizado, talvez não consiga dizer se uma conta principal tem acesso.

Para resolver problemas de acesso total a um principal, você precisa de um papel que inclua as seguintes permissões:

  • resourcemanager.projects.getIamPolicy
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.organizations.getIamPolicy
  • iam.roles.get
  • iam.roles.list

Para obter essas permissões seguindo o princípio de privilégio mínimo, peça ao administrador para conceder a você o papel de avaliador de segurança (roles/iam.securityReviewer) no nível da organização.

Como alternativa, o administrador pode conceder a você um papel diferente que inclua as permissões necessárias, como um papel personalizado ou um papel predefinido mais permissivo.

Solução de problemas de acesso

Para resolver problemas de acesso, você precisará 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 membro não são compatíveis.
  • Recurso: o nome completo do recurso. Por exemplo, para verificar o projeto my-project, insira //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 Console do Cloud, ele apresentará uma lista de sugestões enquanto você digita. Para uma lista completa de permissões, consulte a referência de permissões.

Console

Solução de problemas de acesso

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

  1. No Console do Cloud, acesse a página Solucionador de problemas de políticas.

    Acesse o solucionador de problemas de políticas

  2. Insira um e-mail, o nome do recurso e a permissão a ser verificada.

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

  4. Clique em Verificar chamada de API.

Como entender os resultados do solucionador de problemas de políticas

Os resultados do solucionador de problemas de políticas informam se a conta principal tem a permissão especificada no recurso especificado. Ela também lista as políticas de IAM que se aplicam ao recurso e as vinculações de papel nessas políticas.

Por padrão, os resultados são exibidos em Visualização compacta, que mostra apenas vinculações de papéis para papéis que contêm a permissão especificada. Se você estiver solucionando problemas de várias permissões, use a lista suspensa Visualizar por para alternar entre elas.

É possível desativar a Visualização compacta clicando na opção Visualização compacta. Desativar a Visualização compacta exibe todas as vinculações de papel nas políticas que se aplicam ao recurso.

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

  • Resumo do acesso: um breve resumo do acesso da conta principal. Essas informações permitem ver se a conta principal tem a permissão no recurso. No exemplo a seguir, my-user@example.com tem a permissão logging.logs.view em my-project:

  • Políticas relevantes e vinculações de papéis: uma lista das políticas de IAM que se aplicam ao recurso em questão e as vinculações de papel de cada política. Ao lado de cada vinculação de papel está um ícone que indica se essa vinculação concede a permissão especificada a conta principal. Clique na vinculação de papel para ver o texto bruto dela.

    No exemplo a seguir, a vinculação de papel do visualizador de registros concede a permissão:

  • Texto bruto de vinculações de papéis relevantes: o texto bruto de cada vinculação de papel na lista de vinculações de papel relevantes. Para saber mais sobre a estrutura das vinculações de papéis, consulte Noções básicas sobre políticas.

    Em cada vinculação de papel, as linhas são destacadas da seguinte maneira:

    • Verde: as linhas são destacadas em verde se contêm um papel que inclui a permissão especificada, se referir a principal especificada ou se referir a um grupo que contém a conta principal especificada.
    • Vermelho: as linhas são destacadas em vermelho se contêm outro papel, referem a outra conta principal ou se referem a um grupo que não contém a conta principal especificada.
    • Amarelo: as linhas são destacadas em amarelo se elas contêm um papel com detalhes que você não tem permissão para ver ou um grupo que não tem permissão para visualizar a assinatura.

gcloud

Primeiro, verifique se seu ambiente está configurado para usar o solucionador de problemas de políticas.

Ative a API solucionador de problemas de políticas:

gcloud services enable policytroubleshooter.googleapis.com --project=project-id

Em seguida, configure o projeto:

gcloud config set project project-id

Depois de concluir a configuração, use o solucionador de problemas de políticas para verificar se um usuário tem uma permissão em um recurso. Execute o seguinte comando:

gcloud policy-troubleshoot iam resource --principal-email=email \
    --permission=permission

Por exemplo, o comando a seguir verifica se foo@example.com tem a permissão resourcemanager.projects.getIamPolicy no projeto my- project.

gcloud policy-troubleshoot iam //cloudresourcemanager.googleapis.com/projects/my-project \
    --permission=resourcemanager.projects.getIamPolicy --principal-email=foo@example.com

A saída é YAML, indica se o usuário tem a permissão e fornece uma explicação do motivo. O código será semelhante a este:

access: GRANTED
explainedPolicies:
- access: GRANTED
  bindingExplanations:
  - access: NOT_GRANTED
    memberships:
      serviceAccount:service-123@compute-system.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
    role: roles/compute.serviceAgent
    rolePermission: ROLE_PERMISSION_NOT_INCLUDED
  - access: GRANTED
    memberships:
      serviceAccount:service@my-project.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
      user:foo@example.com: MEMBERSHIP_INCLUDED
    role: roles/owner
    rolePermission: ROLE_PERMISSION_INCLUDED
  fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
  policy:
    bindings:
    - members:
      - serviceAccount:service-123@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:foo@my-project.iam.gserviceaccount.com
      - user:foo@example.com
      role: roles/owner
    etag: BwWAOWEaIEg=
    version: 1
- access: UNKNOWN_INFO_DENIED
policy: {}

API REST

O método iam.troubleshoot informa por que um membro tem ou não uma permissão do IAM.

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

  • email: o endereço de e-mail do membro cujas permissões você quer resolver.
  • resource: o recurso em que a permissão é concedida.
  • permission: a permissão que você quer resolver.

Método HTTP e URL:

POST https://policytroubleshooter.googleapis.com/v1/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:

{
  "access": "GRANTED",
  "explainedPolicies": [
    {
      "access": "GRANTED",
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
      "policy": {
        "version": 1,
        "etag": "BwWBUZjK9YQ=",
        "bindings": [
          {
            "role": "roles/owner",
            "members": [
              "user:foo@example.com"
            ]
          }
        ]
      },
      "bindingExplanations": [
        {
          "access": "GRANTED",
          "role": "roles/owner",
          "rolePermission": "ROLE_PERMISSION_INCLUDED",
          "rolePermissionRelevance": "HIGH",
          "memberships": {
            "key": "user:foo@example.com",
            "value": {
              "membership": "MEMBERSHIP_INCLUDED",
              "relevance": "HIGH",
            }
          },
        "relevance: HIGH",
        }
      ]
    },
    {
      "access": "UNKNOWN_INFO_DENIED",
      "policy": {}
    }
  ]
}

Solução de problemas de associação a grupo

Só será possível solucionar problemas de acesso a um recurso fornecido por um grupo do Google se você tiver permissão para ver os respectivos membros.

Se você não tiver permissão, o grupo será destacado em amarelo no Console do Cloud e um aviso indicará que você não sabe se o grupo inclui a conta principal. Se você estiver usando a ferramenta gcloud ou a API REST, a resposta conterá UNKNOWN_INFO_DENIED ou ACCESS_TO_INFO_DENIED.

Solução de problemas de associação a grupo

Os superadministradores e administradores de grupo do Google Workspace geralmente têm acesso para visualizar os membros do grupo. Para permitir que um usuário que não seja administrador resolva problemas de acesso, crie um papel personalizado de administrador do Google Workspace que contenha o privilégio groups.read (localizado em Privilégios da API Admin) e conceda esse papel ao usuário. Isso permite que eles visualizem a associação de todos os grupos do seu domínio e solucionem problemas de acesso com mais eficiência.

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

Para resolver problemas de vinculações condicionais de papel, o solucionador de problemas de políticas precisa de mais contexto sobre a solicitação. Por exemplo, para resolver problemas de condições com base em atributos de data/hora, o solucionador de problemas de políticas precisa da hora da solicitação.

Para fornecer mais contexto, é possível resolver problemas em qualquer registro de auditoria de atividade do administrador ou registro de auditoria de acesso a dados. Cada entrada de registro de auditoria corresponde a uma solicitação a uma API do Google Cloud ou a uma ação que o Google Cloud realiza em seu nome. Quando você resolve problemas de um registro de auditoria, o solucionador de problemas de políticas recebe automaticamente informações adicionais sobre a solicitação, como a data e a hora, para que o solucionador de problemas de políticas analise as vinculações de papéis condicionais.

Esse recurso está disponível apenas no Console do Cloud.

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

  1. No Console do Cloud, acesse a página 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 resolver problemas de acesso e mostra os resultados. O contexto adicional está listado abaixo do resumo de acesso. Para saber mais sobre a página de resultados do solucionador de problemas de políticas, consulte Como solucionar problemas de acesso nesta página.

  6. Opcional: para solucionar problemas de outra solicitação que envolva vinculações de papéis condicionais, retorne à página "Explorador de registros" e repita as etapas anteriores.

A seguir