Visão geral do Identity-Aware Proxy

Nesta página, descrevemos os conceitos básicos do Identity-Aware Proxy (IAP), um serviço global do Google Cloud .

Com o IAP, é possível estabelecer uma camada de autorização central para aplicativos acessados por HTTPS. Assim, você tem a opção de adotar um modelo de controle de acesso no nível do aplicativo, em vez de confiar apenas nos firewalls da rede.

As políticas do IAP são escalonadas para toda a organização. É possível definir políticas de acesso de maneira central e aplicá-las a todos os aplicativos e recursos. Ao atribuir uma equipe dedicada para criar e aplicar políticas, você protege seu projeto contra a definição ou a implementação de políticas incorretas em qualquer aplicativo.

Quando usar o IAP

Use o IAP quando você quiser aplicar políticas de controle de acesso para aplicativos e recursos. O IAP funciona com cabeçalhos assinados ou com a API Users do ambiente padrão do App Engine para proteger seu aplicativo. Com o IAP, é possível configurar o acesso a aplicativos com base em grupos. Por exemplo, um recurso pode ser acessível para funcionários, mas não para colaboradores terceirizados, ou com acesso liberado apenas para a um departamento específico.

Como o IAP funciona

Quando um aplicativo ou recurso é protegido pelo IAP, ele só pode ser acessado pelo proxy por principais, também conhecidos como usuários, que têm o papel do gerenciamento de identidade e acesso (IAM) correto. Quando você concede a um usuário acesso a um aplicativo ou recurso pelo IAP, esse usuário estará sujeito a controles de acesso minuciosos implementados pelo produto em uso, sem a necessidade de usar uma rede privada virtual (VPN, na sigla em inglês). Quando um usuário tenta acessar um recurso protegido pelo IAP, o IAP executa verificações de autenticação e autorização.

App Engine
Diagrama do caminho de solicitação para o App Engine ao usar o Cloud IAP
Cloud Run
Diagrama do caminho de solicitação para o Cloud Run ao usar o Cloud IAP
Compute Engine
Diagrama do caminho de solicitação para o Compute Engine e o Kubernetes Engine ao usar o Cloud IAP
GKE
Diagrama do caminho de solicitação para o Compute Engine e o Kubernetes Engine ao usar o Cloud IAP
Localmente
Diagrama do caminho de solicitação para um app local ao usar o Cloud IAP

Autenticação

As solicitações aos seus recursos do Google Cloud chegam pelo Cloud Run, App Engine e Cloud Load Balancing (balanceamento de carga HTTP(S) externo e interno). O código da infraestrutura de disponibilização desses produtos verifica se o IAP está ativado para o app ou serviço de back-end. Se o IAP estiver ativado, as informações sobre o recurso protegido serão enviadas ao servidor de autenticação do IAP. Isso inclui informações como o número do projeto Google Cloud , o URL da solicitação e as credenciais do IAP nos cabeçalhos da solicitação ou em cookies.

Em seguida, o IAP verifica se o usuário fez login. Se o usuário não estiver conectado, o navegador dele será redirecionado para um dos seguintes métodos de login compatíveis com a IAP:

  • Conta do Google:seus usuários do Google Cloud com Contas do Google são redirecionados pelo fluxo de login da Conta do Google para acessar o Google Cloud.

  • Federação de identidade de colaboradores:seus usuários do Google Cloud em um provedor de identidade externo são redirecionados pelo login do IdP para acessar o Google Cloud.

  • Identity Platform:seus clientes que usam e-mail e senhas ou logins em redes sociais, como Facebook, Apple e Google (Gmail), para acessar seu aplicativo.

Após a autenticação, o navegador do usuário armazena um token em um cookie para logins futuros.

Se as credenciais da solicitação forem válidas, o servidor de autenticação usará essas credenciais para conseguir a identidade do usuário (endereço de e-mail e ID do usuário). O servidor de autenticação usa a identidade para verificar o papel do IAM do usuário e verificar se ele está autorizado a acessar o recurso.

