En esta guía, se explica cómo migrar de los clientes de OAuth 2.0 creados con la API de administración de OAuth de Identity-Aware Proxy (IAP) a los clientes de OAuth 2.0 administrados por Google que IAP implementa automáticamente.
¿Qué aspectos cambiarán?
Estamos retirando la API de IAP OAuth Admin, que incluye las siguientes APIs para la administración manual de clientes y marcas de OAuth:
En lugar de administrar manualmente los clientes de OAuth 2.0, IAP ahora creará y administrará automáticamente los clientes de OAuth cuando sea necesario. Este cambio simplifica la administración de clientes, reduce los errores manuales y optimiza los procesos de implementación.
Qué se mantendrá igual
Esta baja en desuso no afecta a los clientes de OAuth que configuras manualmente con la API de Compute Engine, la API de App Engine o la consola de Google Cloud .
Puedes seguir creando nuevas configuraciones de marca y cliente de OAuth, y administrarlas con la consola de Google Cloud . Las configuraciones existentes seguirán siendo totalmente compatibles.
Si no usas la API de administración de OAuth de IAP, este cambio no te afectará.
Descripción detallada
A partir del 22 de enero de 2025, la API de Admin de OAuth 2.0 de IAP, que se usa para crear un cliente de OAuth 2.0 de IAP, estará obsoleta. Ya no se requiere la API de Admin de OAuth 2.0 de IAP porque ya no necesitas configurar clientes de OAuth. De forma predeterminada, IAP ahora usa un cliente de OAuth administrado por Google para el acceso desde el navegador o cuando no se configura un cliente de OAuth 2.0 de forma explícita. El cliente de OAuth 2.0 administrado por Google restringe el acceso a las aplicaciones habilitadas para las IAP a los usuarios de la misma organización cuando acceden a esas aplicaciones a través de un navegador.
Con la baja de la API de Admin de OAuth 2.0 de Identity-Aware Proxy (IAP), ya no puedes crear ni administrar clientes de OAuth nuevos. Los clientes de OAuth creados antes de esta baja no se invalidarán. Puedes seguir usando los clientes de OAuth que creaste anteriormente y administrarlos con la consola de Google Cloud .
Si tienes aplicaciones configuradas con clientes de OAuth creados con la API de IAP 2.0 Admin o de otra manera, esas aplicaciones seguirán funcionando. No se requieren cambios en las aplicaciones. Sin embargo, si tienes configurada la automatización para crear clientes nuevos en la implementación de la aplicación o recuperar secretos de clientes existentes, debes actualizar tus secuencias de comandos de automatización para quitar la dependencia de la API de IAP OAuth 2.0 Admin.
Si planeas usar el cliente de OAuth 2.0 administrado por Google, consulta la guía de "Acceso programático" para configurar el acceso programático para estas aplicaciones.
Si tienes un requisito que no cumple el cliente de OAuth 2.0 administrado por Google, puedes compartir un solo cliente de OAuth con varias aplicaciones de IAP, lo que elimina la necesidad de crear manualmente un cliente para cada aplicación nueva.
Acciones necesarias
Actualiza las secuencias de comandos de automatización
Si usas Terraform o alguna otra herramienta para automatizar la configuración de IAP, y usas la API de Admin de IAP OAuth 2.0, debes actualizar las secuencias de comandos de automatización para usar un cliente creado previamente o usar el cliente de OAuth administrado por Google con IAP.
Configura el acceso programático para las aplicaciones con los clientes de OAuth 2.0 administrados por Google
Si ya tienes algunas aplicaciones protegidas por la IAP y planeas migrarlas para que usen el cliente de OAuth 2.0 administrado por Google, puedes configurar el acceso programático para estas aplicaciones incluyendo en la lista de entidades permitidas a los clientes de OAuth 2.0.
Migra recursos habilitados para IAP
Para migrar tus recursos y usar el cliente de OAuth 2.0 administrado por Google, sigue los pasos correspondientes al tipo de recurso que deseas migrar, como un recurso de Compute Engine.
Migra recursos de App Engine habilitados para la IAP
Completa los pasos de esta sección para migrar los recursos de App Engine en los que IAP está habilitado y se configuró un cliente de OAuth 2.0.
gcloud
Antes de continuar con los pasos, asegúrate de tener una versión actualizada de gcloud CLI. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instala la CLI de gcloud.
Usa Google Cloud CLI para autenticarte.
gcloud auth login
Haz clic en la URL que aparece y accede.
Después de acceder, copia el código de verificación que aparece y pégalo en la línea de comandos.
Ejecuta el siguiente comando para especificar el proyecto que contiene las aplicaciones que deseas seguir protegiendo con IAP.
gcloud config set project PROJECT_ID
Ejecuta el siguiente comando para recuperar el ID de cliente de OAuth 2.0 configurado.
gcloud app describe --format="value(iap.oauth2ClientId)"
Guarda el ID de cliente del comando anterior si deseas permitir el acceso programático.
Para incluir en la lista de entidades permitidas el cliente de OAuth 2.0 para el acceso programático, realiza una operación de lectura-actualización-escritura en la API de configuración de IAP.
gcloud iap settings get --resource-type=app-engine --project=$PROJECT > settings.yaml
Actualiza el archivo settings.yaml y agrega el ID de cliente de OAuth 2.0 recuperado anteriormente en
programmaticClients
, como se muestra en el ejemplo.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplica la nueva configuración en la aplicación de App Engine
gcloud iap settings set settings.yaml --resource-type=app-engine --project=PROJECT_ID
Para migrar tus apps, ejecuta el siguiente comando.
gcloud iap web enable --resource-type=app-engine
API
Ejecuta el siguiente comando para recuperar el ID de cliente de 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"
Ejecuta el siguiente comando para recuperar la configuración existente de las IAP en un archivo
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
Actualiza el archivo
settings.json
para agregar el CLIENT_ID guardado anteriormente como cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Ejecuta el siguiente comando para actualizar la configuración de las 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"
Ejecuta el siguiente comando para preparar un archivo
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true } } EOF
Ejecuta el siguiente comando para migrar tus 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"
Migra recursos de Compute Engine habilitados para IAP
Completa los pasos de esta sección para migrar los recursos de Compute Engine en los que IAP está habilitado y se configuró un cliente de OAuth 2.0.
gcloud
Antes de continuar con los pasos, asegúrate de tener una versión actualizada de gcloud CLI. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instala la CLI de gcloud.
Usa Google Cloud CLI para autenticarte.
gcloud auth login
Haz clic en la URL que aparece y accede.
Después de acceder, copia el código de verificación que aparece y pégalo en la línea de comandos.
Ejecuta el siguiente comando para especificar el proyecto que contiene las aplicaciones que deseas seguir protegiendo con IAP.
gcloud config set project PROJECT_ID
Ejecuta el siguiente comando para recuperar el ID de cliente de OAuth 2.0 configurado.
Alcance global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global \ --format="value(iap.oauth2ClientId)"
Alcance regional
Guarda el ID de cliente del comando anterior si deseas permitir el acceso programático.gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME \ --format="value(iap.oauth2ClientId)"
Para incluir en la lista de entidades permitidas al cliente de OAuth 2.0 para el acceso programático, realiza una operación de lectura-actualización-escritura en la API de configuración de IAP.
Alcance global
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME > settings.yaml
Alcance regional
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME > settings.yaml
Actualiza el archivo settings.yaml y agrega el ID de cliente de OAuth 2.0 recuperado anteriormente en
programmaticClients
, como se muestra en el ejemplo.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplica la nueva configuración en la aplicación de Compute Engine
Alcance global
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME
Alcance regional
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME
Para migrar tus aplicaciones, ejecuta el comando con alcance global o regional.
Alcance global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Alcance regional
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Para confirmar que no se configuró el ID de cliente de OAuth, ejecuta el siguiente comando de alcance global o regional. Después de ejecutar el comando, verifica el resultado para asegurarte de que el campo del ID de cliente de OAuth esté vacío.
Alcance global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global
Alcance regional
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME
API
Ejecuta el siguiente comando para recuperar el ID de cliente de OAuth 2.0 configurado.
Alcance 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"
Alcance 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"
Ejecuta el siguiente comando para recuperar la configuración existente de las IAP en un archivo
settings.json
.Alcance 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
Alcance 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
Actualiza el archivo
settings.json
para agregar el CLIENT_ID guardado anteriormente como cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Ejecuta el siguiente comando para actualizar la configuración de las IAP.
Alcance 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"
Alcance 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"
Ejecuta el siguiente comando para preparar un archivo
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId": " ", "oauth2ClientSecret": " " } } EOF
Ejecuta el siguiente comando para migrar tus recursos de IAP.
Alcance 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"
Alcance 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 no se configuró el ID de cliente de OAuth, ejecuta el siguiente comando de alcance global o regional. Después de ejecutar el comando, verifica el resultado para asegurarte de que el campo del ID de cliente de OAuth esté vacío.
Alcance 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"
Alcance 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
Si migras recursos existentes habilitados para IAP para usar un cliente de OAuth administrado por Google, debes anular de forma explícita los campos oauth2_client_id
y oauth2_client_secret
actualizándolos a un solo espacio en blanco.
Ejemplo:
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 = " "
}
}
Los campos oauth2_client_id
y oauth2_client_secret
son opcionales y, si trabajas con recursos nuevos habilitados para IAP, puedes ignorarlos.
Para obtener más información, consulta la documentación de Terraform.
Migra recursos de Cloud Run habilitados para IAP
Completa los pasos de esta sección para migrar los recursos de Cloud Run en los que IAP está habilitado y se configuró un cliente de OAuth 2.0.
gcloud
Antes de continuar con los pasos, asegúrate de tener una versión actualizada de gcloud CLI. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instala la CLI de gcloud.
Para autenticarte, usa Google Cloud CLI y ejecuta el siguiente comando.
gcloud auth login
Haz clic en la URL que aparece y accede.
Después de acceder, copia el código de verificación que aparece y pégalo en la línea de comandos.
Ejecuta el siguiente comando para especificar el proyecto que contiene las aplicaciones que deseas seguir protegiendo con IAP.
gcloud config set project PROJECT_ID
Ejecuta el siguiente comando para recuperar el ID de cliente de OAuth 2.0 configurado.
Alcance global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global \ --format="value(iap.oauth2ClientId)"
Alcance regional
Guarda el ID de cliente del comando anterior si deseas permitir el acceso programático.gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME \ --format="value(iap.oauth2ClientId)"
Para incluir en la lista de entidades permitidas al cliente de OAuth 2.0 para el acceso programático, realiza una operación de lectura-actualización-escritura en la API de configuración de IAP.
Alcance global
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME > settings.yaml
Alcance regional
gcloud iap settings get \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME > settings.yaml
Actualiza el archivo settings.yaml y agrega el ID de cliente de OAuth 2.0 recuperado anteriormente en
programmaticClients
, como se muestra en el ejemplo.accessSettings: oauthSettings: programmaticClients: - CLIENT_ID
Aplica la nueva configuración en la aplicación de Compute Engine
Alcance global
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME
Alcance regional
gcloud iap settings set settings.yaml \ --resource-type=compute \ --project=PROJECT_ID \ --service=BACKEND_SERVICE_NAME \ --region=REGION_NAME
Para migrar tus recursos, ejecuta el comando con alcance global o regional.
Alcance global
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Alcance regional
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
Para confirmar que no se configuró el ID de cliente de OAuth, ejecuta el siguiente comando de alcance global o regional. Después de ejecutar el comando, verifica el resultado para asegurarte de que el campo del ID de cliente de OAuth esté vacío.
Alcance global
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --global
Alcance regional
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION_NAME
API
Ejecuta el siguiente comando para recuperar el ID de cliente de OAuth 2.0 configurado.
Alcance 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"
Alcance 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"
Ejecuta el siguiente comando para recuperar la configuración existente de las IAP en un archivo
settings.json
.Alcance 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
Alcance 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
Actualiza el archivo
settings.json
para agregar el CLIENT_ID guardado anteriormente como cliente programático.{ "accessSettings": { "oauthSettings": { "programmaticClients": [ "CLIENT_ID" ] }, }, }
Ejecuta el siguiente comando para actualizar la configuración de las IAP.
Alcance 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"
Alcance 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"
Ejecuta el siguiente comando para preparar un archivo
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId": " ", "oauth2ClientSecret": " " } } EOF
Ejecuta el siguiente comando para migrar tus recursos.
Alcance 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"
Alcance 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 no se configuró el ID de cliente de OAuth, ejecuta el siguiente comando de alcance global o regional. Después de ejecutar el comando, verifica el resultado para asegurarte de que el campo del ID de cliente de OAuth esté vacío.
Alcance 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"
Alcance 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"
Migra recursos de Google Kubernetes Engine habilitados para IAP
Agrega el siguiente bloque de IAP a la Definición de Recurso Personalizado (CRD) de BackendConfig. Esto habilita IAP con el cliente de OAuth 2.0 administrado por Google.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: config-default
namespace: my-namespace
spec:
iap:
enabled: true
Usa un JWT de cuenta de servicio para autenticarte en IAP
Puedes autenticarte en IAP sin tener que usar la API de OAuth Admin obsoleta con un JWT de cuenta de servicio.
Obtén el secreto de un cliente de OAuth
Para obtener el secreto de un cliente de OAuth sin usar la API de OAuth Admin obsoleta, usa Secret Manager siguiendo las instrucciones de este ejemplo de Terraform: google_secret_manager_secret
.
Determina si usas la API de Admin de OAuth
Para verificar si usas la API de OAuth Admin, completa los siguientes pasos.
En la consola de Google Cloud , abre la página de las APIs de IAP y, luego, selecciona el proyecto que deseas analizar.
Ir a la página de las APIs de IAPEn la lista Seleccionar gráficos, selecciona Tráfico por método de API y, luego, haz clic en Aceptar.
En la sección Métodos, busca cualquier método con el prefijo
google.cloud.iap.v1.IdentityAwareProxyOAuthService
, que indica que el proyecto usa la API de OAuth Admin.