Como gerenciar o acesso a recursos protegidos pelo IAP

Nesta página, você verá como gerenciar o acesso individual ou de grupo a recursos protegidos pelo Identity-Aware Proxy (IAP) no nível do recurso.

Informações gerais

Com o IAP, é possível configurar políticas para recursos individuais e do Cloud Run em um projeto do Google Cloud. Vários apps em um projeto podem ter políticas de acesso diferentes. Isso inclui projetos com aplicativos do Compute Engine, do Google Kubernetes Engine e do App Engine. Para aplicativos do App Engine, versões e serviços individuais podem ter diferentes políticas de acesso aplicadas.

Para gerenciar o acesso superior e para envolvidos no projeto, use a página de administrador do IAM. As listas de usuários que têm acesso (os "principais") no nível do projeto se aplicam a todos os recursos protegidos pelo IAP no projeto.

Antes de começar

Antes de começar, você precisará de:

  • um recurso protegido pelo IAP a que você quer adicionar acesso individual ou de grupo.
  • nomes de usuários ou de grupos a que você quer adicionar acesso.

Como ativar e desativar o IAP

Para ativar e desativar o IAP, são necessárias determinadas permissões. A tabela a seguir mostra a permissão necessária para cada tipo de app.

Tipo de aplicativo Permissão necessária
App Engine appengine.applications.update
Compute Engine, Google Kubernetes Engine ou Cloud Run compute.backendServices.update

Essas permissões são concedidas por papéis como editor do projeto, administrador do App Engine e administrador de rede do Compute. Embora esses papéis permitam ativar e desativar o IAP, eles não têm as permissões necessárias para modificar as políticas de acesso.

Além disso, a ativação do IAP com o console do Google Cloud também pode exigir as permissões clientauthconfig.clients.create e clientauthconfig.clients.getWithSecret. Essas permissões são concedidas pelo papel de editor do projeto.

Para mais informações sobre como conceder papéis, consulte Como conceder, alterar e revogar acesso.

Como gerenciar o acesso no console do Google Cloud

Para controlar o acesso a um recurso protegido pelo IAP com o console do Google Cloud, siga o processo para adicionar ou remover acesso.

Adicionar acesso

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"

  2. Selecione o recurso que você quer proteger com o IAP. As seguintes seleções de recursos protegem um grupo de recursos definido:

    • Todos os serviços da Web: todos os recursos do projeto serão protegidos. Isso não é o mesmo que conceder acesso para envolvidos no projeto por meio da página de administrador do IAM. Um usuário com o papel de administrador de políticas do IAP no nível de recurso Todos os serviços da Web só terá permissões para políticas do IAP.

    • Serviços de back-end: todos os serviços de back-end serão protegidos.

  3. No painel de informações direito, adicione os endereços de e-mail de grupos ou indivíduos a que você quer conceder um papel de gerenciamento de identidade e acesso (IAM, na sigla em inglês) no recurso.

  4. Aplique os papéis da política de acesso ao principal selecionando um dos seguintes papéis na lista suspensa Selecionar um papel:

    • Proprietário: concede o mesmo acesso que Administrador de políticas do IAP. Use o papel administrador de políticas do IAP. Esse papel só permite modificar políticas, não concede acesso ao app.

    • Administrador de políticas do IAP: concede direitos de administrador sobre políticas do IAP.

    • Usuário do app da Web protegido pelo IAP: concede acesso ao app e a outros recursos HTTPS que usam o IAP.

    • Avaliador de segurança: concede permissão para visualizar e auditar políticas do IAP.

  5. Quando terminar de adicionar endereços de e-mail e definir papéis, clique em Adicionar.

Remover acesso

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione o recurso que está protegido com o IAP.
  3. No painel de informações direito, selecione a seção que corresponde ao papel que você quer remover de uma principal.
  4. Na seção expandida, ao lado de cada nome de usuário ou grupo de que você quer remover o papel, clique em Remover.
  5. Na caixa de diálogo Remover principal que aparece, clique em Remover.

Como gerenciar o acesso por meio da API

O IAM fornece um conjunto padrão de métodos para criar e gerenciar políticas de controle de acesso nos recursos do Google Cloud.

Recursos e permissões

