Este documento descreve quando e como personalizar uma configuração do OAuth para o Identity-Aware Proxy (IAP).
O IAP usa um cliente OAuth gerenciado pelo Google para autenticar usuários.
O cliente OAuth gerenciado pelo Google restringe o acesso a usuários da mesma organização ao acessar aplicativos com IAP por um navegador.
Quando usar uma configuração OAuth personalizada
É necessário usar uma configuração OAuth personalizada para fazer o seguinte:
- Permitir o acesso a aplicativos com IAP para usuários de fora da organização.
- Para mostrar as informações da sua marca durante a autenticação.
- Para ativar o acesso programático ao seu aplicativo.
Ao personalizar a configuração do OAuth, você precisa configurar a tela de consentimento. Para isso, as informações de branding do seu aplicativo precisam passar pelo processo de verificação do Google. Para mais informações sobre o processo de verificação, consulte Como configurar a tela de consentimento OAuth.
Você é responsável por criar e gerenciar as credenciais de um cliente OAuth personalizado. Isso inclui armazenar a chave secreta do cliente com segurança e compartilhá-la com usuários autorizados quando necessário.
Comparação entre o cliente OAuth gerenciado pelo Google e o personalizado
Os clientes OAuth gerenciados pelo Google não podem acessar de maneira programática
aplicativos protegidos pelo IAP. No entanto, os aplicativos protegidos por IAP
que usam o cliente OAuth gerenciado pelo Google ainda podem ser acessados
programaticamente usando um cliente OAuth separado configurado pela
configuração programmatic_clients
ou um JWT da conta de serviço.
A tabela a seguir mostra uma comparação entre o cliente OAuth gerenciado pelo Google e um cliente OAuth personalizado.
| Cliente OAuth gerenciado pelo Google | Cliente OAuth personalizado | |
|---|---|---|
| Usuários | Somente interno | Parceiros internos e externos |
| Brand | Google Cloud marca | Marca de propriedade do cliente |
| Configuração do OAuth | Google configurado | Configurado pelo cliente |
| Credenciais do OAuth | Gerenciada pelo Google | Gerenciada pelo cliente |
| Acesso ao aplicativo | Somente fluxo do navegador | Fluxo do navegador e acesso programático |
Ativar o IAP usando uma configuração personalizada do cliente OAuth
As seções a seguir explicam como ativar o IAP usando uma configuração personalizada do cliente OAuth para diferentes recursos.
App Engine
Console
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 o IAP, você precisa de uma versão atualizada da CLI gcloud. Para instruções sobre como instalar a CLI gcloud, consulte Instalar a CLI gcloud.
-
Para fazer a autenticação, use a CLI do Google Cloud e execute o comando a seguir.
gcloud auth login - Para fazer login, siga o URL que aparece.
- Depois de fazer login, copie o código de verificação que aparece e cole-o na linha de comando.
-
Execute o comando abaixo para especificar o projeto que contém o recurso que você quer proteger com o IAP.
gcloud config set project PROJECT_ID - Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
- Salve o ID e a chave secreta do cliente OAuth.
-
Para ativar o IAP, execute o comando a seguir.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
Depois de ativar o IAP, será possível usar a CLI gcloud para modificar a
política de acesso do IAP usando o papel do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
API
Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
Salve o ID e a chave secreta do cliente OAuth.
Execute o comando a seguir para preparar um arquivo
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFExecute o comando abaixo para ativar o 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, será possível usar a CLI do Google Cloud para modificar a
política de acesso do IAP usando o papel do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
Compute Engine
Console
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 o IAP, você precisa de uma versão atualizada da CLI gcloud. Para instruções sobre como instalar a CLI gcloud, consulte Instalar a CLI gcloud.
-
Para fazer a autenticação, use a CLI do Google Cloud e execute o comando a seguir.
gcloud auth login - Para fazer login, siga o URL que aparece.
- Depois de fazer login, copie o código de verificação que aparece e cole-o na linha de comando.
-
Execute o comando abaixo para especificar o projeto que contém o recurso que você quer proteger com o IAP.
gcloud config set project PROJECT_ID
- Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
- Salve o ID e a chave secreta do cliente OAuth.
-
Para ativar o IAP, execute o comando com escopo global ou regional.
Escopo global Escopo 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, será possível usar a CLI gcloud para modificar a
política de acesso do IAP usando o papel do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
API
Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento OAuth e criar o cliente OAuth.
Salve o ID e a chave secreta do cliente OAuth.
Execute o comando a seguir para preparar um arquivo
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOFExecute o comando abaixo para ativar o 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, será possível usar a CLI gcloud para modificar a
política de acesso do IAP usando o papel
roles/iap.httpsResourceAccessor do IAM. Saiba mais sobre como gerenciar papéis e permissões.
Cloud Run
Console
Se você ainda não tiver configurado a tela de consentimento do OAuth do seu projeto, será solicitado que você faça isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.
Como configurar o acesso do IAP
- Abra a página Identity-Aware Proxy.
Acessar a página Identity-Aware Proxy - Selecione o projeto que você quer proteger com o IAP.
- Em Aplicativos, marque a caixa de seleção ao lado do serviço de back-end do balanceador de carga em que você quer adicionar membros.
- No painel lateral à direita, clique em Adicionar membro.
Na caixa de diálogo Adicionar membros, insira as contas de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto. Os seguintes tipos de contas podem ser membros:
- Conta do 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 do Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista Papéis.
Clique em Salvar.
Ativando o IAP
- Na página IAP, em Aplicativos, encontre o serviço de back-end do balanceador de carga para o qual você quer restringir o acesso. Clique no botão IAP para ativar o IAP em um recurso.
- Na janela Ativar IAP que aparece, clique em Ativar para confirmar que você quer proteger seu recurso com o IAP. Depois disso, será necessário usar credenciais de login para todas as conexões com o balanceador de carga. O acesso será concedido apenas às contas com o papel Usuário do app da Web protegido pelo IAP no projeto.
Para autorizar o IAP a enviar tráfego para o serviço de back-end do Cloud Run, siga as instruções em Adicionar principais a um serviço para adicionar o seguinte princípio e papel.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Função: Chamador do Cloud Run
- Principal:
gcloud
- Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
- Salve o ID e a chave secreta do cliente OAuth.
- Se você ainda não fez isso, crie uma conta de serviço executando o comando a seguir. Se você já criou 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 - Conceda a permissão de invocação à conta de serviço criada na etapa anterior executando o comando a seguir.
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 de escopo global ou regional, dependendo se o serviço de back-end do balanceador de carga é global ou regional. Use o ID e a chave secreta do cliente OAuth da etapa anterior.
Escopo global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETEscopo regional
Substitua: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 da etapa anterior.
- CLIENT_SECRET: a chave secreta do cliente OAuth da etapa anterior.
- REGION_NAME: a região em que você quer ativar o IAP.
Depois de ativar o IAP, será possível usar a CLI do Google Cloud para modificar a política de acesso do IAP usando a função roles/iap.httpsResourceAccessor do Identity and Access Management. Consulte Como gerenciar papéis e permissões para mais informações.
Google Kubernetes Engine
Console
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
Configurar o BackendConfig
Se você estiver executando clusters do GKE na versão 1.24 ou mais recente, será possível configurar o IAP e o GKE usando a API Kubernetes Gateway. Consulte Configurar o IAP para ver instruções.
Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de permissão OAuth e criar o cliente OAuth.
Crie um Secret do Kubernetes para encapsular o cliente OAuth.
Substitua:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET: o nome do secret a ser criadoCLIENT_ID: o ID do cliente OAuthCLIENT_SECRET: a chave secreta do cliente OAuth
Você vai receber uma confirmação, como a saída a seguir, de que o segredo foi criado:
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 as portas de serviço ao BackendConfig. Consulte Como associar o BackendConfig ao Ingress. Uma forma de fazer isso é tornar todas as portas de serviço como padrão para seu BackendConfig. Para isso, inclua a anotação a seguir no recurso Service:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
Depois de ativar o IAP, será possível usar a CLI gcloud para modificar a
política de acesso do IAP usando o papel
roles/iap.httpsResourceAccessor do IAM. Saiba mais sobre como gerenciar papéis e permissões.
Solução de problemas
Se o secretName referenciado não existir ou não estiver estruturado
corretamente, uma das seguintes mensagens de erro será exibida:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.Para resolver esse erro, verifique se você criou o Secret do Kubernetes corretamente, conforme descrito na etapa 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.Para solucionar este erro, verifique se você criou as credenciais do OAuth corretamente. Além disso, verifique se você referenciou corretamente as chavesclient_ideclient_secret.