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 você ainda não configurou a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.
Como configurar o acesso do IAP
-
Acesse a página Identity-Aware Proxy.
Acessar a página "Identity-Aware Proxy" - Selecione o projeto que você quer proteger com o IAP.
- Marque a caixa de seleção ao lado do recurso a que você quer conceder acesso.
- No painel lateral à direita, clique em Adicionar principal.
-
Na caixa de diálogo Adicionar principais que é exibida, insira os endereços de e-mail 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 principais podem ter essa função:
- Conta do Google: user@gmail.com
- grupo do Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Inclua uma Conta do Google a que você tenha acesso.
- Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
- Clique em Salvar.
Ativando o IAP
-
Na página Identity-Aware Proxy, em Aplicativos, encontre o aplicativo a que você quer restringir o acesso. Para ativar o IAP para um recurso,
-
Na janela Ativar IAP que é exibida, 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 a principais com o papel Usuário do app da Web protegido pelo IAP (
roles/iap.httpsResourceAccessor) no projeto.
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
Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
Save the OAuth client ID and secret.
Run the following command to prepare a
settings.jsonfile.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFRun the following command to enable 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"
After you enable IAP, you can use the Google Cloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
Compute Engine
Console
Se você ainda não configurou a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.
Se você estiver executando clusters do GKE versão 1.24 ou mais recente, configure
o IAP e o GKE usando a API Gateway do Kubernetes. Para isso, conclua
as etapas a seguir e siga as instruções em
Configurar o IAP.
Não configure BackendConfig.
Como configurar o acesso do IAP
-
Acesse a página Identity-Aware Proxy.
Acessar a página "Identity-Aware Proxy" - Selecione o projeto que você quer proteger com o IAP.
-
Marque a caixa de seleção ao lado do recurso a que você quer conceder acesso.
Se você não encontrar um recurso, verifique se ele foi criado e se o controlador de entrada do Compute Engine 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 lateral à direita, clique em Adicionar principal.
-
Na caixa de diálogo Adicionar principais que é exibida, insira os endereços de e-mail 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 principais podem ter essa função:
- Conta do Google: user@gmail.com
- grupo do Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Inclua uma Conta do Google a que você tenha acesso.
- Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
- Clique em Salvar.
Como ativar o IAP
-
Na página Identity-Aware Proxy, em APLICATIVOS,
encontre o balanceador de carga que atende ao instance group a que você quer restringir
o acesso. Para ativar o IAP para um recurso,
Para ativar o IAP:- É necessário que pelo menos um protocolo na configuração de front-end do balanceador de carga seja HTTPS. Saiba mais sobre como configurar um balanceador de carga.
-
Você precisa ter as permissões
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.updateeclientauthconfig.clients.getWithSecret. Elas são concedidas por alguns papéis, como o de editor do projeto. Para saber mais, consulte Como gerenciar o acesso a recursos protegidos pelo IAP.
- Na janela Ativar IAP que é exibida, 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.
gcloud
Before you set up your project and IAP, you need an up-to-date version of the gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.
-
To authenticate, use the Google Cloud CLI and run the following command.
gcloud auth login - To sign in, follow the URL that appears.
- After you sign in, copy the verification code that appears and paste it in the command line.
-
Run the following command to specify the project that contains the resource that you want to protect with IAP.
gcloud config set project PROJECT_ID
- Follow the instructions in Creating OAuth clients for IAP. to configure the OAuth consent screen and create the OAuth client.
- Save the OAuth client ID and secret.
-
To enable IAP, run either the globally or regionally scoped command.
Global scope Regional scopegcloud 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
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
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 você ainda não configurou a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.
Se você estiver executando clusters do GKE versão 1.24 ou mais recente, configure
o IAP e o GKE usando a API Gateway do Kubernetes. Para isso, conclua
as etapas a seguir e siga as instruções em
Configurar o IAP.
Não configure BackendConfig.
Como configurar o acesso do IAP
-
Acesse a página Identity-Aware Proxy.
Acessar a página "Identity-Aware Proxy" - Selecione o projeto que você quer proteger com o IAP.
-
Marque a caixa de seleção ao lado do recurso a que você quer conceder acesso.
Se você não encontrar um recurso, verifique se ele foi criado e se o controlador de entrada do Compute Engine 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 lateral à direita, clique em Adicionar principal.
-
Na caixa de diálogo Adicionar principais que é exibida, insira os endereços de e-mail 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 principais podem ter essa função:
- Conta do Google: user@gmail.com
- grupo do Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Inclua uma Conta do Google a que você tenha acesso.
- Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
- Clique em Salvar.
Como ativar o IAP
-
Na página Identity-Aware Proxy, em APLICATIVOS,
encontre o balanceador de carga que atende ao instance group a que você quer restringir
o acesso. Para ativar o IAP para um recurso,
Para ativar o IAP:- É necessário que pelo menos um protocolo na configuração de front-end do balanceador de carga seja HTTPS. Saiba mais sobre como configurar um balanceador de carga.
-
Você precisa ter as permissões
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.updateeclientauthconfig.clients.getWithSecret. Elas são concedidas por alguns papéis, como o de editor do projeto. Para saber mais, consulte Como gerenciar o acesso a recursos protegidos pelo IAP.
- Na janela Ativar IAP que é exibida, 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.
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.