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:
- Aceda à página Identity-Aware Proxy.
Aceda à página Identity-Aware Proxy - Encontre o seu recurso no separador APLICAÇÕES.
- Abra o menu mais ações e clique em Definições.
- 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:
Adicione código à sua app que responda aos pedidos
OPTIONS
.Altere a definição
access_settings.cors_settings.allow_http_options
paratrue
, para que as aprovações de IAP transmitam pedidosOPTIONS
à 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 dealice@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.