Neste documento, descrevemos quando e como usar clientes OAuth personalizados para o Identity-Aware Proxy (IAP).
Por padrão, o IAP usa clientes OAuth gerenciados pelo Google para autenticar usuários. Os clientes OAuth gerenciados pelo Google só podem ser usados para gerenciar o acesso de usuários internos que estão em uma organização.
É preciso usar uma configuração OAuth personalizada para:
Gerencie o acesso a aplicativos com o IAP ativado para usuários externos que estão fora da sua organização.
Gerenciar o acesso a aplicativos da Web que estão em projetos que não estão em uma organização doGoogle Cloud .
Mostrar informações personalizadas da marca nas telas de permissão durante a autenticação.
É possível configurar clientes OAuth personalizados no IAP ou diretamente na plataforma.
Ao usar clientes OAuth personalizados, é necessário configurar a tela de permissão OAuth. Para que a marca personalizada apareça na tela de permissão, envie seu aplicativo para verificação do Google. Para mais informações sobre o processo de verificação, consulte Como configurar a tela de permissão OAuth.
Ao configurar clientes OAuth personalizados, você é responsável por criar e gerenciar as credenciais, o que inclui armazenar com segurança a chave secreta do cliente e compartilhá-la com clientes autorizados quando necessário.
Comparar clientes OAuth gerenciados pelo Google e clientes OAuth personalizados
Os clientes OAuth gerenciados pelo Google não podem acessar de forma programática
aplicativos protegidos pelo IAP. No entanto, os aplicativos protegidos pelo IAP que usam o cliente OAuth gerenciado pelo Google ainda podem ser acessados de maneira programática usando um cliente OAuth separado configurado pela configuração programmatic_clients ou um JWT de conta de serviço.
A tabela a seguir compara 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 |
| Marca | Google Cloud marca | Marca do cliente |
| Configuração do OAuth | Configurado pelo Google | Cliente configurado |
| Credenciais do OAuth | Gerenciada pelo Google | Gerenciada pelo cliente |
| Acesso ao aplicativo | Somente fluxo do navegador | Fluxo do navegador e acesso programático |
Configurar a página de branding
Para configurar a página de branding personalizado usando o console do Google Cloud , faça o seguinte:
No console do Google Cloud , acesse a página Branding do OAuth:
Clique em Primeiros passos.
Em Nome do app, insira o nome do aplicativo para a tela de permissão.
Em E-mail para suporte do usuário, insira o endereço de e-mail do administrador para suporte.
Em Público-alvo, selecione Interno para restringir o acesso a usuários da sua organização ou Externo para permitir o acesso a usuários de fora da sua organização.
Em Informações de contato, insira o e-mail do administrador para entrar em contato com os apps protegidos pelos clientes OAuth. Você vai configurar os clientes OAuth em uma etapa posterior.
Para criar a configuração do OAuth, clique em Criar.
Configurar clientes OAuth personalizados no IAP
Nesta seção, descrevemos como configurar clientes OAuth personalizados no IAP.
É possível criar um cliente OAuth personalizado para o IAP usando o console doGoogle Cloud das seguintes maneiras:
Criar um cliente OAuth manualmente: é necessário adicionar o URI de redirecionamento antes de configurar o IAP.
Criar um cliente OAuth automaticamente usando as credenciais geradas automaticamente do IAP: o IAP cria e configura o cliente OAuth para você e adiciona automaticamente o URI de redirecionamento necessário.
Independentemente do método usado, configure a página de branding antes de criar o cliente OAuth. O formato de URI de redirecionamento obrigatório é mostrado nos dois métodos.
Criar o cliente OAuth personalizado
Nesta seção, descrevemos como criar clientes OAuth personalizados usando o console doGoogle Cloud . É possível configurar clientes OAuth personalizados do IAP em qualquer nível da hierarquia de recursos.
Para criar clientes OAuth personalizados para um recurso usando o console do Google Cloud , use um dos seguintes métodos:
Método 1: criar um cliente OAuth usando o console do Google Cloud
Use esse método quando quiser criar o cliente OAuth separadamente, talvez antes de configurar o IAP para seus recursos. Para isso, é preciso adicionar manualmente o URI de redirecionamento do IAP.
No console do Google Cloud , acesse APIs e serviços > Credenciais.
Clique em Criar credenciais e selecione ID do cliente OAuth.
Em Tipo de aplicativo, selecione Aplicativo da Web.
No campo Nome, insira um nome descritivo para o cliente OAuth.
Clique em Criar. Anote o ID do cliente gerado.
Depois que o cliente OAuth for criado, acesse a seção URIs de redirecionamento autorizados na página de detalhes do cliente OAuth recém-criado.
Clique em Adicionar URI e insira o seguinte URI de redirecionamento autorizado específico do IAP:
https://iap.googleapis.com/v1/oauth/clientIds/YOUR_CLIENT_ID:handleRedirect
Substitua
YOUR_CLIENT_IDpelo ID do cliente que você recebeu na etapa anterior.Clique em Salvar.
Método 2: criar um cliente OAuth usando as credenciais geradas automaticamente do IAP
Use esse método para que o IAP crie e configure o cliente OAuth para você e adicione automaticamente o URI de redirecionamento necessário.
No console do Google Cloud , acesse a página IAP.
Na guia Aplicativos, na lista de recursos, encontre o recurso que você quer configurar.
Para recursos para envolvidos no projeto, faça o seguinte:
Crie o cliente OAuth usando o console do Google Cloud :
Na coluna Ações, clique em Mais opções > Configurações.
Na caixa de diálogo Configurações, selecione OAuth personalizado.
Se você não tiver configurado uma tela de permissão, faça o seguinte:
Clique em Configurar tela de consentimento.
Siga as instruções para configurar a página de branding fornecidas anteriormente neste documento.
Na caixa de diálogo de configurações do IAP, clique em Gerar credenciais automaticamente. O IAP gera um novo cliente OAuth e uma chave secreta para usar com esse recurso. Na Google Auth Platform, o campo URIs de redirecionamento autorizados contém uma entrada no seguinte formato:
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
Para acessar o ID do cliente e a chave secreta, clique em Fazer o download das credenciais. As credenciais são salvas em um arquivo formatado em JSON. Como o arquivo contém credenciais confidenciais para acessar recursos, verifique se ele está protegido ou excluído.
Para salvar a configuração do OAuth do IAP e aplicar o cliente OAuth ao IAP, clique em Salvar.
Aplicar clientes OAuth personalizados ao IAP
Nesta seção, descrevemos como aplicar clientes OAuth ao IAP. É possível usar esse método em vez de aplicar os clientes diretamente na plataforma.
Para criar o cliente OAuth personalizado, siga as instruções do console doGoogle Cloud fornecidas anteriormente neste documento.
Aplique o cliente OAuth personalizado.
gcloud
Para aplicar o cliente OAuth personalizado usando a CLI gcloud, faça o seguinte:
Crie um arquivo YAML de configurações.
cat << EOF > iap-oauth.yaml accessSettings: oauthSettings: clientId: CLIENT_ID clientSecret: CLIENT_SECRET EOF
Substitua:
CLIENT_ID: o ID do cliente das credenciais do OAuth que você gerou anteriormente.CLIENT_SECRET: a chave secreta do cliente das credenciais do OAuth que você gerou anteriormente.
Para definir a configuração do OAuth, siga um destes procedimentos:
- Para definir a configuração do OAuth no nível do projeto, execute o seguinte comando:
gcloud iap settings set iap-oauth.yaml
Para definir a configuração em outro nível da hierarquia de recursos, use uma das seguintes flags em vez de
--project. Definir clientes OAuth personalizados em um nível da hierarquia de recursos oferece a mesma marca personalizada para todos os serviços executados nesse nível.--folder=FOLDER_ID--organization=ORGANIZATION_IDPara definir a configuração em um serviço específico, execute o seguinte comando:
gcloud iap settings set iap-oauth.yaml \ --project=PROJECT_ID \ --resource-type= RESOURCE_TYPE \ --region=REGION \ --service=SERVICE_NAME
Substitua:
PROJECT_ID: o ID do recurso do projeto. Para definir a configuração em outro nível, use uma das seguintes flags em vez de--project:--folder=FOLDER_ID--organization=ORGANIZATION_ID
RESOURCE_TYPE: substitua por um dos seguintes tipos de recurso, dependendo do recurso:app-enginebackend-servicescloud-runcomputefolderforwarding-ruleiap_weborganization
REGION: a região em que você executa o serviço do Cloud Run.SERVICE_NAME: o nome do serviço.
Terraform
Para aplicar o cliente OAuth personalizado usando o Terraform, faça o seguinte:
resource "google_iap_settings" "iap_settings" { name = IAP_RESOURCE_NAME access_settings { oauth_settings { oauth_client_id = CLIENT_ID oauth_client_secret = CLIENT_SECRET } } }Substitua:
IAP_RESOURCE_NAME: o nome do recursoiap_settingsdo serviço, que tem o seguinte formato:projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAMECLIENT_ID: o ID do cliente das credenciais do OAuth que você gerou anteriormente.CLIENT_SECRET: a chave secreta do cliente das credenciais do OAuth que você gerou anteriormente.
API REST
Crie um arquivo JSON de configurações.
cat << EOF > iap-oauth.json { "accessSettings": { "oauthSettings": { "clientId": "CLIENT_ID", "clientSecret": "CLIENT_SECRET" } } } EOF
Substitua:
CLIENT_ID: o ID do cliente das credenciais do OAuth que você gerou anteriormente.CLIENT_SECRET: a chave secreta do cliente das credenciais do OAuth que você gerou anteriormente.
Aplique o arquivo de configurações.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/yaml" \ "https://iap.googleapis.com/v1/projects/cb-managed-ingress-demo/iap_web/forwarding_rule-us-central1/services/psc-fr:iapSettings?update_mask=iapSettings.accessSettings.oauthSettings.oauthClientId,iapSettings.accessSettings.oauthSettings.oauthClientSecret" \ -d @iap-oauth.json
Para testar se os aplicativos da Web estão protegidos pelo IAP com os clientes OAuth, consulte Testar acesso.
Configuração legada de clientes OAuth personalizados em um recurso
As seções a seguir descrevem métodos legados para configurar clientes OAuth personalizados no IAP para determinados tipos de recursos. Pule esta seção se você usou o método descrito anteriormente neste documento.
App Engine
Nesta seção, descrevemos como ativar clientes OAuth personalizados no App Engine.
gcloud
Antes de configurar seu 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 autenticar, use a Google Cloud CLI e execute o seguinte comando:
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 a seguir 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 Criar clientes OAuth para IAP para configurar a tela de permissão OAuth e criar o cliente OAuth.
- Salve o ID e a chave secreta do cliente OAuth.
-
Para ativar o 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 a IAP, use a CLI gcloud para modificar a
política de acesso da IAP usando a função do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
API
Siga as instruções em Criar clientes OAuth para IAP para configurar a tela de permissão 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 a seguir 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 a IAP, use a Google Cloud CLI para modificar a
política de acesso da IAP usando a função do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
GKE
Nesta seção, descrevemos como ativar clientes OAuth personalizados no GKE.
Configurar o BackendConfig
Se você estiver executando clusters do GKE versão 1.24 ou posterior, poderá configurar o IAP e o GKE usando a API Gateway do Kubernetes. Consulte Configurar o IAP para ver instruções.
Siga as instruções em Como criar clientes OAuth para o 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 criado.CLIENT_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 Secret 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 maneira de fazer essa associação é definir todas as portas do serviço como padrão para o BackendConfig. Para isso, adicione a seguinte anotação ao recurso de serviço:
metadata: annotations: cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'
Depois de ativar o IAP, use 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.
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 solucionar 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 esse erro, verifique se você criou as credenciais do OAuth corretamente. Além disso, verifique se você referenciou as chavesclient_ideclient_secretcorretas.
Serviço de back-end de balanceador de carga
Para usuários do Compute Engine e do Cloud Run, esta seção descreve como configurar clientes OAuth no IAP para o serviço de back-end do balanceador de carga.
gcloud
Antes de configurar seu projeto e a 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 autenticar, use a Google Cloud CLI e execute o seguinte comando:
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 a seguir 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 Criar clientes OAuth para IAP para configurar a tela de permissão OAuth e criar o cliente OAuth.
- Salve o ID e a chave secreta do cliente OAuth.
-
Para ativar a 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 a IAP, use a CLI gcloud para modificar a
política de acesso da IAP usando a função do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
API
Siga as instruções em Criar clientes OAuth para IAP para configurar a tela de permissão 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 a seguir 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 a IAP, use a CLI gcloud para modificar a
política de acesso da IAP usando a função do IAM
roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.
Testar o acesso
Depois de configurar o cliente OAuth personalizado, teste se o IAP o está usando para proteger seu serviço fazendo o seguinte:
Na página do IAP, na guia Aplicativos, confira os aplicativos gerenciados pelo IAP.
Acesse o URL de um dos aplicativos. Se você estiver acessando o aplicativo pela primeira vez desde que configurou a tela de permissão, ela será exibida.