Este guia explica como migrar de clientes OAuth 2.0 criados usando a API Admin OAuth do Identity-Aware Proxy (IAP) para os clientes OAuth 2.0 gerenciados pelo Google implantados automaticamente pelo IAP.
O que vai mudar?
Estamos descontinuando a API Admin OAuth do IAP, que inclui as seguintes APIs para gerenciamento manual de clientes e marcas OAuth:
Em vez de gerenciar manualmente os clientes OAuth 2.0, o IAP agora cria e gerencia automaticamente os clientes OAuth quando necessário. Essa mudança simplifica o gerenciamento de clientes, reduz erros manuais e simplifica os processos de implantação.
O que não muda
Essa descontinuação não afeta os clientes OAuth que você configura manualmente usando a API Compute Engine, a API App Engine ou o Google Cloud console.
Você pode continuar criando novas configurações de marca e cliente OAuth e gerenciá-las usando o Google Cloud console. As configurações atuais vão continuar sendo totalmente compatíveis.
Se você não usa a API Admin OAuth do IAP, essa mudança não vai afetar você.
Descrição detalhada
A partir de 22 de janeiro de 2025, a API Admin OAuth 2.0 do IAP, que é usada para criar um cliente OAuth 2.0 do IAP, será descontinuada. A API Admin OAuth 2.0 do IAP não é mais necessária, porque você não precisa mais configurar clientes OAuth. O IAP agora usa um cliente OAuth gerenciado pelo Google para acesso ao navegador por padrão ou quando nenhum cliente OAuth 2.0 é configurado explicitamente. O cliente OAuth 2.0 gerenciado pelo Google restringe o acesso a aplicativos com IAP para usuários da mesma organização quando eles acessam esses aplicativos por um navegador.
Com a descontinuação da API Admin OAuth 2.0 do Identity-Aware Proxy (IAP, na sigla em inglês), não é mais possível criar nem gerenciar novos clientes OAuth. Os clientes OAuth criados antes dessa descontinuação não serão invalidados. Você pode continuar usando os clientes OAuth que criou anteriormente e gerenciá-los usando o console Google Cloud .
Se você tiver aplicativos configurados com clientes OAuth criados usando a API Admin do IAP 2.0 ou de outra forma, eles vão continuar funcionando. Não é necessário fazer nenhuma mudança nos aplicativos. No entanto, se você tiver uma automação configurada para criar novos clientes na implantação do aplicativo ou buscar chaves secretas de clientes existentes, atualize os scripts de automação para remover a dependência da API Admin OAuth 2.0 do IAP.
Se você planeja usar o cliente OAuth 2.0 gerenciado pelo Google, use o guia Acesso programático para configurar o acesso programático para esses aplicativos.
Se você tiver um requisito que não é atendido pelo cliente OAuth 2.0 gerenciado pelo Google, é possível compartilhar um único cliente OAuth com vários aplicativos do IAP, eliminando a necessidade de criar manualmente um cliente para cada novo aplicativo.
Ações necessárias
Atualizar scripts de automação
Se você usa o Terraform ou outras ferramentas para automatizar a configuração do IAP e usa a API Admin OAuth 2.0 do IAP, atualize os scripts de automação para usar um cliente pré-criado ou o cliente OAuth gerenciado pelo Google com o IAP.
Configurar o acesso programático para aplicativos usando os clientes OAuth2.0 gerenciados pelo Google
Se você já tiver alguns aplicativos protegidos pelo IAP e quiser migrá-los para o uso do cliente OAuth 2.0 gerenciado pelo Google, configure o acesso programático para esses aplicativos permitindo a inclusão de clientes OAuth 2.0 na lista de permissões.
Migrar recursos ativados para o IAP
Para migrar seus recursos para usar o cliente OAuth 2.0 gerenciado pelo Google, siga as etapas para o tipo de recurso, como um recurso do Compute Engine, que você quer migrar.
Migrar recursos do App Engine com IAP ativado
Siga as etapas desta seção para migrar recursos do App Engine em que o IAP está ativado e um cliente OAuth 2.0 está configurado.
gcloud
Antes de continuar para as etapas, verifique se você tem uma versão atualizada da CLI gcloud. Para instruções sobre como instalar a CLI gcloud, consulte Instalar a CLI gcloud.
Use a Google Cloud CLI para fazer a autenticação.
gcloud auth login
Clique no URL que aparece e faça login.
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 os aplicativos que você quer continuar protegendo com o IAP.
gcloud config set project PROJECT_ID
Execute o comando a seguir para buscar o ID do cliente OAuth 2.0 configurado.
gcloud app describe --format="value(iap.oauth2ClientId)"
Salve o ID do cliente do comando anterior se quiser permitir o acesso programático.
Para adicionar o cliente OAuth 2.0 à lista de permissões para acesso programático, execute uma operação de leitura, atualização e gravação na API de configurações do IAP.
gcloud iap settings get --resource-type=app-engine --project=$PROJECT > settings.yaml
Atualize o arquivo settings.yaml e adicione o ID do cliente OAuth 2.0 buscado anteriormente em
programmaticClients
, conforme o exemplo mostrado.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplicar as novas configurações no aplicativo do App Engine
gcloud iap settings set settings.yaml --resource-type=app-engine --project=PROJECT_ID
Para migrar seus apps, execute o comando a seguir.
gcloud iap web enable --resource-type=app-engine
API
Execute o comando a seguir para buscar o ID do cliente OAuth 2.0 configurado.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?fields=iap"
Execute o comando a seguir para buscar as configurações de IAP atuais em um arquivo
settings.json
.curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/appengine-PROJECT_ID:iapSettings" > settings.json
Atualize o arquivo
settings.json
para adicionar o CLIENT_ID salvo anteriormente como um cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Execute o comando a seguir para atualizar as configurações de IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "@settings.json" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/appengine-PROJECT_ID:iapSettings"
Execute o comando a seguir para preparar um arquivo
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true } } EOF
Execute o comando abaixo para migrar seus apps.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth 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"
Migrar recursos do Compute Engine com o IAP ativado
Siga as etapas desta seção para migrar recursos do Compute Engine em que o IAP está ativado e um cliente OAuth 2.0 está configurado.
gcloud
Antes de continuar para as etapas, verifique se você tem uma versão atualizada da CLI gcloud. Para instruções sobre como instalar a CLI gcloud, consulte Instalar a CLI gcloud.
Use a Google Cloud CLI para fazer a autenticação.
gcloud auth login
Clique no URL que aparece e faça login.
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 os aplicativos que você quer continuar protegendo com o IAP.
gcloud config set project PROJECT_ID
Execute o comando a seguir para buscar o ID do cliente OAuth 2.0 configurado.
Escopo global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global \ --format="value(iap.oauth2ClientId)"
Escopo regional
Salve o ID do cliente do comando anterior se quiser permitir o acesso programático.gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME \ --format="value(iap.oauth2ClientId)"
Para permitir o acesso programático de um cliente OAuth 2.0, realize uma operação de leitura, atualização e gravação na API de configurações do IAP.
Escopo global
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME > settings.yaml
Escopo regional
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME > settings.yaml
Atualize o arquivo settings.yaml e adicione o ID do cliente OAuth 2.0 buscado anteriormente em
programmaticClients
, conforme o exemplo mostrado.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplicar as novas configurações no aplicativo do Compute Engine
Escopo global
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME
Escopo regional
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME
Para migrar seus aplicativos, execute o comando de escopo global ou regional.
Escopo global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Escopo regional
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Para confirmar que o ID do cliente OAuth não está definido, execute o comando de escopo global ou regional a seguir. Depois de executar o comando, verifique a saída para garantir que o campo de ID do cliente OAuth esteja vazio.
Escopo global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global
Escopo regional
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME
API
Execute o comando a seguir para buscar o ID do cliente OAuth 2.0 configurado.
Escopo global
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
Escopo regional
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
Execute o comando a seguir para buscar as configurações de IAP atuais em um arquivo
settings.json
.Escopo global
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
Escopo regional
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
Atualize o arquivo
settings.json
para adicionar o CLIENT_ID salvo anteriormente como um cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Execute o comando a seguir para atualizar as configurações de IAP.
Escopo global
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "@settings.json" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings"
Escopo regional
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "@settings.json" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings"
Execute o comando a seguir para preparar um arquivo
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId": " ", "oauth2ClientSecret": " " } } EOF
Execute o comando abaixo para migrar seus recursos do IAP.
Escopo global
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME"
Escopo regional
curl -X PATCH
-H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"Para confirmar que o ID do cliente OAuth não está definido, execute o comando de escopo global ou regional a seguir. Depois de executar o comando, verifique a saída para garantir que o campo de ID do cliente OAuth esteja vazio.
Escopo global
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME"
Escopo regional
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"
Terraform
Se você estiver migrando recursos habilitados para o IAP para usar um
cliente OAuth gerenciado pelo Google, desative explicitamente os campos oauth2_client_id
e oauth2_client_secret
atualizando-os para uma string vazia.
Exemplo:
resource "google_compute_backend_service" "default" {
name = "tf-test-backend-service-external"
protocol = "HTTP"
load_balancing_scheme = "EXTERNAL"
iap {
oauth2_client_id = " "
oauth2_client_secret = " "
}
}
Os campos oauth2_client_id
e oauth2_client_secret
são opcionais e, se você estiver trabalhando com novos recursos ativados para o IAP, poderá
ignorá-los.
Para mais informações, consulte a documentação do Terraform.
Migrar recursos do Cloud Run com suporte para IAP
Siga as etapas desta seção para migrar recursos do Cloud Run em que o IAP está ativado e um cliente OAuth 2.0 está configurado.
gcloud
Antes de continuar para as etapas, verifique se você tem 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 Google Cloud CLI e execute o comando a seguir.
gcloud auth login
Clique no URL que aparece e faça login.
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 os aplicativos que você quer continuar protegendo com o IAP.
gcloud config set project PROJECT_ID
Execute o comando a seguir para buscar o ID do cliente OAuth 2.0 configurado.
Escopo global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global \ --format="value(iap.oauth2ClientId)"
Escopo regional
Salve o ID do cliente do comando anterior se quiser permitir o acesso programático.gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME \ --format="value(iap.oauth2ClientId)"
Para permitir o acesso programático de um cliente OAuth 2.0, realize uma operação de leitura, atualização e gravação na API de configurações do IAP.
Escopo global
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME > settings.yaml
Escopo regional
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME > settings.yaml
Atualize o arquivo settings.yaml e adicione o ID do cliente OAuth 2.0 buscado anteriormente em
programmaticClients
, conforme o exemplo mostrado.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplicar as novas configurações no aplicativo do Compute Engine
Escopo global
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME
Escopo regional
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME
Para migrar seus recursos, execute o comando de escopo global ou regional.
Escopo global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Escopo regional
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Para confirmar que o ID do cliente OAuth não está definido, execute o comando de escopo global ou regional a seguir. Depois de executar o comando, verifique a saída para garantir que o campo de ID do cliente OAuth esteja vazio.
Escopo global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global
Escopo regional
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME
API
Execute o comando a seguir para buscar o ID do cliente OAuth 2.0 configurado.
Escopo global
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
Escopo regional
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
Execute o comando a seguir para buscar as configurações de IAP atuais em um arquivo
settings.json
.Escopo global
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
Escopo regional
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
Atualize o arquivo
settings.json
para adicionar o CLIENT_ID salvo anteriormente como um cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Execute o comando a seguir para atualizar as configurações de IAP.
Escopo global
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "@settings.json" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings"
Escopo regional
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "@settings.json" \ "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings"
Execute o comando a seguir para preparar um arquivo
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId": " ", "oauth2ClientSecret": " " } } EOF
Execute o comando a seguir para migrar seus recursos.
Escopo global
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME"
Escopo regional
curl -X PATCH
-H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"Para confirmar que o ID do cliente OAuth não está definido, execute o comando de escopo global ou regional a seguir. Depois de executar o comando, verifique a saída para garantir que o campo de ID do cliente OAuth esteja vazio.
Escopo global
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME"
Escopo regional
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"
Migrar recursos do Google Kubernetes Engine com suporte para o IAP
Adicione o seguinte bloco de IAP à definição de recurso personalizado (CRD, na sigla em inglês) BackendConfig. Isso ativa o IAP com o cliente OAuth 2.0 gerenciado pelo Google.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: config-default
namespace: my-namespace
spec:
iap:
enabled: true
Usar um JWT da conta de serviço para autenticar no IAP
É possível fazer a autenticação no IAP sem precisar usar a API OAuth Admin descontinuada usando um JWT da conta de serviço.
Receber a chave secreta de um cliente OAuth
Para acessar a chave secreta de um cliente OAuth sem usar a
API Admin OAuth descontinuada, use o Secret Manager seguindo as
instruções neste exemplo do Terraform:
google_secret_manager_secret
.
Determinar se você está usando a API Admin OAuth
Para verificar se você está usando a API OAuth Admin, siga estas etapas.
No console Google Cloud , abra a página "APIs do IAP" e selecione o projeto que você quer analisar.
Acesse a página "APIs do IAP"Na lista Selecionar gráficos, selecione Tráfego por método de API e clique em OK.
Na seção Methods, procure métodos com o prefixo
google.cloud.iap.v1.IdentityAwareProxyOAuthService
, que indica que o projeto usa a API Admin OAuth.