Personalizar CNA

Este artigo descreve como personalizar as definições do Identity-Aware Proxy (IAP). Com estas definições, pode controlar os comportamentos, incluindo:

  • Compatibilidade com o GKE Enterprise e o Istio no Google Kubernetes Engine.
  • O processamento de pedidos de verificação prévia do CORS.
  • Como os utilizadores são autenticados.
  • A página de erro apresentada aos utilizadores quando o acesso é recusado.

Gerir definições

Pode ver e atualizar as definições do IAP no equilibrador de carga e nas apps do App Engine através da Google Cloud consola, da API IAP ou da CLI Google Cloud.

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

Para gerir as definições na IAP:

Consola

Para ver e modificar as definições através da Google Cloud consola:

  1. Aceda à página Identity-Aware Proxy.
    Aceda à página Identity-Aware Proxy
  2. Encontre o seu recurso no separador APLICAÇÕES.
  3. Abra o menu mais ações e clique em Definições.
  4. Clique em Guardar.

gcloud

Para obter e modificar definições através da Google Cloud CLI, use os comandos gcloud iap settings get e gcloud iap settings set conforme mostrado abaixo:

  • Para obter definições de um projeto, uma pasta ou uma organização, use os seguintes comandos. Para configurar as definições da IAP através da Google Cloud consola ou da CLI gcloud, consulte o artigo Personalizar a IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • Para obter definições de um tipo de recurso de IAP específico num projeto:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • Para definir as definições de um projeto, uma pasta ou uma organização, ou um tipo de recurso de IAP num projeto, crie um ficheiro JSON ou YAML que contenha as novas definições pretendidas e especifique o caminho para o ficheiro. 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 obter e modificar definições através da API IAP, faça pedidos através dos verbos HTTP GET ou PATCH para o ponto final do recurso pretendido em Google Cloud. Combine o sufixo do caminho :iapSettings, um caminho de recurso (conforme detalhado em Recursos e autorizações) e um método HTTP adequado para obter ou modificar uma definição. Consulte getIapSettings() e updateIapSettings() para mais informações:

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

Compreender o controlo de acesso para definições

São necessárias autorizações específicas para ver e modificar as definições de IAP. A tabela abaixo apresenta as autorizações necessárias para ler e modificar as definições de cada tipo de recurso. Consulte os Recursos e autorizações para ver uma descrição dos diferentes tipos de recursos.

Recurso Autorização para ver definições Autorização para modificar definiçõ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 serviços Web iap.web.getSettings iap.web.updateSettings
Tipo de serviço Web iap.webTypes.getSettings iap.webTypes.updateSettings
Serviço Web iap.webServices.getSettings iap.webServices.updateSettings
Versão do serviço Web iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings

A função Administrador das definições do IAP (roles/iap.settingsAdmin) concede todas estas autorizações, tal como a função Editor do projeto (roles/editor). A função Leitor do projeto (roles/viewer) concede todas as autorizações getSettings.

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

Personalizar definições de IAP

A IAP oferece as seguintes definições de personalização:

Campo Descrição
access_settings.cors_settings.allow_http_options Controle as OPTIONS HTTP (verificação prévia da CORS)
access_settings.oauth_settings.login_hint Simplifique o início de sessão para utilizadores de um domínio do G Suite
application_settings.access_denied_page_settings.access_denied_page_uri Mostrar uma página de erro personalizada quando o acesso é recusado
application_settings.csm_settings.rctoken_aud Emita RCTokens do GKE Enterprise e do Istio
access_settings.gcip_settings Efetue a autenticação com o Identity Platform
access_settings.ReauthSettings Defina uma política de reautenticação. Para ver detalhes, consulte o artigo Configurar a reautenticação

Pode aplicar definições ao nível do projeto ou a qualquer nível de recurso de IAP inferior.

Pode configurar definições para recursos do IAP baseados na Web, mas não para recursos acedidos com o IAP para encaminhamento TCP.

Usando o access_settings.cors_settings.allow_http_options como exemplo, pode configurar as definições de personalização da seguinte forma:

YAML

access_settings:
  cors_settings:
    allow_http_options: "false"

JSON

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

As secções seguintes fornecem mais informações sobre cada definição.

Permitir pedidos HTTP OPTIONS (verificação prévia de CORS)

Campo Valor predefinido
access_settings.cors_settings.allow_http_options false

A política de mesma origem da Web impede que os navegadores enviem pedidos AJAX entre Websites. Por predefinição, o JavaScript numa página publicada a partir de uma origem não pode usar AJAX para enviar um pedido a uma app protegida com a IAP alojada numa origem diferente.