Se você estiver usando o Compute Engine ou o Google Kubernetes Engine, os usuários com acesso a porta de exibição do aplicativo na máquina virtual poderão ignorar a autenticação pelo IAP. As regras de firewall do Compute Engine e do GKE não protegem contra o acesso a partir da execução do código na mesma VM em que está o aplicativo protegido pelo IAP. As regras de firewall podem proteger contra o acesso de outra VM, mas apenas se estiverem configuradas corretamente. Saiba mais sobre suas responsabilidades para garantir a segurança.

Se você estiver usando o Cloud Run, é possível ativar o IAP das seguintes maneiras:

  • Diretamente nos serviços do Cloud Run. Isso permite que o IAP proteja todos os caminhos de entrada para o Cloud Run, incluindo o URL atribuído automaticamente e qualquer URL de balanceador de carga configurado. Essa configuração é útil quando você tem um único serviço do Cloud Run para ativar o IAP.
  • Por um balanceador de carga com um back-end do Cloud Run. Essa configuração é útil quando você tem vários serviços do Cloud Run em regiões diferentes por trás de um único balanceador de carga global. Nessa configuração, o URL atribuído automaticamente não é protegido pela IAP e pode ser acessado diretamente. Saiba mais sobre suas responsabilidades para garantir a segurança.

Se um serviço do Cloud Run estiver por trás de um balanceador de carga, não ative o IAP no balanceador de carga e no serviço do Cloud Run.

Saiba mais sobre a federação de identidade de colaboradores. Saiba como configurar o IAP com a federação de identidade de colaboradores. Se quiser sincronizar suas identidades externas com as próprias Contas do Google, use o Google Cloud Directory Sync para sincronizar com seu IdP.

Autorização

Após a autenticação, o IAP aplica a política do IAM pertinente para verificar se o usuário está autorizado a acessar o recurso solicitado. Se o usuário tiver o papel de Usuário do web app com proteção do IAP no projeto do consoleGoogle Cloud em que o recurso existe, ele terá autorização para acessar o aplicativo. Para gerenciar a lista de papéis de Usuário do web app com proteção do IAP, use o painel do IAP no console Google Cloud .

Quando você ativa o IAP para um recurso, ele cria automaticamente um ID do cliente e uma chave secreta do OAuth 2.0. Se você excluir as credenciais do OAuth 2.0 geradas automaticamente, o IAP não funcionará da maneira correta. É possível conferir e gerenciar as credenciais do OAuth 2.0 nas APIs e serviços do console doGoogle Cloud .

Acesso baseado no contexto

Como parte da etapa de autorização, é possível usar o acesso baseado no contexto para fornecer acesso seguro aos seguintes tipos de recursos:

Console e APIs doGoogle Cloud
  • Primeira camada de defesa na proteção do acesso à infraestrutura do Google Cloud.
  • Acesso avançado Google Cloud baseado no contexto para usuários.
Máquinas virtuais (VMs)
  • Permite o acesso administrativo SSH/RDP às VMs em Google Cloud e em outras nuvens.
  • Permite implementar controles robustos baseados no contexto para restringir o acesso apenas a administradores designados.
Aplicativos da Web
  • Oferece autorização e autenticação para aplicativos da Web hospedados em Google Cloud e outras nuvens.
  • Fornece autorização contínua para evitar acesso não autorizado e perda de dados.

Suas responsabilidades

O IAP protege a autenticação e a autorização de todas as solicitações para o Cloud Run, o App Engine, o Cloud Load Balancing (HTTPS) e o balanceamento de carga HTTP interno.

Para garantir a segurança, é necessário tomar as seguintes precauções:

  • Se você estiver ativando o IAP em um balanceador de carga, verifique se os recursos de back-end podem ser acessados diretamente.
    • Se o recurso de back-end for uma VM, configure as regras de firewall para proteger contra tráfego que não passa pelo balanceador de carga. O IAP não protege contra atividades dentro de um projeto, como outra VM dentro do projeto.
    • Se o recurso de back-end for um serviço do Cloud Run, você poderá desativar o URL do aplicativo run.app para garantir que toda a entrada seja feita pelo balanceador de carga. Se você optar por deixar o URL do aplicativo run.app ativado, use os controles de entrada para bloquear o tráfego de fora da sua rede.
  • Atualize o app para usar cabeçalhos assinados ou a API Users do ambiente padrão do App Engine.

A seguir