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
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
-
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.
- 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 a aplicação à qual quer restringir
o acesso. Para ativar a IAP para um 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 têm acesso.
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" } } EOF
Execute 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, em 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 equilibrador 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 equilibrador de carga.
-
Precisa das autorizações
compute.backendServices.update
,clientauthconfig.clients.create
, 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 pelo 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_SECRET
gcloud 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" } } EOF
Execute 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, em 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 equilibrador 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 equilibrador de carga.
-
Precisa das autorizações
compute.backendServices.update
,clientauthconfig.clients.create
, 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 pelo 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_SECRET
Ative 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_id
eclient_secret
corretas.