A API do IAP permite que você aplique as permissões do IAM a recursos individuais em um projeto protegido pelo IAP. As permissões do IAM concedidas em um determinado nível se aplicam a todos os níveis abaixo dela. Por exemplo, uma permissão concedida para envolvidos no projeto se aplica a todos os recursos do Google Cloud no projeto. O acesso para envolvidos no projeto e em níveis superiores é gerenciado na página de administrador do IAM, mas exibido na página de administrador do IAP.

Os usuários precisam de determinadas permissões para acessar um app protegido pelo IAP. Para conceder essas permissões, os administradores podem usar uma API para atualizar as políticas do IAM. A permissão iap.webServiceVersions.accessViaIAP concede acesso de usuário a um aplicativo. Se você estiver usando o IAP para controlar o acesso a serviços administrativos, como SSH e RDP, os usuários precisarão da permissão iap.tunnelInstances.accessViaIAP.

Cada recurso do IAP tem as próprias permissões getIamPolicy e setIamPolicy, que concedem a capacidade de gerenciar as políticas de acesso desse recurso e respectivos filhos.

Para chamar a API do IAM, crie uma chamada com um caminho de URL para um recurso. Veja abaixo um exemplo de chamada que recebe a política do IAM referente a uma versão do serviço de aplicações do App Engine.

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy

A tabela a seguir lista os tipos de recursos compatíveis e as permissões necessárias para chamar a API IAM.

Tipo de recurso Permissões
Cada app da Web protegido pelo IAP no projeto
É o mesmo que a caixa de seleção Todos os serviços da Web na página de administrador do IAP.

Caminho

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
Um serviço de back-end
É o mesmo que a caixa de seleção Serviço de back-end na página de administração do IAP.

Caminhos
Escopo global:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

Escopo regional:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Um aplicativo do App Engine
Isso é o mesmo que a caixa de seleção App do App Engine na página de administrador do IAP.

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Um serviço de back-end do Compute Engine
O caminho do serviço de back-end pode especificar o ID do serviço de back-end ou o nome do serviço de back-end.

Caminhos
Escopo global:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

Escopo regional:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Um serviço de aplicativo do App Engine

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Uma versão de serviço do App Engine
O Compute Engine não é compatível com o controle de versões.

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
Cada instância de VM protegida pelo IAP no projeto
É o mesmo que a caixa de seleção Todos os recursos do túnel na página de administrador do IAP.

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
Uma zona que tem pelo menos uma instância de VM
. Isso é igual à caixa de seleção de nome de zona na página de administração do IAP, por exemplo, us-central1-c.

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
Uma instância de VM individual

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy
Uma região que tem pelo menos um grupo de destino, por exemplo, us-central1

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
iap.tunnelLocations.getIamPolicy

iap.tunnelLocations.setIamPolicy
Um grupo de destino específico

Caminho

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
/destGroups/GROUP_NAME
iap.tunnelDestGroups.getIamPolicy

iap.tunnelDestGroups.setIamPolicy

Papéis

Na tabela abaixo, veja os papéis predefinidos do IAM do IAP com uma lista correspondente de todas as permissões específicas do IAP incluídas em cada um. Para mais informações sobre os papéis do IAM, consulte Como gerenciar papéis e permissões.

Papel Inclui as permissões Descrição
Usuário do app da Web protegido pelo IAP (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Concede acesso aos recursos do App Engine e do Compute Engine.
Usuário do túnel protegido pelo IAP (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Concede acesso a instâncias de VM protegidas pelo IAP.
Administrador de políticas do IAP (roles/iap.admin) iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
iap.tunnel.getIamPolicy
iap.tunnel.setIamPolicy
iap.tunnelZones.getIamPolicy
iap.tunnelZones.setIamPolicy
iap.tunnelInstances.getIamPolicy
iap.tunnelInstances.setIamPolicy
Concede os direitos administrativos do IAP para gerenciar as políticas de acesso de recursos do IAP.

Acesso público

Para dar acesso a um recurso a todos, conceda um papel a um dos princípios a seguir:

  • allAuthenticatedUsers: qualquer pessoa autenticada com uma Conta do Google ou uma conta de serviço.
  • allUsers: qualquer pessoa que esteja na Internet, incluindo usuários autenticados e não autenticados. O cabeçalho assinado para a solicitação não terá uma declaração sub ou email.

Se o acesso público for concedido, o IAP não gerará registros de auditoria do Cloud para a solicitação.

No momento, as vinculações que concedem acesso público não podem ter uma condição associada a ele. Por exemplo, uma política que permite a qualquer pessoa acessar um recurso se o caminho da solicitação começar com /public/ é inválida.