Em alguns casos, os navegadores tentam automaticamente um pedido, mas rejeitam o conteúdo da resposta se não incluir um cabeçalho Access-Control-Allow-Origin. Para permitir estes tipos de pedidos, inclua este cabeçalho nas respostas da sua app.

Noutros casos, o navegador envia um pedido de verificação prévia do CORS, um tipo de pedido OPTIONS HTTP, antes de enviar o pedido de origem cruzada. Se a sua app não responder com uma resposta de pré-voo adequada (que contenha os cabeçalhos de resposta Access-Control-* necessários), o navegador bloqueia o pedido com um erro. Além disso, uma vez que os pedidos de pré-voo não são enviados com credenciais de autenticação (como um cookie de sessão do IAP), o IAP também responde com um erro.

Para permitir estes pedidos:

  1. Adicione código à sua app que responda aos pedidos OPTIONS.

  2. Altere a definição access_settings.cors_settings.allow_http_options para true, para que as aprovações de IAP transmitam pedidos OPTIONS à sua aplicação.

Autenticação através de um domínio do Google Workspace

Campo Valor predefinido
access_settings.oauth_settings.login_hint ""

Se apenas os membros de um domínio específico do Google Workspace usarem a sua app, pode configurar a IAP para otimizar o fluxo de autenticação. Isto tem várias vantagens:

  • Se um utilizador tiver sessão iniciada com várias contas (como uma conta profissional e uma conta pessoal), o sistema seleciona automaticamente a conta profissional em vez de apresentar a IU de seleção de contas.

  • Se um utilizador não tiver sessão iniciada na respetiva Conta Google, a IU de início de sessão preenche automaticamente a parte do domínio do endereço de email (ou seja, o utilizador só tem de escrever alice em vez de alice@example.com, por exemplo).

  • Se o seu domínio do Google Workspace estiver configurado para usar um fornecedor de início de sessão único de terceiros, o sistema apresenta essa página de início de sessão personalizada em vez da página da Google.

Para ativar este comportamento, defina o valor de access_settings.oauth_settings.login_hint para o nome do domínio do Google Workspace (como example.com). A propriedade do domínio tem de ter sido validada: não pode usar domínios DNS da Internet arbitrários que sejam seus. (Os domínios que foram adicionados como um domínio principal ou secundário do Google Workspace são validados e, por isso, podem ser usados aqui.)

Se precisar de autenticar utilizadores fora do domínio, pode usar a autenticação programática.

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

Definir uma página de erro de acesso negado personalizada

Campo Valor predefinido
application_settings.access_denied_page_settings.access_denied_page_uri ""

Pode definir um URL neste campo que redireciona os utilizadores para uma página personalizada em vez da página de erro de IAP predefinida sempre que o acesso for recusado por uma política.

Também pode incorporar o URL de resolução de problemas com esta funcionalidade. Para mais informações, consulte o artigo Ativar o URL de resolução de problemas para a sua página de erro de acesso negado personalizada.

Emitir IDs da malha RCToken do GKE Enterprise e do Istio

Campo Valor predefinido
application_settings.csm_settings.rctoken_aud ""

Se estiver a usar o Istio no GKE, pode configurar o IAP para produzir um RCToken compatível com o Istio. Se este campo estiver definido como uma string não vazia, a IAP adiciona um cabeçalho HTTP Ingress-Authorization que contém um RCToken. A reivindicação aud vai ser definida com o valor do campo.

Autenticação com a Identity Platform

Campo Valor predefinido
access_settings.gcip_settings null

Por predefinição, a IAP usa o sistema de identidade nativo da Google. Se este campo estiver definido, o IAP usa o Identity Platform em alternativa para autenticar os utilizadores.

Compreender a herança de definições na hierarquia de recursos

A IAP avalia sempre os pedidos de uma versão específica do serviço Web. Este tipo de recurso está no nível mais baixo da hierarquia de recursos, que tem o seguinte aspeto:

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

Para determinar as definições a aplicar a uma versão do serviço Web, o IAP começa com um conjunto de valores predefinido e, em seguida, percorre a hierarquia de cima para baixo. As definições são aplicadas à medida que são encontradas, pelo que os valores definidos a um nível inferior substituem os valores definidos a um nível superior. Por exemplo, se access_settings.cors_settings.allow_http_options estiver definido como true ao nível do projeto, mas false ao nível do serviço, o valor efetivo é false.

Consulte o artigo Recursos e autorizações para saber mais acerca da hierarquia de recursos da IAP.