Casos de uso para solucionar problemas de acesso no Google Cloud

Last reviewed 2022-09-29 UTC

Neste documento, descrevemos como usar as ferramentas do Google Cloud para solucionar problemas de casos de uso relacionados a problemas de acesso a recursos do Google Cloud. Este documento não descreve como solucionar problemas de acesso do usuário final aos seus aplicativos. Neste documento, presumimos que você esteja familiarizado com a solução de problemas de política e de acesso no Google Cloud. Na documentação de solução de problemas de política e acesso, descrevemos os serviços do Google Cloud que podem aplicar políticas de acesso e as ferramentas de solução de problemas oferecidas pelo Google Cloud.

Abordagem de solução de problemas

O primeiro passo para solucionar um problema relacionado ao acesso é decidir como solucionar o problema. O diagrama a seguir fornece um fluxograma de uma abordagem para solucionar problemas de acesso. O fluxograma assume presume que você tenha as permissões apropriadas para concluir as etapas de solução de problemas ou possa trabalhar com alguém que tenha as permissões necessárias.

Fluxograma com uma abordagem para solucionar problemas de acesso.

O diagrama acima mostra as seguintes etapas:

  1. Verifique o acesso do usuário no Console do Google Cloud e no Cloud Shell. Se todos os acessos forem negados, verifique os registros de auditoria para ver se há entradas de gravidade de erro.
    1. Se houver entradas de gravidade de erro, verifique as permissões necessárias.
      1. Se for possível conceder permissões para resolver problemas de acesso, resolva o problema.
      2. Se não for possível resolver problemas de acesso, entre em contato com o Atendimento ao cliente do Cloud.
    2. Se não houver entradas de gravidade de erro, entre em contato com o atendimento ao cliente.
  2. Se não houver problemas de acesso, verifique se há problemas de rede. Se você encontrar problemas de rede, resolva-os.
  3. Se não houver problemas de rede, verifique a alocação de cota. Se você encontrar problemas de alocação de cota, siga seu processo para aumentar a cota e, em seguida, resolva o problema.
  4. Se não houver problemas de alocação de cota, verifique os registros de auditoria para ver se há entradas de gravidade de erro.
    1. Se houver entradas de gravidade de erro, verifique as permissões necessárias.
      1. Se for possível conceder permissões para resolver problemas de acesso, resolva o problema.
      2. Se não for possível resolver problemas de acesso, entre em contato com o atendimento ao cliente.
    2. Se não houver entradas de gravidade de erro, entre em contato com o atendimento ao cliente.

As seções a seguir fornecem detalhes sobre como concluir cada etapa de solução de problemas.

Verifique o acesso do usuário

Verifique se o acesso do usuário é negado no console do Google Cloud e na Google Cloud CLI:

  1. Faça login no console do Google Cloud como o usuário afetado.
  2. Tente acessar o recurso. Por exemplo, se o usuário tiver informado que não consegue iniciar uma VM, tente iniciar uma.
  3. No console do Google Cloud, abra o Cloud Shell e execute o seguinte comando da CLI gcloud em uma sessão em que o usuário fez login. Esse comando ajuda a verificar se o usuário está conectado à identidade correta e se ele pode acessar o recurso usando a CLI gcloud.

    gcloud auth list
    

    A resposta retorna a conta em que o usuário está conectado.

  4. Verifique se o comando anterior retorna a identidade correta.

    • Se o comando anterior retornar a identidade errada, peça ao usuário para fazer login na identidade correta. Em seguida, determine se o acesso ainda é um problema quando a identidade correta é usada.
    • Se o comando anterior retornar a identidade correta e você receber uma mensagem permission denied, execute o comando da CLI gcloud para a ação que o usuário quer concluir. Para mais detalhes sobre a negação, adicione as sinalizações --log-http e --verbosity=debug.
  5. Se você identificar um problema relacionado a permissões, pule para Verificar as permissões necessárias.

