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.

Visão geral

O IAP permite configurar políticas para recursos individuais 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 "membros") para envolvidos no projeto aplicam-se 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 em 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 ou Google Kubernetes Engine 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, ativar o IAP com o Console do 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 Cloud

Para controlar o acesso a um recurso protegido do IAP com o Console do 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 membro selecionando os 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 um membro.
  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 membro exibida, 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 certas permissões para acessar um app protegido pelo IAP e usar métodos que atualizem as políticas do IAM. A permissão iap.webServiceVersions.accessViaIAP concede acesso ao app. 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/v1beta1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy
Resource Type Descrição Caminho Permissões
iap.web Cada app da Web protegido pelo IAP no projeto. Isso é o mesmo que a caixa de seleção Todos os serviços da Web na página de administrador do IAP.

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

iap.web.setIamPolicy
iap.webTypes Um serviço de back-end ou um aplicativo do App Engine. Isso é o mesmo que as caixas de seleção Serviço de back-end e Aplicativo do App Engine na página de administração do IAP. Serviço de back-end


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


Aplicativo do App Engine


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

iap.webTypes.setIamPolicy
iap.webServices Um serviço de back-end do Compute Engine ou um serviço de aplicativo do App 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. Serviços de back-end


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


Aplicativo do App Engine


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

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

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

iap.webServiceVersions.setIamPolicy
iap.tunnel Todas as instâncias protegidas por IAP no projeto. Isso é o mesmo que a caixa de seleção Todos os recursos do túnel na página de administrador do IAP.

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

iap.tunnel.setIamPolicy
iap.tunnelZones Cada zona que tem pelo menos uma instância. Isso é o mesmo que a caixa de seleção de nome de zona na página de administrador do IAP, por exemplo, us-central1-c.

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

iap.tunnelZones.setIamPolicy
iap.tunnelInstances Uma instância individual.

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

iap.tunnelInstances.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.

Role 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 Concede acesso a recursos de túnel que usam o 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
Concede os direitos administrativos do IAP para gerenciar as políticas de acesso de recursos do IAP.

Acesso público

Para conceder permissão a um recurso a todos, adicione um dos seguintes membros à sua lista de acesso:

  • 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.