Personalizar o IAP

Neste documento, descrevemos como personalizar as configurações do Identity-Aware Proxy (IAP). Com essas configurações, é possível controlar os comportamentos, incluindo:

  • a compatibilidade com o GKE Enterprise e o Istio no Google Kubernetes Engine;
  • o processamento de solicitações simuladas de CORS;
  • a maneira como os usuários são autenticados;
  • a página de erro mostrada aos usuários quando o acesso é negado.

Gerenciar configurações

É possível visualizar e atualizar as configurações do IAP em balanceadores de carga e apps do App Engine usando o console Google Cloud , a API IAP ou a Google Cloud CLI.

Para atualizar as configurações da IAP em todos os recursos, incluindo pastas, projetos e organizações, use a CLI ou a API do Google Cloud.

Para gerenciar as configurações no IAP:

Console

Para ver e modificar as configurações usando o console do Google Cloud :

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Encontre seu recurso na guia APLICAÇÕES.
  3. Abra o menu mais ações e clique em Configurações.
  4. Clique em Salvar.

gcloud

Para acessar e modificar configurações usando a Google Cloud CLI, use os comandos gcloud iap settings get e gcloud iap settings set da seguinte maneira:

  • Para ver as configurações de um projeto, pasta ou organização, use os comandos a seguir. Para configurar as opções do IAP usando o console Google Cloud ou a CLI gcloud, consulte Personalizar o IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • Para ver as configurações de um tipo de recurso de IAP específico em um projeto:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • Para definir as configurações de um projeto, pasta ou organização ou um tipo de recurso IAP em um projeto, crie um arquivo JSON ou YAML que contenha as novas configurações desejadas e especifique o caminho para o arquivo. Consulte o tópico gcloud iap settings set para mais informações:
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME

API

Para receber e modificar configurações usando a API IAP, faça solicitações usando os verbos HTTP GET ou PATCH para o endpoint de recurso selecionado em Google Cloud. Combine o sufixo :iapSettings com o caminho do recurso, como detalhado em Recursos e permissões, e o método HTTP adequado para receber ou modificar os detalhes de uma configuração. Consulte getIapSettings() e updateIapSettings() para mais informações:

  • Para receber ou definir configurações para um tipo de recurso de IAP específico em um projeto:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
  • Para receber ou definir configurações para um projeto:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • Para obter ou definir configurações para uma pasta:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • Para obter ou definir configurações para uma organização:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

Permissões e papéis das configurações da IAP

Nesta seção, descrevemos os papéis e as permissões necessários para visualizar e atualizar as configurações de IAP.

Papéis de configurações

É possível conceder o papel Administrador de configurações do IAP (roles/iap.settingsAdmin) nos níveis de organização, pasta e projeto. Para conferir as permissões concedidas pela função de administrador de configurações da IAP, consulte Permissões de configurações.

Para saber mais sobre papéis e permissões do IAP, consulte Papéis e permissões do Identity-Aware Proxy.

Os seguintes papéis básicos fornecem essas permissões:

  • O papel de Leitor do projeto (roles/viewer) concede todas as permissões getSettings.

  • O papel de editor (roles/editor) concede todas as permissões descritas na tabela.

Permissões de configurações

A tabela a seguir lista as permissões do IAM necessárias para ler e modificar as configurações de cada tipo de recurso. Para uma descrição dos diferentes tipos de recursos, consulte Recursos e permissões.

Recurso Permissão para visualizar configurações Permissão para modificar configurações
Organização iap.organizations.getSettings iap.organizations.updateSettings
Pasta iap.folders.getSettings iap.folders.updateSettings
Projeto iap.projects.getSettings iap.projects.updateSettings
Todos os web services iap.web.getSettings iap.web.updateSettings
Tipos da Web iap.webTypes.getSettings iap.webTypes.updateSettings
Serviços da Web iap.webServices.getSettings iap.webServices.updateSettings
Versões do serviço da Web iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings
Tipos da Web iap.webTypes.getSettings iap.webTypes.updateSettings

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

Personalizar as configurações do IAP

O IAP fornece as configurações de personalização a seguir:

Campo Descrição
access_settings.cors_settings.allow_http_options Controla HTTP OPTIONS (simulação de CORS).
access_settings.oauth_settings.login_hint Simplifica o login para usuários de um domínio do G Suite
application_settings.access_denied_page_settings.access_denied_page_uri Mostra uma página de erro personalizada quando o acesso for negado
application_settings.csm_settings.rctoken_aud Emitir RCTokens do GKE Enterprise e do Istio
access_settings.gcip_settings Autentica com o Identity Platform
access_settings.ReauthSettings Defina uma política de reautenticação. Para mais detalhes, consulte Configurar a reautenticação.

As configurações são aplicáveis para envolvidos no projeto ou em qualquer nível inferior de recursos do IAP.

É possível definir configurações para recursos de IAP baseados na Web, mas não recursos acessados com o IAP para encaminhamento de TCP.

Usando access_settings.cors_settings.allow_http_options como exemplo, é possível definir as configurações de personalização da seguinte maneira:

YAML

access_settings:
  cors_settings:
    allow_http_options: "false"