Verifique se há problemas na rede

  1. Verifique se há problemas na rede usando a orientação Solução de problemas do VPC Service Controls. Se aparecer uma mensagem de erro de negação do VPC Service Controls, resolva o problema.
  2. Verifique os caminhos de rede da origem ao destino usando testes de conectividade. Para informações sobre como testar a conectividade entre duas instâncias de VM nas mesmas redes ou em peering, consulte Como testar em redes VPC.
  3. Verifique a configuração do firewall usando Firewall Insights para mostrar todas as regras de firewall ocultas e regras de negação que possam estar afetando caminhos de acesso.

Verifique a alocação de cota

  • Se você não encontrar problemas relacionados à rede, verifique a alocação de cota. Se houver um problema relacionado à cota, siga o processo definido para aumentar a cota, se apropriado.

Verificar registros de auditoria

  • Verifique os arquivos de registros de auditoria usando o Explorador de registros. O Explorador de registros fornece um resumo da gravidade de uma entrada de registro. Uma gravidade de registro de erros é registrada quando uma chamada de API falha. Por exemplo, um erro será registrado se um usuário tentar criar um bucket do Cloud Storage, mas não tiver as permissões para chamar storage.buckets.create.

    O resumo de uma entrada de registro fornece os seguintes detalhes:

    • Nome do recurso de destino
    • Principal (que está tentando acessar o recurso)
    • Chamada de API que o principal tentou executar

Verifique as permissões necessárias

Para depurar por que o principal não tem as permissões necessárias, use o Solucionador de problemas de políticas:

  1. Se as verificações indicarem que o acesso não foi concedido, analise quais papéis o solucionador de problemas de políticas indica como tendo a permissão.
  2. Use a ferramenta Análise de políticas para ver quais outros principais têm acesso ao recurso com acesso negado para o principal.
  3. Adicione a identidade do principal ao grupo do Google que tem uma vinculação ao papel apropriado.

Entre em contato com o atendimento ao cliente

Se você concluiu as seções anteriores de solução de problemas e não consegue resolver o problema, entre em contato com o atendimento ao cliente para receber ajuda. Forneça o máximo de informações possível, conforme descrito na seção do guia de solução de problemas Encaminhamento para o atendimento ao cliente.

Exemplos de casos de uso de solução de problemas

Nesta seção, você encontra instruções detalhadas sobre como solucionar problemas específicos de uso usando as etapas de solução de problemas anteriores. Para todos os casos de uso, você precisa ter as permissões apropriadas para usar as ferramentas de solução de problemas descritas em Como solucionar problemas de política e acesso no Google Cloud.

Os casos de uso a seguir pressupõem que você está usando Grupos do Google para gerenciar o acesso do usuário. O uso de Grupos do Google para conceder permissões permite gerenciar o acesso em escala. Cada membro de um grupo do Google herda os papéis do gerenciamento de identidade e acesso (IAM, na sigla em inglês) concedidos a esse grupo. Essa herança significa que é possível usar a associação de um grupo para gerenciar os papéis dos usuários em vez de conceder papéis do IAM a usuários individuais.

O delegante do papel resolve problemas de acesso do desenvolvedor para um papel de administrador do Compute

Como delegante de papel, preciso entender por que não consigo conceder um determinado papel a um desenvolvedor. Sempre concedo papéis de Administrador do Compute a novos desenvolvedores quando eles entram para a minha equipe. Hoje, tentei conceder o papel de Administrador de Instâncias do Compute e ele foi negado.

Seguindo o fluxograma para verificar o acesso do usuário e os registros de auditoria, você pode confirmar se é um problema de permissão.

Para conceder papéis, você precisa da permissão resourcemanager.projects.setIamPolicy. Essa permissão pode ser concedida como parte dos seguintes papéis:

  • Papel de Administrador da organização (roles/resourcemanager.organizationAdmin)
  • Papel de Administrador de pastas do IAM (roles/resourcemanager.folderIamAdmin)
  • Papel de Administrador de projetos do IAM (roles/resourcemanager.projectIamAdmin)

