Este documento descreve quando e como personalizar uma configuração do OAuth para o Identity-Aware Proxy (IAP).
O IAP usa um cliente OAuth gerido pela Google para autenticar os utilizadores.
O cliente OAuth gerido pela Google restringe o acesso a utilizadores na mesma organização quando acedem a aplicações com IAP através de um navegador.
Quando usar uma configuração OAuth personalizada
Tem de usar uma configuração OAuth personalizada para fazer o seguinte:
- Para permitir o acesso a aplicações com IAP para utilizadores fora da organização.
- Para apresentar as informações da sua marca durante a autenticação.
- Para ativar o acesso programático à sua aplicação.
Quando personaliza a configuração de OAuth, tem de configurar o ecrã de consentimento OAuth. Isto requer que as informações de branding da sua aplicação passem pelo processo de validação da Google. Para mais informações sobre o processo de validação, consulte o artigo Configurar o ecrã de consentimento OAuth.
É responsável por criar e gerir as credenciais de um cliente OAuth personalizado. Isto inclui armazenar o segredo do cliente de forma segura e partilhá-lo com utilizadores autorizados quando necessário.
Comparação entre o cliente OAuth gerido pela Google e o cliente OAuth personalizado
Os clientes OAuth geridos pela Google não podem aceder programaticamente a aplicações protegidas pelo IAP. No entanto, ainda é possível aceder programaticamente às aplicações protegidas pelo IAP que usam o cliente OAuth gerido pela Google através de uma definição programmatic_clients ou de um JWT de conta de serviço separado.
A tabela seguinte apresenta uma comparação entre o cliente OAuth gerido pela Google e um cliente OAuth personalizado.
| Cliente OAuth gerido pela Google | Cliente OAuth personalizado | |
|---|---|---|
| Utilizadores | Apenas para uso interno | Interno e externo |
| Marca | Google Cloud marca | Marca detida pelo cliente |
| Configuração do OAuth | Configurado pela Google | Configurado pelo cliente |
| Credenciais do OAuth | Gerido pela Google | Gerido pelo cliente |
| Acesso à aplicação | Apenas fluxo do navegador | Fluxo do navegador e acesso programático |
Ative a IAP através de uma configuração de cliente OAuth personalizada
As secções seguintes explicam como ativar a IAP através de uma configuração de cliente OAuth personalizada para diferentes recursos.
App Engine
Consola
If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.
Setting up IAP access
-
Go to the
Identity-Aware Proxy page.
Go to the Identity-Aware Proxy page - Select the project you want to secure with IAP.
- Select the checkbox next to the resource you want to grant access to.
- On the right side panel, click Add principal.
-
In the Add principals dialog that appears, enter the email addresses of groups or
individuals who should have the IAP-secured Web App User role for the project.
The following kinds of principals can have this role:
- Google Account: user@gmail.com
- Google Group: admins@googlegroups.com
- Service account: server@example.gserviceaccount.com
- Google Workspace domain: example.com
Make sure to add a Google Account that you have access to.
- Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
- Click Save.
Turning on IAP
-
On the Identity-Aware Proxy page, under APPLICATIONS,
find the application you want to restrict
access to. To turn on IAP for a resource,
- In the Turn on IAP window that appears, click Turn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only accounts with the IAP-Secured Web App User role on the project will be given access.
gcloud
Antes de configurar o projeto e as IAPs, precisa de uma versão atualizada da CLI gcloud. Para ver instruções sobre como instalar a CLI gcloud, consulte o artigo Instale a CLI gcloud.
-
Para autenticar, use a CLI do Google Cloud e execute o seguinte comando.
gcloud auth login - Para iniciar sessão, siga o URL apresentado.
- Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
-
Execute o seguinte comando para especificar o projeto que contém o recurso que quer proteger com o IAP.
gcloud config set project PROJECT_ID - Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
- Guarde o ID de cliente e o segredo do cliente OAuth.
-
Para ativar a IAP, execute o seguinte comando.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
Depois de ativar o IAP, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a
gestão de funções e autorizações.
API
Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
Guarde o ID de cliente e o segredo do cliente OAuth.
Execute o seguinte comando para preparar um ficheiro
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFExecute o seguinte comando para ativar a IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
Depois de ativar o IAP, pode usar a CLI do Google Cloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a
gestão de funções e autorizações.
Compute Engine
Consola
Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth.
Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Para o fazer, conclua os passos seguintes e, de seguida, siga as instruções em Configurar CAsI.
Não configure o dispositivo BackendConfig.
Configurar o acesso à IAP
-
Aceda à
página Identity-Aware Proxy.
Aceda à página Identity-Aware Proxy - Selecione o projeto que quer proteger com o IAP.
-
Selecione a caixa de verificação junto ao recurso ao qual quer conceder acesso.
Se não vir um recurso, certifique-se de que o recurso foi criado e que o controlador de entrada do Motor de Cálculo do Google BackendConfig está sincronizado.
Para verificar se o serviço de back-end está disponível, execute o seguinte comando gcloud:
gcloud compute backend-services list - No painel do lado direito, clique em Adicionar diretor.
-
Na caixa de diálogo Adicionar responsáveis apresentada, introduza os endereços de email dos grupos ou
indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto.
Os seguintes tipos de principais podem ter esta função:
- Conta Google: user@gmail.com
- Grupo Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Certifique-se de que adiciona uma Conta Google à qual tem acesso.
- Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista pendente Funções.
- Clique em Guardar.
Ativar o IAP
-
Na página Identity-Aware Proxy, em APLICAÇÕES,
encontre o balanceador de carga que serve o instance group ao qual quer restringir
o acesso. Para ativar a IAP para um recurso:
Para ativar as CNAs:- Pelo menos, um protocolo na configuração de front-end do balanceador de carga tem de ser HTTPS. Saiba como configurar um balanceador de carga.
-
Precisa das autorizações
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.update, eclientauthconfig.clients.getWithSecret. Estas autorizações são concedidas por funções, como a função de editor do projeto. Para saber mais, consulte o artigo Gerir o acesso a recursos protegidos pela IAP.
- Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto têm acesso.
gcloud
Antes de configurar o projeto e a IAP, precisa de uma versão atualizada da CLI gcloud. Para ver instruções sobre como instalar a CLI gcloud, consulte o artigo Instale a CLI gcloud.
-
Para autenticar, use a CLI do Google Cloud e execute o seguinte comando.
gcloud auth login - Para iniciar sessão, siga o URL apresentado.
- Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
-
Execute o seguinte comando para especificar o projeto que contém o recurso que quer proteger com o IAP.
gcloud config set project PROJECT_ID
- Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
- Guarde o ID de cliente e o segredo do cliente OAuth.
-
Para ativar as CAs, execute o comando com âmbito global ou regional.
Âmbito global Âmbito regionalgcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETgcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
Depois de ativar o IAP, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a
gestão de funções e autorizações.
API
Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
Guarde o ID de cliente e o segredo do cliente OAuth.
Execute o seguinte comando para preparar um ficheiro
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOFExecute o seguinte comando para ativar a IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
Depois de ativar o IAP, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a
gestão de funções e autorizações.
Cloud Run
Consola
Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth
Configurar o acesso à IAP
- Abra a página Identity-Aware Proxy.
Aceder ao Identity-Aware Proxy - Selecione o projeto que quer proteger com o IAP.
- Em Aplicações, selecione a caixa de verificação junto ao serviço de back-end do equilibrador de carga ao qual quer adicionar membros.
- No painel lateral direito, clique em Adicionar membro.
Na caixa de diálogo Adicionar membros, introduza as contas de grupos ou indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto. Os seguintes tipos de contas podem ser membros:
- Conta Google: user@gmail.com. Também pode ser uma conta do Google Workspace, como user@google.com ou algum outro domínio do Google Workspace.
- Grupo Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista Funções.
Clique em Guardar.
Ativar o IAP
- Na página de IAP, em Aplicações, encontre o serviço de back-end do balanceador de carga ao qual quer restringir o acesso. Clique no botão IAP para ativar a IAP num recurso.
- Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto recebem acesso.
Para autorizar a IAP a enviar tráfego para o serviço do Cloud Run de back-end, siga as instruções em Adicione responsáveis a um serviço para adicionar o seguinte responsável e função.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Função: Cloud Run Invoker
- Principal:
gcloud
- Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
- Guarde o ID de cliente e o segredo do cliente OAuth.
- Se ainda não o fez, crie uma conta de serviço executando o seguinte comando. Se tiver criado anteriormente uma conta de serviço, a execução do comando não cria contas de serviço duplicadas.
gcloud beta services identity create \ --service=iap.googleapis.com --project=PROJECT_ID - Execute o seguinte comando para conceder autorização ao invocador na conta de serviço criada no passo anterior.
gcloud run services add-iam-policy-binding SERVICE-NAME \ --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker' Ative o IAP executando o comando com âmbito global ou regional, consoante o serviço de back-end do balanceador de carga seja global ou regional. Use o ID de cliente OAuth e o segredo do passo anterior.
Âmbito global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETÂmbito regional
Substitua o seguinte:gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET- BACKEND_SERVICE_NAME: o nome do serviço de back-end.
- CLIENT_ID: o ID do cliente OAuth, do passo anterior.
- CLIENT_SECRET: o segredo do cliente OAuth, do passo anterior.
- REGION_NAME: a região na qual quer ativar as CNAs.
Depois de ativar o IAP, pode usar a Google Cloud CLI para modificar a política de acesso do IAP através da função de gestão de identidade e de acesso roles/iap.httpsResourceAccessor. Consulte o artigo Gerir funções e autorizações para mais informações.
Google Kubernetes Engine
Consola
Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth.
Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Para o fazer, conclua os passos seguintes e, de seguida, siga as instruções em Configurar CAsI.
Não configure o dispositivo BackendConfig.
Configurar o acesso à IAP
-
Aceda à
página Identity-Aware Proxy.
Aceda à página Identity-Aware Proxy - Selecione o projeto que quer proteger com o IAP.
-
Selecione a caixa de verificação junto ao recurso ao qual quer conceder acesso.
Se não vir um recurso, certifique-se de que o recurso foi criado e que o controlador de entrada do Motor de Cálculo do Google BackendConfig está sincronizado.
Para verificar se o serviço de back-end está disponível, execute o seguinte comando gcloud:
gcloud compute backend-services list - No painel do lado direito, clique em Adicionar diretor.
-
Na caixa de diálogo Adicionar responsáveis apresentada, introduza os endereços de email dos grupos ou
indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto.
Os seguintes tipos de principais podem ter esta função:
- Conta Google: user@gmail.com
- Grupo Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Certifique-se de que adiciona uma Conta Google à qual tem acesso.
- Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista pendente Funções.
- Clique em Guardar.
Ativar o IAP
-
Na página Identity-Aware Proxy, em APLICAÇÕES,
encontre o balanceador de carga que serve o instance group ao qual quer restringir
o acesso. Para ativar a IAP para um recurso:
Para ativar as CNAs:- Pelo menos, um protocolo na configuração de front-end do balanceador de carga tem de ser HTTPS. Saiba como configurar um balanceador de carga.
-
Precisa das autorizações
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.update, eclientauthconfig.clients.getWithSecret. Estas autorizações são concedidas por funções, como a função de editor do projeto. Para saber mais, consulte o artigo Gerir o acesso a recursos protegidos pela IAP.
- Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto têm acesso.
GKE
Configure o BackendConfig
Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Consulte Configurar IAP para ver instruções.
Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
Crie um segredo do Kubernetes para encapsular o cliente OAuth.
Substitua o seguinte:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET: o nome do segredo a criarCLIENT_ID: o ID de cliente OAuthCLIENT_SECRET: O segredo do cliente OAuth
Deve receber uma confirmação, como o seguinte resultado, de que o segredo foi criado com êxito:
secret "MY_SECRET" created
Adicione as credenciais do OAuth ao BackendConfig.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRETAtive o IAP associando portas de serviço ao seu BackendConfig. Consulte o artigo Associar o BackendConfig ao seu Ingress. Uma forma de fazer esta associação é definir todas as portas do serviço como predefinição para o BackendConfig, o que pode fazer adicionando a seguinte anotação ao recurso Service:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
Depois de ativar o IAP, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a
gestão de funções e autorizações.
Resolução de problemas
Se o elemento secretName ao qual fez referência não existir ou não estiver estruturado corretamente, é apresentada uma das seguintes mensagens de erro:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.Para resolver este erro, certifique-se de que criou o segredo do Kubernetes corretamente, conforme descrito no passo 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.Para resolver este erro, certifique-se de que criou as credenciais OAuth corretamente. Além disso, certifique-se de que fez referência às chavesclient_ideclient_secretcorretas.