Neste artigo, você aprenderá a personalizar as configurações do Identity-Aware Proxy (IAP). Com essas configurações, é possível controlar os comportamentos, incluindo:
- 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.
Como gerenciar as configurações
É possível visualizar e atualizar as configurações do IAP em balanceadores de carga e apps do App Engine usando o console do Google Cloud, a API IAP ou a Google Cloud CLI.
Para atualizar as configurações do IAP em todos os recursos, incluindo pastas, projetos e organizações, use a CLI ou API do Google Cloud.
Para gerenciar as configurações no IAP:
Console
Para conferir e modificar as configurações usando o console do Google Cloud:
- Acesse a página Identity-Aware Proxy.
Acessar a página "Identity-Aware Proxy" - Encontre seu recurso na guia APLICAÇÕES.
- Abra o menu mais ações e clique em Configurações.
- Clique em Salvar.
gcloud
Para receber e modificar configurações usando a Google Cloud CLI, use os comandos
gcloud iap settings get
e
gcloud iap settings set
conforme mostrado abaixo:
- Para ver as configurações de um projeto, pasta ou organização, use os comandos a seguir. Para configurar as configurações do IAP usando o console do 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 desejado no 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
Noções básicas sobre controle de acesso de configurações
É necessário ter permissões específicas para visualizar e modificar as configurações do IAP. Veja na tabela abaixo a lista de permissões necessárias para ler e modificar as configurações de cada tipo de recurso. Consulte Recursos e permissões para uma descrição dos diferentes tipos de recursos.
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 serviços da Web | iap.web.getSettings |
iap.web.updateSettings |
Tipo de serviço da Web | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
Serviço da Web | iap.webServices.getSettings |
iap.webServices.updateSettings |
Versão do serviço da Web | iap.webServiceVersions.getSettings |
iap.webServiceVersions.updateSettings |
O papel de administrador de configurações do IAP (roles/iap.settingsAdmin
) concede todas essas permissões, assim como o de editor do projeto (roles/editor
). O papel de visualizador do projeto (roles/viewer
) concede todas as permissões getSettings
.
Para mais informações sobre como conceder papéis do IAM, consulte Como conceder, alterar e revogar acesso.
Como 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 reautorizaçã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.
Como 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:
Adicione um código ao app que responda a solicitações
OPTIONS
.Altere a configuração de
access_settings.cors_settings.allow_http_options
paratrue
. Desse modo, o IAP transmitirá as solicitaçõesOPTIONS
para seu aplicativo.
Como 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 IU de login 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 dealice@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 da Internet arbitrários que você possui. Os domínios que foram adicionados como domínio principal ou secundário do Google Workspace são verificados e, portanto, podem ser usados aqui.
Se você precisar autenticar usuários fora do domínio, use a autenticação programática.
Para mais informações, consulte a documentação do OpenID Connect.
Como 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.
Também é possível 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".
Como 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.
Como autenticar com o Identity Platform
Campo | Valor padrão |
---|---|
access_settings.gcip_settings |
null |
Por padrão, o IAP usa o sistema de identidade nativo 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 modificam 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.