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
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 principals with the IAP-Secured Web App User (
roles/iap.httpsResourceAccessor) role on the project will be given access.
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 BackendConfig Compute Engine 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
If you haven't configured your project's OAuth consent screen, you're prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen
Setting up IAP access
- Open the Identity-Aware Proxy page.
Go to Identity-Aware Proxy - Select the project you want to secure with IAP.
- Under Applications, select the checkbox next to the load balancer backend service to which you want to add members.
- On the right side panel, click Add member.
In the Add members dialog, enter the accounts of groups or individuals who should have the IAP-secured Web App User role for the project. The following kinds of accounts can be members:
- Google Account: user@gmail.com - This can also be a Google Workspace account, such as user@google.com or some other Google Workspace domain.
- Google Group: admins@googlegroups.com
- Service account: server@example.gserviceaccount.com
- Google Workspace domain: example.com
Select Cloud IAP > IAP-secured Web App User from the Roles list.
Click Save.
Turning on IAP
- On the IAP page, under Applications, find the load balancer backend service to which you want to restrict access. Click the IAP toggle to enable IAP on 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.
To authorize IAP to send traffic to the backend Cloud Run service, follow the instructions at Add principals to a service to add the following principle and role.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Role: Cloud Run Invoker
- 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 BackendConfig Compute Engine 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
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.