Visão geral do Identity-Aware Proxy

Nesta página, você conhecerá 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 por meio do proxy por principais, também conhecidos como usuários, que têm o papel correto do gerenciamento de identidade e acesso (IAM). 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, o IAP realiza 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 para seus recursos do Google Cloud passam pelo Cloud Run, pelo App Engine e pelo Cloud Load Balancing (balanceamento de carga HTTP(S) externo e interno). O código da infraestrutura de exibição desses produtos verifica se o IAP está ativado no 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 qualquer credencial do IAP nos cabeçalhos ou cookies da solicitação.

Em seguida, o IAP verifica se o usuário fez login. Se o usuário não estiver conectado, o navegador 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 Google Cloud usuários em um provedor de identidade externo são redirecionados pelo login do IdP para acessar Google Cloud.

  • Identity Platform:seus clientes que usam e-mail e senhas ou logins 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. No entanto, elas podem oferecer proteção contra o acesso por meio de outra VM, desde que estejam configuradas corretamente. Saiba mais sobre suas responsabilidades para garantir a segurança.

Se você estiver usando o Cloud Run, ative o IAP das seguintes maneiras:

  • Diretamente nos serviços do Cloud Run. Isso permite que a 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 a 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 preferir sincronizar as identidades externas com as próprias Contas do Google, use a Sincronização do Google Cloud Directory 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 Usuário do app da Web protegido pelo IAP no projeto do consoleGoogle Cloud em que o recurso existe, ele estará autorizado a acessar o aplicativo. Para gerenciar a lista de membros com o papel Usuário do app da Web protegido pelo IAP, use o painel do IAP no console do Google Cloud .

Quando você ativa o IAP em um recurso, ele cria automaticamente um ID e uma chave secreta de cliente do OAuth 2.0. Se você excluir as credenciais do OAuth 2.0 geradas automaticamente, o IAP não funcionará da maneira correta. Para ver e gerenciar as credenciais do OAuth 2.0, use as APIs e os 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
  • Fornece 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 a 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 vem pelo balanceador de carga. O IAP não protege contra atividades dentro de um projeto, como outra VM dentro dele.
    • Se o recurso de back-end for um serviço do Cloud Run, você poderá desativar o URL run.app para garantir que toda a entrada seja feita pelo balanceador de carga. Se você deixar o URL run.app ativado, use os controles de entrada para bloquear o tráfego de fora da sua rede.
  • Atualize seu app para usar cabeçalhos assinados ou a API Users do ambiente padrão do App Engine (link em inglês).

A seguir