Este guia explica como migrar de clientes OAuth 2.0 criados com a API Google OAuth do Proxy com reconhecimento de identidade (IAP) para clientes OAuth 2.0 geridos pela Google implementados automaticamente pelo IAP.
O que vai mudar
Vamos descontinuar a API IAP OAuth Admin, que inclui as seguintes APIs para a gestão manual de clientes e marcas OAuth:
Em vez de gerir manualmente os clientes OAuth 2.0, o IAP vai agora criar e gerir automaticamente os clientes OAuth quando necessário. Esta alteração simplifica a gestão de clientes, reduz os erros manuais e otimiza os seus processos de implementação.
O que não vai mudar
Esta descontinuação não afeta os clientes OAuth que configura manualmente através da API Compute Engine, da API App Engine ou da Google Cloud consola.
Pode continuar a criar novas configurações de cliente e marca OAuth e geri-las através da Google Cloud consola. As configurações existentes vão continuar a ser totalmente suportadas.
Se não usar a API IAP OAuth Admin, esta alteração não tem impacto em si.
Descrição detalhada
A partir de 22 de janeiro de 2025, a API IAP OAuth 2.0 Admin, que é usada para criar um cliente IAP OAuth 2.0, vai ser descontinuada. A API de administração OAuth 2.0 de IAP já não é necessária porque já não tem de configurar clientes OAuth. O IAP usa agora um cliente OAuth gerido pela Google para acesso ao navegador por predefinição ou quando não está configurado explicitamente um cliente OAuth 2.0. O cliente OAuth 2.0 gerido pela Google restringe o acesso às aplicações ativadas para IAP a utilizadores na mesma organização quando acedem a essas aplicações através de um navegador.
Com a descontinuação da API Admin do OAuth 2.0 do Identity-Aware Proxy (IAP), já não pode criar nem gerir novos clientes OAuth. Os clientes OAuth criados antes desta descontinuação não são invalidados. Pode continuar a usar os clientes OAuth que criou anteriormente e geri-los através da Google Cloud consola.
Se tiver aplicações configuradas com clientes OAuth criados através da API Admin do IAP 2.0 ou de outra forma, essas aplicações vão continuar a funcionar. Não são necessárias alterações às aplicações. No entanto, se tiver a automatização configurada para criar novos clientes na implementação da aplicação ou obter segredos de clientes para clientes existentes, tem de atualizar os scripts de automatização para remover a dependência da API Google Cloud IAP OAuth 2.0 Admin.
Se planeia usar o cliente OAuth 2.0 gerido pela Google, use o guia "Acesso programático" para configurar o acesso programático para estas aplicações.
Se tiver um requisito que não seja cumprido pelo cliente OAuth 2.0 gerido pela Google, pode partilhar um único cliente OAuth com várias aplicações de CNA, eliminando a necessidade de criar manualmente um cliente para cada nova aplicação.
Ações necessárias
Atualize scripts de automatização
Se usar o Terraform ou outras ferramentas para automatizar a configuração do IAP e usar a API IAP OAuth 2.0 Admin, tem de atualizar os scripts de automatização para usar um cliente pré-criado ou usar o cliente OAuth gerido pela Google com o IAP.
Configure o acesso programático para aplicações que usam os clientes OAuth2.0 geridos pela Google
Se já tiver algumas aplicações protegidas pelo IAP e planear migrá-las para a utilização do cliente OAuth 2.0 gerido pela Google, pode configurar o acesso programático para estas aplicações adicionando clientes OAuth 2.0 à lista de autorizações.
Migre recursos com IAP ativado
Para migrar os seus recursos para usar o cliente OAuth 2.0 gerido pela Google, siga os passos para o tipo de recurso, como um recurso do Compute Engine, que quer migrar.
Migre recursos do App Engine com IAP ativado
Conclua os passos nesta secção para migrar recursos do App Engine onde o IAP está ativado e um cliente OAuth 2.0 está configurado.
gcloud
Antes de continuar para os passos, certifique-se de que tem uma versão atualizada da CLI gcloud. Para ver instruções sobre como instalar a CLI gcloud, consulte o artigo Instale a CLI gcloud.
Use a Google Cloud CLI para fazer a autenticação.
gcloud auth login
Clique no URL apresentado e inicie sessão.
Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
Execute o seguinte comando para especificar o projeto que contém as aplicações que quer continuar a proteger com o IAP.
gcloud config set project PROJECT_ID
Execute o seguinte comando para obter o ID de cliente OAuth 2.0 configurado.
gcloud app describe --format="value(iap.oauth2ClientId)"
Guarde o ID do cliente do comando anterior se quiser permitir o acesso programático.
Para adicionar o cliente OAuth 2.0 à lista de autorizações para acesso programático, execute uma operação de leitura-atualização-escrita na API de definições do IAP.
gcloud iap settings get --resource-type=app-engine --project=$PROJECT > settings.yaml
Atualize o ficheiro settings.yaml e adicione o ID de cliente OAuth 2.0 obtido anteriormente em
programmaticClients
, conforme mostrado no exemplo.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplique as novas definições na aplicação do App Engine
gcloud iap settings set settings.yaml --resource-type=app-engine --project=PROJECT_ID
Para migrar as suas apps, execute o seguinte comando.
gcloud iap web enable --resource-type=app-engine
API
Execute o seguinte comando para obter o ID de 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 seguinte comando para obter as definições do IAP existentes num ficheiro
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 ficheiro
settings.json
para adicionar o CLIENT_ID guardado anteriormente como cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Execute o seguinte comando para atualizar as definiçõ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 seguinte comando para preparar um ficheiro
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true } } EOF
Execute o seguinte comando para migrar as suas 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"
Migre recursos do Compute Engine com o IAP ativado
Conclua os passos nesta secção para migrar recursos do Compute Engine onde o IAP está ativado e um cliente OAuth 2.0 está configurado.
gcloud
Antes de continuar para os passos, certifique-se de que tem uma versão atualizada da CLI gcloud. Para ver instruções sobre como instalar a CLI gcloud, consulte o artigo Instale a CLI gcloud.
Use a Google Cloud CLI para fazer a autenticação.
gcloud auth login
Clique no URL apresentado e inicie sessão.
Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
Execute o seguinte comando para especificar o projeto que contém as aplicações que quer continuar a proteger com o IAP.
gcloud config set project PROJECT_ID
Execute o seguinte comando para obter o ID de cliente OAuth 2.0 configurado.
Âmbito global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global \ --format="value(iap.oauth2ClientId)"
Âmbito regional
Guarde 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 adicionar um cliente OAuth 2.0 à lista de autorizações para acesso programático, execute uma operação de leitura-atualização-escrita na API de definições do IAP.
Âmbito global
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME > settings.yaml
Âmbito regional
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME > settings.yaml
Atualize o ficheiro settings.yaml e adicione o ID de cliente OAuth 2.0 obtido anteriormente em
programmaticClients
, conforme mostrado no exemplo.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplique as novas definições na aplicação Compute Engine
Âmbito global
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME
Âmbito regional
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME
Para migrar as suas aplicações, execute o comando com âmbito global ou regional.
Âmbito global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Âmbito 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 de cliente OAuth não está definido, execute o seguinte comando de âmbito global ou regional. Depois de executar o comando, verifique a saída para garantir que o campo do ID de cliente OAuth está vazio.
Âmbito global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global
Âmbito regional
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME
API
Execute o seguinte comando para obter o ID de cliente OAuth 2.0 configurado.
Âmbito 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"
Âmbito 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 seguinte comando para obter as definições do IAP existentes num ficheiro
settings.json
.Âmbito 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
Âmbito 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 ficheiro
settings.json
para adicionar o CLIENT_ID guardado anteriormente como cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Execute o seguinte comando para atualizar as definições de IAP.
Âmbito 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"
Âmbito 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 seguinte comando para preparar um ficheiro
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId": " ", "oauth2ClientSecret": " " } } EOF
Execute o seguinte comando para migrar os recursos de IAP.
Âmbito 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"
Âmbito 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 de cliente OAuth não está definido, execute o seguinte comando de âmbito global ou regional. Depois de executar o comando, verifique a saída para garantir que o campo do ID de cliente OAuth está vazio.
Âmbito 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"
Âmbito 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 estiver a migrar recursos existentes ativados para IAP para usar um cliente OAuth gerido pela Google, tem de anular explicitamente a definição dos campos oauth2_client_id
e oauth2_client_secret
atualizando-os para um único espaço em branco.
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 estiver a trabalhar com novos recursos ativados para IAP, pode ignorá-los.
Para mais informações, consulte a documentação do Terraform.
Migre recursos do Cloud Run com IAP ativado
Conclua os passos nesta secção para migrar recursos do Cloud Run onde o IAP está ativado e um cliente OAuth 2.0 está configurado.
gcloud
Antes de continuar com os passos, certifique-se de que tem uma versão atualizada da CLI gcloud. Para ver instruções sobre como instalar a CLI gcloud, consulte o artigo Instale a CLI gcloud.
Para autenticar, use a CLI do Google Cloud e execute o seguinte comando.
gcloud auth login
Clique no URL apresentado e inicie sessão.
Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
Execute o seguinte comando para especificar o projeto que contém as aplicações que quer continuar a proteger com o IAP.
gcloud config set project PROJECT_ID
Execute o seguinte comando para obter o ID de cliente OAuth 2.0 configurado.
Âmbito global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global \ --format="value(iap.oauth2ClientId)"
Âmbito regional
Guarde 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 adicionar um cliente OAuth 2.0 à lista de autorizações para acesso programático, execute uma operação de leitura-atualização-escrita na API de definições do IAP.
Âmbito global
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME > settings.yaml
Âmbito regional
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME > settings.yaml
Atualize o ficheiro settings.yaml e adicione o ID de cliente OAuth 2.0 obtido anteriormente em
programmaticClients
, conforme mostrado no exemplo.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplique as novas definições na aplicação Compute Engine
Âmbito global
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME
Âmbito regional
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME
Para migrar os seus recursos, execute o comando com âmbito global ou regional.
Âmbito global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Âmbito 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 de cliente OAuth não está definido, execute o seguinte comando de âmbito global ou regional. Depois de executar o comando, verifique a saída para garantir que o campo do ID de cliente OAuth está vazio.
Âmbito global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global
Âmbito regional
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME
API
Execute o seguinte comando para obter o ID de cliente OAuth 2.0 configurado.
Âmbito 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"
Âmbito 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 seguinte comando para obter as definições do IAP existentes num ficheiro
settings.json
.Âmbito 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
Âmbito 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 ficheiro
settings.json
para adicionar o CLIENT_ID guardado anteriormente como cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Execute o seguinte comando para atualizar as definições de IAP.
Âmbito 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"
Âmbito 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 seguinte comando para preparar um ficheiro
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId": " ", "oauth2ClientSecret": " " } } EOF
Execute o seguinte comando para migrar os seus recursos.
Âmbito 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"
Âmbito 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 de cliente OAuth não está definido, execute o seguinte comando de âmbito global ou regional. Depois de executar o comando, verifique a saída para garantir que o campo do ID de cliente OAuth está vazio.
Âmbito 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"
Âmbito 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"
Migre recursos do Google Kubernetes Engine com o IAP ativado
Adicione o seguinte bloco de IAP à definição de recursos personalizados (CRD) BackendConfig. Isto ativa a IAP com o cliente OAuth 2.0 gerido pela Google.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: config-default
namespace: my-namespace
spec:
iap:
enabled: true
Use um JWT de conta de serviço para fazer a autenticação no IAP
Pode autenticar-se no IAP sem ter de usar a API OAuth Admin descontinuada através de um JWT de conta de serviço.
Obtenha o segredo de um cliente OAuth
Para obter o segredo de um cliente OAuth sem usar a API OAuth Admin descontinuada, use o Secret Manager seguindo as instruções neste exemplo do Terraform: google_secret_manager_secret
.
Determine se está a usar a API OAuth Admin
Para verificar se está a usar a API OAuth Admin, conclua os seguintes passos.
Na Google Cloud consola, abra a página das APIs de CAs e, de seguida, selecione o projeto que quer analisar.
Aceda à página das APIs IAPNa lista Selecionar gráficos, selecione Tráfego por método de API e, de seguida, clique em OK.
Na secção Métodos, procure métodos com o prefixo
google.cloud.iap.v1.IdentityAwareProxyOAuthService
, o que indica que o projeto usa a API Google Admin OAuth.