Para determinar se o delegante de papéis tem a permissão resourcemanager.projects.setIamPolicy atribuída, use o Solucionador de problemas de políticas. Se a permissão não estiver mais atribuída:

  1. Verifique se uma recomendação do IAM foi aplicada que pode ter rescindido a política.
  2. Se você souber a última vez que concedeu papéis, verifique os registros entre esse horário e agora para ver se alguma chamada setIam foi feita que possa ter alterado as políticas aplicadas.
  3. Use o Analisador de políticas para verificar quais principais têm a resourcemanager.projects.setIamPolicy. O Analisador de políticas pode ajudar a verificar se o delegante de papéis foi removido de um grupo.

O administrador do Cloud resolve problemas de acesso de desenvolvedor ao BigQuery

Como administrador do Cloud, preciso entender por que um dos desenvolvedores não consegue mais executar uma consulta em um conjunto de dados do BigQuery.

Para resolver esse caso de uso, primeiro verifique o acesso do usuário e resolva todos os problemas relacionados. Depois, verifique se há problemas na rede. Neste exemplo, supomos que você determinou que não há um problema de identidade ou de rede, mas há um problema de permissões.

Para resolver o problema de permissões, primeiro verifique as permissões de membros da equipe. Se você não encontrar discrepâncias, verifique os registros para identificar possíveis problemas. Se você não encontrar nenhum problema nos registros, entre em contato com o atendimento ao cliente para receber ajuda.

Verifique as permissões dos membros da equipe

Para verificar as permissões dos membros da equipe, pergunte ao desenvolvedor quando ele conseguiu executar a consulta pela última vez. Em seguida, determine se alguém da equipe do desenvolvedor conseguiu executar a consulta anteriormente e se essa pessoa ainda consegue executá-la. Se nenhum membro da equipe conseguir executar a consulta, vá para a seção Verifique os registros.

Se um membro da equipe ainda conseguir executar a consulta, siga estas etapas:

  1. Verifique as permissões do IAM que são concedidas aos dois desenvolvedores e determine se as permissões são diferentes. Ao analisar as permissões, procure o seguinte:
  2. Se as permissões não forem diferentes, vá para a próxima seção, Verifique os registros. Se as permissões forem diferentes, siga estas etapas:
    1. Verifique se os dois participantes da equipe estão no mesmo Grupo do Google.
      • Se não estiverem no mesmo Grupo do Google, determine se eles deveriam estar.
      • Se eles estavam anteriormente no mesmo Grupo do Google, confira com o administrador do grupo para determinar o motivo das alterações.
  3. Depois de solucionar o problema de permissões, verifique se o desenvolvedor consegue executar a consulta.
    • Se o desenvolvedor puder executar a consulta, resolva o problema.
    • Se o desenvolvedor não conseguir executar a consulta, vá para a próxima seção, Verifique os registros.

Verifique os registros

Se nenhum membro da equipe puder concluir a consulta ou se a solução de problemas de permissões não tiver resolvido o problema, verifique os registros para determinar o que pode ter mudado desde que o desenvolvedor conseguiu concluir a consulta pela última vez.

  1. Determine onde ver os registros da última tarefa concluída. Neste exemplo, os registros são exportados para o BigQuery.
  2. Execute consultas nos registros exportados no BigQuery:
    1. Execute uma consulta que inclui a data da última vez em que o desenvolvedor teve acesso para ver como funciona quando não há problemas.
    2. Execute a mesma consulta para um horário em que a solicitação falhou.
  3. Se houver algo identificável nos registros, resolva o problema usando o Solucionador de problemas de políticas e o Analisador de políticas, conforme descrito na seção Verifique as permissões necessárias.
  4. Se ainda assim você não conseguir resolver o problema, entre em contato com o atendimento ao cliente.

