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 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 "princípios") 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 ou acesso a grupos.
  • 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, ativar o IAP com o console do Google Cloud também pode exigir 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 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 da 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, 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 políticas do IAM. A permissão iap.webServiceVersions.accessViaIAP concede ao usuário acesso a um 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/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
Todos os apps da Web protegidos 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.

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

iap.web.setIamPolicy
Todos os serviços de back-end no projeto
Isso é o mesmo que a caixa de seleção Serviço de back-end na página de administrador 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
Todas as regra de encaminhamento no projeto
Permissões para todas as regras de encaminhamento no projeto.

Caminhos
Escopo global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule

Escopo regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Um aplicativo do App Engine
É o mesmo que a caixa de seleção aplicativo do App Engine na página de administração 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
Uma regra de encaminhamento do Compute Engine
Permissões para uma regra de encaminhamento. O caminho da regra de encaminhamento pode especificar o ID ou o nome da regra de encaminhamento.

Caminhos
Escopo global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule/services/
FORWARDING_RULE_ID or FORWARDING_RULE_NAME

Escopo regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME/
services/FORWARDING_RULE_ID or FORWARDING_RULE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Um serviço de app 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
An App Engine service version
Compute Engine doesn't support versioning.

Path
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
Todas as instâncias de VM protegidas pelo IAP no projeto
Isso é o mesmo que a caixa de seleção Todos os recursos do túnel na página de administração do IAP.

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

iap.tunnel.setIamPolicy
Uma zona com pelo menos uma instância de VM
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.

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 individual

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.

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

Como gerenciar o acesso com a Google Cloud CLI

Negar acesso

As políticas de negação do Identity and Access Management (IAM) permitem definir proteções no acesso aos recursos do Google Cloud. Para uma lista de cenários em que as políticas de negação são úteis, consulte use-cases.

É possível criar políticas de negação e incluir todas as permissões do IAP no essas políticas. Para conferir a lista de permissões do IAP que podem ser adicionadas a uma política de negação, consulte Permissões compatíveis com políticas de negação e procure iap.googleapis.com. Embora as políticas de negação possam ser aplicadas a qualquer permissão do IAP, a eficácia delas está vinculada a um ponto de vinculação de política de negação.

Algumas permissões do IAP só são eficazes no nível do recurso específico e não nos descendentes. Por exemplo: iap.organizations.getSettings concede acesso ao getSettings no nível da organização, e não ao os descendentes da organização. Isso significa que os administradores precisam listar explicitamente todas as permissões granulares relevantes ao criar políticas de negação para negar o acesso em um ponto de anexo e seus descendentes.

Para uma lista completa dessas permissões granulares, consulte Permissões compatíveis com políticas de negação. Todas as permissões em FQDN iap.googleapis.com e os tipos de recursos iap.organizations, iap.folders, iap.projects, iap.web, iap.webTypes, iap.webServices e iap.webServicesVersions são permissões granulares.

Este é um exemplo de política de negação do IAM para negar o acesso à API getSettings a um principal de uma organização e a respectiva descendentes.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/iap.organizations.getSettings",
          "iap.googleapis.com/iap.folders.getSettings",
          "iap.googleapis.com/iap.projects.getSettings",
          "iap.googleapis.com/iap.web.getSettings",
          "iap.googleapis.com/iap.webTypes.getSettings",
          "iap.googleapis.com/iap.webServices.getSettings",
          "iap.googleapis.com/iap.webServicesVersions.getSettings",
        ],
      }
    }
  ]
}

Em vez de especificar todas as permissões granulares, a seguir há um exemplo de a política de negação do IAM com apenas uma permissão: *.getSettings.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/*.getSettings",
        ],
      }
    }
  ]
}

Confira a seguir algumas maneiras mais simples de criar uma política de negação do IAM sem precisar especificar todas as permissões granulares.

Ação do administrador Permissão na política de negação
Negar permissões específicas do IAP em todos os tipos de recurso do IAP *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Negar todas as permissões do IAP em um tipo de recurso específico iap.organizations.*
iap.folders.*
iap.projects.*
iap.web.*
iap.webTypes.*
iap.webServices.*
iap.webServicesVersions.*

Acesso público

Para conceder acesso a um recurso a todos, atribua um papel a um dos seguintes principais:

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