JSON

{
  "access_settings": {
    "cors_settings": {
      "allow_http_options": "false"
    }
  }
}

As seções a seguir fornecem mais informações sobre cada configuração.

Permitir solicitações HTTP OPTIONS (simulação de CORS)

Campo Valor padrão
access_settings.cors_settings.allow_http_options false

A política de mesma origem (em inglês) da Web impede que os navegadores enviem solicitações AJAX entre sites. Por padrão, o JavaScript em uma página exibida a partir de uma origem não pode usar AJAX para enviar uma solicitação a um app protegido com IAP hospedado em uma origem diferente.

Em alguns casos, os navegadores tentarão enviar uma solicitação automaticamente, mas descartarão o conteúdo da resposta se ela não incluir um cabeçalho Access-Control-Allow-Origin. Para permitir esses tipos de solicitações, inclua esse cabeçalho nas respostas do seu app.

Em outros casos, o navegador enviará uma solicitação simulada de CORS, um tipo de solicitação HTTP OPTIONS, antes de enviar a solicitação entre origens. Se o app não retornar uma resposta simulada apropriada, contendo os cabeçalhos de resposta Access-Control-* obrigatórios, o navegador bloqueará a solicitação com um erro. Além disso, como as solicitações simuladas não são enviadas com qualquer credencial de autenticação, como um cookie de sessão, o IAP também responderá com um erro.

Faça o seguinte para permitir essas solicitações:

  1. Adicione um código ao app que responda a solicitações OPTIONS.

  2. Altere a configuração de access_settings.cors_settings.allow_http_options para true. Desse modo, o IAP transmitirá as solicitações OPTIONS para seu aplicativo.

Autenticar usando um domínio do Google Workspace

Campo Valor padrão
access_settings.oauth_settings.login_hint ""

Se você quer que seu app seja usado apenas pelos membros de um domínio específico do espaço de trabalho do Google, configure o IAP para otimizar o fluxo de autenticação. Isso traz vários benefícios:

  • Se um usuário tiver feito login com várias contas, como uma conta de trabalho e outra pessoal, o sistema selecionará automaticamente a conta de trabalho em vez de exibir a IU de seleção de conta.

  • Se um usuário não estiver conectado com uma Conta do Google, a UI de login vai preencher automaticamente a parte referente ao domínio no endereço de e-mail, ou seja, o usuário precisará digitar apenas alice, em vez de alice@example.com, por exemplo.

  • Se você configurou seu domínio do Google Workspace para usar um provedor de logon único de terceiros, o sistema exibirá uma página de login personalizada, em vez da página do Google.

Para ativar esse comportamento, defina o valor de access_settings.oauth_settings.login_hint como seu nome de domínio do Google Workspace, como example.com. A propriedade do domínio precisa ter sido verificada: não é possível usar domínios DNS arbitrários da Internet que você possui. Os domínios adicionados como principal ou secundário do Google Workspace são verificados e podem ser usados aqui.

Se for necessário autenticar usuários de fora do domínio, use a autenticação programática.

Para mais informações, consulte a documentação do OpenID Connect.

Definir uma página de erro personalizada de acesso negado

Campo Valor padrão
application_settings.access_denied_page_settings.access_denied_page_uri ""

Você pode definir um URL nesse campo que redirecione os usuários para uma página personalizada, em vez da página de erro IAP padrão sempre que o acesso for negado por uma política.

Você também pode incorporar o URL de solução de problemas com esse recurso. Para mais informações, consulte Como ativar o URL de solução de problemas para a página de erro personalizada "Acesso negado".

Emitir IDs de malha RCToken do GKE Enterprise e do Istio

Campo Valor padrão
application_settings.csm_settings.rctoken_aud ""

Se você usa o Istio no GKE, tem a opção de configurar o IAP para produzir um RCToken compatível com o Istio. Se o campo acima estiver definido como uma string não vazia, o IAP incluirá um cabeçalho HTTP Ingress-Authorization com um RCToken. A declaração aud será definida como o valor do campo.

Autentica com o Identity Platform

Campo Valor padrão
access_settings.gcip_settings null

Por padrão, o IAP usa o sistema de identidade integrado do Google. Se o campo acima estiver definido, o IAP usará o Identity Platform para autenticar usuários.

Noções básicas sobre a herança de configurações na hierarquia de recursos

O IAP sempre avalia as solicitações para uma versão específica do serviço da Web. Esse tipo de recurso está no nível mais baixo da hierarquia, que tem esta aparência:

- Organization
  - Folder
    - Project
      - All web services
        - Web service type
          - Web service
            - Web service version

Para determinar as configurações a serem aplicadas a uma versão do serviço da Web, o IAP começa com um conjunto padrão de valores e percorre a hierarquia de cima para baixo. As configurações são aplicadas conforme são encontradas. Por isso, os valores definidos em um nível inferior substituem aqueles definidos em um nível superior. Por exemplo, se access_settings.cors_settings.allow_http_options estiver definido como true para envolvidos no projeto, mas como false no nível do serviço, na prática, o valor será false.

Consulte Recursos e permissões para mais informações sobre a hierarquia de recursos do IAP.