Perguntas frequentes e solução de problemas

Este artigo contém perguntas frequentes sobre o Identity-Aware Proxy (IAP).

Quais apps posso proteger com o IAP?

O IAP pode ser usado com:

  • apps do ambiente padrão e do ambiente flexível do App Engine;
  • instâncias do Compute Engine com serviços de back-end de balanceamento de carga HTTP(S);
  • contêineres do Google Kubernetes Engine.

Atualmente, o IAP não pode ser usado com o Cloud CDN.

Por que há um # no fim do meu URL depois de fazer login no meu app?

Em alguns navegadores e certas condições, um # pode ser anexado ao URL após a autenticação. Isso é normal e não causará problemas ao fazer login.

Por que o identificador de fragmento #... no final do meu URL foi removido?

Como medida de segurança, essa parte de um URL é removida durante o processo de login. Depois de fazer login, o acesso ao URL funcionará conforme o esperado.

Por que minhas solicitações estão falhando e retornando o código de status 405 (Método não permitido)?

Isso pode acontecer por não ter cookies anexados às suas solicitações. Por padrão, os métodos JavaScript não anexam cookies às solicitações.

A maneira como você inclui cookies varia entre os métodos de solicitação. Por exemplo, solicitações enviadas com um objeto XMLHttpRequest (em inglês) precisam que a propriedade withCredentials seja definida como true, enquanto as solicitações enviadas com a API Fetch precisam da opção credentials configurada como include ou same-origin.

Para informações sobre como lidar com erros que ocorrem apenas após algum tempo, consulte Como gerenciar sessões do IAP.

Por que estou recebendo um código de status HTTP 401 (Não autorizado) em vez de um código HTTP 302 (Movido temporariamente)?

O IAP responde com um código de status 302 Redirect quando um cliente é configurado para lidar com redirecionamentos. Para indicar que esse é o caso, inclua HTTP Accept="text/html,*/*" no cabeçalho das solicitações.

Por que as solicitações POST não estão acionando redirecionamentos?

Para acionar redirecionamentos, verifique se as chamadas para o IAP não são solicitações POST. Os navegadores não redirecionam como resposta a solicitações POST. Por isso, o IAP responde com um código de status 401 Unauthorized em vez de um 302 Redirect.

Se você precisar que o IAP exiba solicitações POST, verifique se o token de ID ou cookies válidos estão sendo transmitidos no cabeçalho da solicitação.

Inclua o token de ID em um cabeçalho Authorization: Bearer para fazer uma solicitação autenticada ao recurso protegido pelo IAP. Atualize a sessão para conseguir cookies válidos.

O IAP espera os seguintes prefixos de cookies:

  • GCP_IAAP_AUTH_TOKEN_<random_string>
  • GCP_IAP_UID

É normal que esses cookies apareçam várias vezes em um cabeçalho de solicitação.

Posso usar o IAP se eu tiver desativado a API?

Sim, o acesso a recursos protegidos com o IAP funciona com a API desativada, mas você não poderá fazer alterações nas permissões do IAM.

Como posso impedir que usuários com o papel de proprietário usem o IAP para TCP?

Primeiro, evite usar o papel de proprietário (roles/owner) o máximo possível. Ele concede amplas permissões no Google Cloud. A atribuição de papéis e permissões mais granulares pode aumentar a segurança do seu projeto. Para mais informações, consulte as práticas recomendadas do IAM.

Se não for possível reduzir o uso do papel de proprietário, bloqueie o IAP para TCP usando regras de firewall.

Qual domínio o IAP para TCP usa?

O IAP para TCP encapsula dados usando o domínio tunnel.cloudproxy.app. Este domínio é de propriedade do Google. Você deve garantir que não está bloqueando nenhum tráfego para este domínio.

Se você bloquear o tráfego neste domínio, não poderá usar o IAP para TCP. Você pode receber uma das várias mensagens de erro.

Se você estiver usando gcloud, a mensagem de erro pode ser

Error while connecting [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

Se você estiver usando o SSH no navegador, a mensagem de erro será exibida.

Cloud Identity-Aware Proxy Failed

Não há código de erro associado.

Códigos de erro

A tabela a seguir lista códigos de erro comuns e mensagens retornadas ao configurar e usar o IAP.

Código de erro ou mensagem Descrição Solução de problemas
Código de erro 7 Os valores do ID ou da chave secreta do cliente OAuth estão vazios. Verifique se o ID e a chave secreta do cliente estão configurados corretamente para seu app na página "Credenciais". Caso estejam configurados corretamente, use o método GET para ver o estado atual e PATCH para redefinir o ID e a chave secreta do cliente:
API do Compute Engine: GET, PATCH
API do Google App Engine: GET, PATCH
Código de erro 9 Um redirecionamento OAuth não foi concluído. Esse é um erro interno e foi registrado para análise.
Código de erro 11 Seu ID do cliente OAuth está configurado incorretamente. Verifique se o ID e a chave secreta do cliente estão configurados corretamente para seu app na página "Credenciais". Caso estejam configurados corretamente, use o método GET para ver o estado atual e PATCH para redefinir o ID e a chave secreta do cliente:
API do Compute Engine: GET, PATCH
API do Google App Engine: GET, PATCH
Código de erro 13 Seu token do OpenID Connect (OIDC) é inválido. Verifique se o ID do cliente configurado para o IAP não foi excluído na página "Credenciais".
Código de erro 429 O projeto excedeu o limite por minuto das solicitações. Os projetos de IAP são limitados a um máximo de 360.000 solicitações por minuto. Se você encontrar esse erro, reduza o volume de solicitações do projeto. Entre em contato com o suporte do Google Cloud se tiver mais dúvidas.
Código de erro 4003 Pode significar que a instância não está detectando na porta a que você está tentando se conectar ou o firewall está fechado. Qualquer um desses problemas também pode causar falha no teste de conectividade de inicialização para a instância de VM. Verifique se o processo de detecção na VM está em execução e na porta correta. Além disso, verifique se o firewall do Google Cloud está configurado corretamente e aberto nessa porta.
Código de erro 4033 Você não tem permissão para acessar a instância, a instância não existe ou foi interrompida. Verifique se o papel do IAM de usuário do túnel protegido pelo IAP foi aplicado ao recurso a que você está se conectando na página "Identity-Aware Proxy".

Se você não conseguir resolver o problema, entre em contato com o suporte ao cliente com a descrição do erro e a resposta recebida de uma chamada GET para a API. Remova a chave secreta do cliente da resposta.