Faça a gestão do acesso a recursos protegidos pela IAP

Esta página descreve como gerir o acesso individual ou de grupo a recursos protegidos pelo Identity-Aware Proxy (IAP) ao nível do recurso.

Vista geral

Pode usar o IAP para configurar políticas do IAP para recursos individuais e do Cloud Run num Google Cloud projeto. Cada uma das várias apps num projeto pode ter políticas de acesso diferentes. Isto inclui projetos que têm apps do Compute Engine, Google Kubernetes Engine e App Engine. Para apps do App Engine, podem ser aplicadas diferentes políticas de acesso a versões e serviços individuais.

Para gerir o acesso ao nível do projeto e superior, use a página de administrador do IAM. As listas de utilizadores que têm acesso (os "diretores") ao nível do projeto aplicam-se a todos os recursos protegidos pelo IAP no projeto.

Antes de começar

Antes de começar, precisa do seguinte:

  • Um recurso protegido pelo IAP ao qual quer adicionar acesso individual ou de grupo.
  • Nomes de utilizadores ou grupos aos quais quer adicionar acesso.

Ative e desative as compras na app

Para ativar e desativar as IAPs, são necessárias determinadas autorizações. A tabela seguinte mostra a autorização necessária para cada tipo de app.

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

Estas autorizações são concedidas por funções como Editor do projeto, Administrador do App Engine e Administrador da rede de computação. Embora estas funções permitam ativar e desativar o IAP, não têm as autorizações necessárias para modificar as políticas de acesso.

Além disso, a ativação das CAsI com a Google Cloud consola também pode exigir as autorizações clientauthconfig.clients.create, clientauthconfig.clients.update> e clientauthconfig.clients.getWithSecret. Estas autorizações são concedidas pela função de editor do projeto.

Para saber como conceder funções, consulte o artigo Conceder, alterar e revogar acesso.

Faça a gestão do acesso na Google Cloud consola

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

Adicione acesso

  1. Aceda à página Identity-Aware Proxy.
    Aceda à página Identity-Aware Proxy

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

    • Todos os serviços Web: todos os recursos no projeto vão ser protegidos. Tenha em atenção que isto não é o mesmo que conceder acesso ao nível do projeto com a página de administrador do IAM. Um utilizador ao qual foi concedida a função de administrador da política de IAP ao nível do recurso Todos os serviços Web só tem autorizações para políticas de IAP.

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

  3. No painel de informações do lado direito, adicione os endereços de email dos grupos ou dos indivíduos aos quais quer conceder uma função de gestão de identidade e acesso (IAM) para o recurso.

  4. Aplique funções da política de acesso ao principal selecionando uma das seguintes funções no menu pendente Selecionar uma função:

    • Proprietário: concede o mesmo acesso que o administrador da política de CNA. Em alternativa, use a função administrador da política de IAP. Esta função só permite modificar políticas e não concede acesso à app.

    • Administrador da política de CNA: concede direitos de administrador sobre as políticas de CNA.

    • Utilizador da app Web protegida por CNA: concede acesso à app e a outros recursos HTTPS que usam a CNA.

    • Revisor de segurança: concede autorização para ver e auditar as políticas de CNA.

  5. Quando terminar de adicionar endereços de email e definir funções, clique em Adicionar

Remover acesso

  1. Aceda à página Identity-Aware Proxy.
    Aceda à página Identity-Aware Proxy
  2. Selecione o recurso protegido com o IAP.
  3. No painel de informações do lado direito, selecione a secção correspondente à função que quer remover de um principal.
  4. Na secção expandida, junto a cada nome de utilizador ou grupo para o qual quer remover a função, clique em Remover.
  5. Na caixa de diálogo Remover principal apresentada, clique em Remover.

Faça a gestão do acesso com a API

O IAM fornece um conjunto padrão de métodos para criar e gerir políticas de controlo de acesso em Google Cloud recursos.

Recursos e autorizações

A API IAP permite-lhe aplicar autorizações da IAM a recursos individuais num projeto protegido pelo IAP. As autorizações de IAM concedidas a um determinado nível aplicam-se a todos os níveis inferiores. Por exemplo, uma autorização concedida ao nível do projeto aplica-se a todos Google Cloud os recursos no projeto. O acesso ao nível do projeto e superior é gerido na página de administração do IAM, mas é apresentado na página de administração do IAP.

Os utilizadores precisam de determinadas autorizações para aceder a uma app protegida pela IAP. Para conceder estas autorizações, os administradores podem usar uma API para atualizar as políticas de IAM. A autorização iap.webServiceVersions.accessViaIAP concede ao utilizador acesso a uma app. Se estiver a usar o IAP para controlar o acesso a serviços administrativos como o SSH e o RDP, os utilizadores precisam da autorização iap.tunnelInstances.accessViaIAP.

Cada recurso de IAP tem a sua própria autorização getIamPolicy e setIamPolicy que concede a capacidade de gerir políticas de acesso para esse recurso e os respetivos filhos.