O desenvolvedor precisa de permissões para o GKE

Como desenvolvedor, preciso entender por que não consigo iniciar, excluir ou atualizar um pod ou criar uma implantação no cluster do Google Kubernetes Engine (GKE) ao qual tenho acesso. Não sei qual principal sou quando faço a chamada com a ferramenta de linha de comando kubectl ou quais são minhas permissões.

O papel de IAM que permite que um desenvolvedor inicie, exclua ou atualize um pod ou crie uma implantação no cluster do GKE é o papel de desenvolvedor do Google Kubernetes Engine (roles/container.developer). O papel precisa ser concedido no projeto em que o cluster do GKE reside.

Para resolver esse caso de uso, primeiro verifique o acesso do usuário e resolva todos os problemas relacionados. Depois de validar a identidade, verifique se a ferramenta kubectl está configurada para apontar para o cluster certo. Para informações sobre como garantir se a identidade usada pela ferramenta kubectl está correta e se a ferramenta kubectl aponta para o cluster correto, consulte Como configurar o acesso ao cluster para kubectl. Este exemplo pressupõe que você determinou que não há um problema de rede ou um problema relacionado a cotas, mas há um problema de permissões.

Para começar a solucionar problemas de permissões, verifique os registros de auditoria para ver o que mudou entre a última ação bem-sucedida do desenvolvedor e a hora em que o problema foi relatado pela primeira vez.

  1. Se o desenvolvedor já teve acesso, verifique se um membro da equipe que também tem permissões para realizar as mesmas ações ainda consegue concluir as ações. Se o membro da equipe tiver acesso, use o Analisador de políticas para ajudar a determinar qual é o acesso do membro da equipe. Se você estiver seguindo as práticas recomendadas, os dois desenvolvedores devem ter as mesmas permissões e associação ao grupo.

    1. Se as permissões forem as mesmas e nenhum desenvolvedor puder executar as ações no recurso, verifique se foram aplicadas recomendações do IAM que podem afetar o acesso.
    2. Se as permissões forem diferentes, investigue o motivo da diferença:
      1. Verifique os registros de auditoria da última vez que o desenvolvedor conseguiu executar a tarefa. Compare os registros com o momento em que eles tentaram pela última vez e não conseguiram concluir a tarefa.
      2. Verifique as recomendações do IAM e aplique as recomendações.
  2. Se não houver outro membro da equipe para validar, use o Solucionador de problemas de políticas e o Analisador de políticas, conforme descrito em Verifique as permissões necessárias. Para saber mais, acesse os recursos a seguir (links em inglês):

  3. Se ainda assim você não conseguir resolver o problema, entre em contato com o Atendimento ao cliente.

O administrador de segurança resolve o problema de acesso do desenvolvedor

Como administrador de segurança, preciso entender por que um desenvolvedor não conseguiu realizar uma ação. Qual é o melhor papel e local para atribuir ao papel para que ele não conceda mais acesso do que o usuário precisa?

Nesse cenário, o desenvolvedor precisa conseguir fazer o seguinte:

  • Upload de objetos para um bucket do Cloud Storage. O desenvolvedor não conseguirá ver, excluir ou substituir objetos atuais no bucket.
  • Iniciar instâncias no projeto de desenvolvimento.

Para entender quais permissões são necessárias para executar a tarefa que seu desenvolvedor precisa executar, use o Solucionador de problemas de políticas e a página de referência Noções básicas sobre papéis do IAM. Neste exemplo, você precisa conceder ao desenvolvedor um papel que inclua as seguintes permissões:

  • Para permitir que o desenvolvedor pare e inicie instâncias: compute.instances.start e compute.instances.stop
  • Para permitir que o desenvolvedor faça upload de objetos para os buckets do Cloud Storage: storage.objects.create

