Resolver problemas com permissões do IAM

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O solucionador de problemas de políticas facilita a compreensão sobre por que 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 revela se os papéis do principal incluem a permissão a esse recurso e, em caso afirmativo, quais políticas vinculam o principal a esses papéis.

É possível acessar o solucionador de problemas de políticas usando o Console do Google Cloud, a Google Cloud CLI ou a API REST. Em consultas simples, o uso do Console do Google Cloud normalmente é mais rápido. Em cenários mais complexos, use a CLI gcloud ou a API REST.

O console do Google Cloud também alerta você se há alguma política de negação que possa afetar o acesso do principal. A CLI gcloud e a API REST não fornecem informações sobre políticas de negação.

Antes de começar

  • Ative a API Policy Troubleshooter.

    Ative a API

Permissões necessárias

Para resolver totalmente o acesso dos principais, você precisa das permissões a seguir.

Permissões para resolver problemas de acesso a principais individuais

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

Para conseguir as permissões necessárias para solucionar problemas de acesso de um principal, peça ao administrador que conceda a você o papel de IAM de Revisor de segurança (roles/iam.securityReviewer) na organização. Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso.

Este papel predefinido contém as permissões necessárias para resolver problemas de acesso do principal. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

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

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

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

Se a política do IAM tiver grupos, você precisará da permissão groups.read da API Admin do Google Workspace para resolver problemas de acesso de membros de grupos individuais. Os superadministradores e os administradores do grupo têm essa permissão automaticamente. Para conceder essa permissão a um usuário que não é administrador do Super ou Group, crie uma função de administrador personalizada do Google Workspace que contenha o privilégio groups.read (localizado em Privilégios da API Admin) e conceda-o ao usuário.

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

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

Se a política do IAM tiver domínios, você precisará ser um administrador de domínio para resolver problemas de acesso a membros individuais do domínio.

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

Solução de problemas de 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 participantes 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 Google Cloud, ele vai apresentar uma lista de sugestões enquanto 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 Google Cloud, acesse a página Solucionador de problemas de políticas.

    Acesse o solucionador de problemas de políticas

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

  3. Digite o nome do recurso e a permissão a ser verificada. Se você não souber o nome completo do recurso ou da permissão, comece a digitar para ver as opções de preenchimento automático.

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

  5. Clique em Verificar acesso.

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

Para cada par de recursos e permissões, o solucionador de problemas de políticas oferece uma página de resultados que explica o acesso do principal.

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

  • Detalhes da avaliação: um resumo do acesso que você está solucionando, incluindo o principal, o recurso e a permissão especificados. Se você estiver resolvendo problemas de vários pares de permissões de recursos, é possível alternar entre eles usando a lista Avaliação de acesso.

  • Aviso de política de negação: se uma política de negação puder afetar o acesso que você está solucionando, o solucionador de problemas de políticas exibirá um aviso.

    Esse aviso aparece nos seguintes casos:

    Se esse aviso não for exibido, não há políticas de negação que afetam o acesso do principal.

  • Detalhes da política de permissão do IAM: um breve resumo do acesso do principal com base nas políticas de permissão do IAM relevantes. Essas políticas incluem a política de permissão do recurso especificado e as políticas de permissão de todos os ancestrais. Devido à herança de política, se o principal tiver a permissão em qualquer um desses recursos, ele terá a permissão no recurso especificado na consulta de solução de problemas.

    Essas informações permitem ver se o principal tem a permissão no recurso.

  • Recursos: uma lista do recurso especificado e dos ancestrais dele. Ao lado de cada recurso, há uma avaliação se a política de permissão desse recurso concede a permissão ao principal. Esta avaliação se refere apenas à política de permissão desse recurso e não reflete nenhum acesso de políticas herdadas.

    Se você não tiver permissão para visualizar uma política de permissão de um ancestral, a lista de recursos não incluirá esse ancestral.

    Para ver as vinculações de papel relevantes em uma política de permissão de recursos e ver como eles fazem ou não conceder a permissão ao principal, clique no recurso. As vinculações de política são permitidas no painel Vinculações de papéis.

  • Vinculações de papéis: uma lista de vinculações de papéis na política de permissão selecionada de recursos. Por padrão, a lista mostra apenas vinculações de papel que incluem um papel com a permissão especificada. Se o principal não tiver acesso, a lista também vai mostrar vinculações de papéis com papéis personalizados editáveis. Para ver todas as vinculações de papéis, desmarque a caixa de seleção Mostrar apenas vinculações relevantes.

    A coluna Acesso indica se a vinculação de papel concede a permissão ao principal. Essa coluna pode ter um dos seguintes valores:

    • Concedida: a vinculação do papel inclui o principal e um papel com a permissão.
    • Não concedida: a vinculação da função não inclui a principal ou a função na vinculação não inclui a permissão.
    • Condicional: a vinculação de papel inclui o principal e um papel com a permissão. No entanto, ele também contém uma condição, e o principal só terá acesso se a condição for atendida.
    • Desconhecido: a vinculação de papel contém um papel que você não tem permissão para ver ou um grupo do qual você não tem permissão para verificar os membros.

    Para ver mais detalhes sobre a vinculação de papel, clique em Ver detalhes da vinculação. Essa ação abre o painel Detalhes da vinculação. A guia Detalhes desse painel exibe informações sobre o papel, principais e condições na vinculação de papel. Se a vinculação do papel não conceder ao principal, o painel também descreverá o que você pode fazer para conceder o acesso principal.

    A guia JSON exibe o texto bruto da vinculação de papel. Para saber mais sobre a estrutura das vinculações de papéis, consulte Noções básicas sobre políticas.

gcloud

Primeiro, verifique se o 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 este 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

Para descobrir por que um principal tem ou não uma permissão do IAM, use o método iam.troubleshoot da API solucionador de problemas de políticas.

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

  • 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.

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 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, resolva problemas de qualquer registro de auditoria de atividades do administrador ou registro de auditoria de acesso a dados. Cada entrada de registro de auditoria corresponde a uma solicitação para uma API do Google Cloud ou a uma ação que o Google Cloud executa em seu nome. Quando você soluciona problemas de um registro de auditoria, o solucionador de problemas de políticas recebe automaticamente mais informações sobre a solicitação, como data e hora, o que permite que o solucionador de problemas de análise analise as vinculações de papéis condicionais.

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

Para resolver problemas de vinculações de papéis condicionais, 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 resolver problemas de acesso e mostra os resultados. O contexto adicional está listado nos detalhes da avaliação em Contexto de condição. Para ver os detalhes do contexto, clique em Visualizar contexto da condição. Para saber mais sobre a página de resultados do solucionador de problemas de políticas, consulte Solução de 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