Para chamar a API IAM, crie uma chamada com um caminho do URL para um recurso. Segue-se um exemplo de uma chamada que obtém a política de IAM para uma versão do serviço de app 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 seguinte lista os tipos de recursos suportados, bem como as autorizações necessárias para chamar a API IAM.

Tipo do recurso Autorizações
Todas as apps Web protegidas pelo IAP no projeto
Isto é igual à caixa de verificação Todos os serviços Web na página de administração 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
Isto é igual à caixa de verificação Serviço de back-end na página de administração do IAP.

Caminhos
Âmbito global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

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

iap.webTypes.setIamPolicy
Todas as regras de encaminhamento no projeto
Autorizações para todas as regras de encaminhamento no projeto.

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

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

iap.webTypes.setIamPolicy
Uma região para cada serviço do Cloud Run no projeto
Autorizações para todos os serviços do Cloud Run numa região no projeto.

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

iap.webTypes.setIamPolicy
Um serviço do Cloud Run
Autorizações para um serviço do Cloud Run. Todos os serviços do Cloud Run são regionais.

Caminho
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME/services/SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Uma app do App Engine
Isto é igual à caixa de verificação App do App Engine na página de administração da CNA.

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
Âmbito global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

Âmbito 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
Autorizações para uma regra de encaminhamento. O caminho da regra de encaminhamento pode especificar o ID ou o nome da regra de encaminhamento.

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

Âmbito 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
Isto é igual à caixa de verificação Todos os recursos de 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 que tem, pelo menos, uma instância de VM
Isto é igual a uma caixa de verificação do nome de uma 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 destinos, 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 destinos individual

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

iap.tunnelDestGroups.setIamPolicy

Funções

A tabela seguinte apresenta as funções de IAM do IAP com uma lista correspondente de todas as autorizações específicas do IAP que cada função inclui. Para mais informações sobre as funções da IAM, consulte o artigo Gerir funções e autorizações.

Função Inclui autorizações Descrição
Utilizador da app Web protegida por IAP (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Concede acesso aos recursos do App Engine e do Compute Engine.
Utilizador do túnel protegido por IAP (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Concede acesso a instâncias de VM protegidas pelo IAP.
Administrador da política de 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 direitos administrativos do IAP para gerir as políticas de acesso do IAP dos recursos.

Faça a gestão do acesso com a CLI gcloud

Também pode gerir o acesso através da Google Cloud CLI.

Negar acesso

As políticas de recusa da gestão de identidade e de acesso (IAM) permitem definir restrições no acesso aos Google Cloud recursos. Para ver uma lista de cenários em que as políticas de recusa são úteis, consulte os exemplos de utilização.

Pode criar políticas de recusa e incluir todas as autorizações de IAP nessas políticas. Para ver a lista de autorizações de IAP que pode adicionar a uma política de negação, consulte o artigo Autorizações suportadas em políticas de negação e pesquise iap.googleapis.com. Embora as políticas de recusa possam ser aplicadas a quaisquer autorizações de IAP, a respetiva eficácia está associada a um ponto de anexação de política de recusa.

Algumas autorizações de IAP só são eficazes ao nível do respetivo recurso específico e não nos seus descendentes. Por exemplo,iap.organizations.getSettings concede acesso a getSettings ao nível da organização e não aos descendentes da organização. Isto significa que os administradores têm de listar explicitamente todas as autorizações detalhadas relevantes ao criar políticas de negação para negar o acesso num ponto de anexo e nos respetivos descendentes.

Para ver uma lista completa destas autorizações detalhadas, consulte o artigo Autorizações suportadas em políticas de recusa. Todas as autorizações no 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 autorizações detalhadas.

Segue-se um exemplo de uma política de recusa de IAM para recusar o acesso à API getSettings a um principal numa organização e aos respetivos 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 autorizações detalhadas, o seguinte é um exemplo da política de negação de IAM com apenas uma autorizaçã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",
        ],
      }
    }
  ]
}

Seguem-se algumas formas mais simples de criar uma política de recusa do IAM sem ter de especificar todas as autorizações detalhadas.

Ação do administrador Autorização na política de recusa
Recusar autorizações de CNA específicas em todos os tipos de recursos de CNA *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Recuse todas as autorizações de CAs num 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 todos a um recurso, atribua uma função a um dos seguintes diretores:

  • allAuthenticatedUsers: qualquer pessoa autenticada com uma Conta Google ou uma conta de serviço.
  • allUsers: qualquer pessoa na Internet, incluindo utilizadores autenticados e não autenticados. O cabeçalho assinado do pedido não tem uma sub nem uma email reivindicação.

Se for concedido acesso público, o IAP não gera registos do Cloud Audit Logs para o pedido.

Atualmente, as associações que concedem acesso público não podem ter uma condição associada. Por exemplo, uma política que permite que qualquer pessoa aceda a um recurso se o caminho do pedido começar por /public/ é inválida.