Os seguintes papéis incluem as permissões anteriores e aderem ao princípio de privilégio mínimo:

  • No nível do bucket para o qual o desenvolvedor tem permissão para fazer upload de objetos, conceda o papel Criador de objetos do Storage (roles/storage.objectCreator).
  • No nível do projeto atribuído pelo desenvolvedor ou na instância que o desenvolvedor precisa para reiniciar o desenvolvedor, conceda o papel Administrador de instâncias do Compute (roles/compute.instanceAdmin).

Normalmente, o gerenciamento de instâncias também pode exigir ações como adição de discos. Nesse caso, o papel roles/compute.instanceAdmin pode ser uma forma apropriada de conceder as permissões necessárias e ainda aderir ao princípio de privilégio mínimo.

O administrador do Cloud soluciona problemas do motivo pelo qual o aplicativo não consegue gravar no Cloud Storage

Como administrador do Cloud, preciso entender por que um aplicativo sendo executado no GKE não consegue mais gravar no Cloud Storage.

Nesse cenário, um aplicativo em execução no GKE precisa ser configurado da seguinte maneira:

  • Em um bucket especificado, o aplicativo pode adicionar, atualizar e excluir objetos.
  • O aplicativo não pode ter acesso a nenhum outro bucket na organização.

A abordagem de solução de problemas a seguir pressupõe que você esteja usando a Identidade da carga de trabalho, o que recomendamos. Com a Identidade da carga de trabalho, é possível configurar uma conta de serviço do Kubernetes para agir como uma conta de serviço do Google. Os pods em execução como conta de serviço do Kubernetes são automaticamente autenticados como a conta de serviço do Google quando acessam as APIs do Google Cloud.

Neste exemplo, você valida que concedeu as permissões apropriadas para a conta de serviço do Google usada para a identidade da carga de trabalho do cluster. Para entender as permissões necessárias para concluir as tarefas do aplicativo, use o Solucionador de problemas de políticas e a página de referência Noções básicas sobre papéis do IAM. Para configurar e verificar permissões, faça o seguinte:

  1. Atribua as seguintes permissões à conta de serviço do Google que você está usando na identidade de carga de trabalho:

    1. No bucket em que o aplicativo tem permissão para ter controle total dos objetos, incluindo listagem, criação, visualização e exclusão de objetos, conceda o papel Administrador de objetos do Storage (roles/storage.objectAdmin).
    2. Para configurar a conta de serviço do Kubernetes para personificar a conta de serviço do Google, defina uma vinculação de política do IAM:

      gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]" \
        GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
      

      Substitua os seguintes valores:

      • PROJECT_ID: ID do projeto
      • KSA_NAME: a conta de serviço do Kubernetes que está fazendo a solicitação
      • KUBERNETES_NAMESPACE: o namespace do Kubernetes em que a conta de serviço do Kubernetes está definida
      • GSA_NAME: a conta de serviço do Google
  2. Defina a permissão iam.serviceAccounts.setIamPolicy no projeto:

    • Adicione a seguinte anotação à conta de serviço do Kubernetes:

      iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID
      
  3. Verifique se a conta de serviço do Google tem as permissões corretas e se a Identidade da carga de trabalho está configurada corretamente:

    1. No bucket em que o aplicativo tem permissão para ter controle total sobre os objetos, veja a política do IAM para o bucket e verifique se a conta de serviço do Google tem o papel roles/storage.objectAdmin.
    2. Se as permissões não estiverem corretas, altere a política para conceder à conta de serviço do Google a permissão necessária.
  4. Verifique se a Identidade da carga de trabalho está configurada corretamente confirmando se há uma vinculação à conta de serviço do Kubernetes:

    gcloud iam service-accounts get-iam-policy \
      GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    A saída será assim:

    - members:
      - serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]
      role: roles/iam.workloadIdentityUser
    

    Se a vinculação estiver incorreta, repita as etapas anteriores para atribuir permissões à conta de serviço.

A seguir