En este documento, se describe cuándo y cómo usar clientes de OAuth personalizados para Identity-Aware Proxy (IAP).
De forma predeterminada, IAP usa clientes de OAuth administrados por Google para autenticar a los usuarios. Los clientes de OAuth administrados por Google solo se pueden usar para administrar el acceso de los usuarios internos que pertenecen a una organización.
Debes usar una configuración de OAuth personalizada para hacer lo siguiente:
- Administra el acceso a las aplicaciones habilitadas para las IAP de los usuarios externos que no pertenecen a tu organización.
- Administrar el acceso a aplicaciones web que se encuentran en proyectos que no pertenecen a unaGoogle Cloud organización
- Mostrar información de la marca personalizada en las pantallas de consentimiento durante la autenticación
Puedes configurar clientes de OAuth personalizados en IAP o directamente en tu plataforma.
Cuando usas clientes de OAuth personalizados, debes configurar la pantalla de consentimiento de OAuth. Para que la marca personalizada aparezca en la pantalla de consentimiento, debes enviar tu aplicación para que Google la verifique. Para obtener más información sobre el proceso de verificación, consulta Configura tu pantalla de consentimiento de OAuth.
Cuando configuras clientes de OAuth personalizados, eres responsable de crear y administrar las credenciales, lo que incluye almacenar de forma segura el secreto del cliente y compartirlo con los clientes autorizados cuando sea necesario.
Comparación entre los clientes de OAuth administrados por Google y los clientes de OAuth personalizados
Los clientes de OAuth administrados por Google no pueden acceder de forma programática a las aplicaciones protegidas por IAP. Sin embargo, se puede acceder de forma programática a las aplicaciones protegidas por IAP que usan el cliente de OAuth administrado por Google con un cliente de OAuth independiente configurado a través del parámetro de configuración programmatic_clients o un JWT de cuenta de servicio.
En la siguiente tabla, se compara el cliente de OAuth administrado por Google con un cliente de OAuth personalizado.
| Cliente de OAuth administrado por Google | Cliente de OAuth personalizado | |
|---|---|---|
| Usuarios | Solo para uso interno | Socios internos y externos |
| Marca | Google Cloud marca | Marca propiedad del cliente |
| Configuración de OAuth | Configurado por Google | Configurado por el cliente |
| Credenciales de OAuth | Administrado por Google | Administrada por el cliente |
| Acceso a la aplicación | Solo flujo del navegador | Flujo del navegador y acceso programático |
Configura la página de desarrollo de la marca
Para configurar la página de desarrollo de la marca personalizada con la consola de Google Cloud , haz lo siguiente:
En la consola de Google Cloud , ve a la página Branding de OAuth:
Haz clic en Comenzar.
En Nombre de la app, ingresa el nombre de la aplicación para la pantalla de consentimiento.
En Correo electrónico de asistencia del usuario, ingresa la dirección de correo electrónico del administrador para obtener asistencia.
En Público, selecciona Interno para restringir el acceso a los usuarios de tu organización o Externo para permitir el acceso a los usuarios que no pertenecen a tu organización.
En Información de contacto, ingresa el correo electrónico del administrador con el que se debe comunicar para las apps protegidas por los clientes de OAuth. Configurarás los clientes de OAuth en un paso posterior.
Para crear la configuración de OAuth, haz clic en Crear.
Configura clientes de OAuth personalizados en IAP
En esta sección, se describe cómo configurar clientes de OAuth personalizados en la IAP.
Puedes crear un cliente de OAuth personalizado para IAP con la consola deGoogle Cloud de las siguientes maneras:
- Crea un cliente de OAuth de forma manual: Debes agregar el URI de redireccionamiento antes de configurar IAP.
- Crea un cliente de OAuth automáticamente con las credenciales generadas de forma automática por la IAP: La IAP crea y configura el cliente de OAuth por ti, y agrega automáticamente el URI de redireccionamiento requerido.
Independientemente del método que uses, asegúrate de haber configurado la página de desarrollo de marca antes de crear tu cliente de OAuth. En ambos métodos, se muestra el formato de URI de redireccionamiento requerido.
Crea el cliente de OAuth personalizado
En esta sección, se describe cómo crear clientes de OAuth personalizados con la consola deGoogle Cloud . Puedes configurar clientes de OAuth de IAP personalizados en cualquier nivel de la jerarquía de recursos.
Para crear clientes de OAuth personalizados para un recurso con la consola de Google Cloud , usa uno de los siguientes métodos:
Método 1: Crea un cliente de OAuth con la consola de Google Cloud
Usa este método cuando quieras crear el cliente de OAuth por separado, tal vez antes de configurar IAP para tus recursos. Esto requiere que agregues manualmente el URI de redireccionamiento de la IAP.
En la consola de Google Cloud , ve a APIs y servicios > Credenciales.
Haz clic en Crear credenciales y, luego, selecciona ID de cliente de OAuth.
En Tipo de aplicación, selecciona Aplicación web.
En el campo Nombre, ingresa un nombre descriptivo para tu cliente de OAuth.
Haz clic en Crear. Toma nota del ID de cliente generado.
Después de crear el cliente de OAuth, ve a la sección URIs de redireccionamiento autorizadas de la página de detalles del cliente de OAuth que acabas de crear.
Haz clic en Agregar URI y, luego, ingresa el siguiente URI de redireccionamiento autorizado específico para las IAP:
https://iap.googleapis.com/v1/oauth/clientIds/YOUR_CLIENT_ID:handleRedirect
Reemplaza
YOUR_CLIENT_IDpor el ID de cliente que obtuviste en el paso anterior.Haz clic en Guardar.
Método 2: Crea un cliente de OAuth con las credenciales generadas de forma automática por la IAP
Usa este método para que IAP cree y configure el cliente de OAuth por ti, y agregue automáticamente el URI de redireccionamiento requerido.
En la consola de Google Cloud , ve a la página IAP.
En la pestaña Applications, en la lista de recursos, busca el que deseas configurar.
Para los recursos a nivel del proyecto, haz lo siguiente:
Crea el cliente de OAuth con la Google Cloud consola:
En la columna Acciones, haz clic en Más opciones > Configuración.
En el diálogo Configuración, selecciona OAuth personalizado.
Si no configuraste una pantalla de consentimiento, haz lo siguiente:
Haz clic en Configurar pantalla de consentimiento.
Sigue las instrucciones para configurar la página de desarrollo de la marca que se proporcionan anteriormente en este documento.
En el diálogo de configuración de IAP, haz clic en Generar credenciales automáticamente. IAP genera un nuevo cliente de OAuth y secreto para usar con este recurso. En Google Auth Platform, el campo URIs de redireccionamiento autorizados contiene una entrada con el siguiente formato:
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
Para acceder al ID de cliente y al secreto, haz clic en Descargar credenciales. Las credenciales se guardan en un archivo con formato JSON. Debido a que el archivo contiene credenciales sensibles para acceder a los recursos, asegúrate de que esté protegido o borrado.
Para guardar la configuración de OAuth de IAP y aplicar el cliente de OAuth a IAP, haz clic en Guardar.
Aplica clientes de OAuth personalizados a la IAP
En esta sección, se describe cómo aplicar clientes de OAuth a IAP. Puedes usar este método en lugar de aplicar los clientes directamente en tu plataforma.
Para crear el cliente de OAuth personalizado, sigue las instrucciones de la consola deGoogle Cloud que se proporcionaron anteriormente en este documento.
Aplica el cliente de OAuth personalizado.
gcloud
Para aplicar el cliente de OAuth personalizado con gcloud CLI, haz lo siguiente:
Crea un archivo YAML de configuración.
cat << EOF > iap-oauth.yaml accessSettings: oauthSettings: clientId: CLIENT_ID clientSecret: CLIENT_SECRET EOF
Reemplaza lo siguiente:
CLIENT_ID: Es el ID de cliente de las credenciales de OAuth que generaste antes.CLIENT_SECRET: Es el secreto del cliente de las credenciales de OAuth que generaste antes.
Para establecer la configuración de OAuth, realiza una de las siguientes acciones:
- Para establecer la configuración de OAuth a nivel del proyecto, ejecuta el siguiente comando:
gcloud iap settings set iap-oauth.yaml
Para establecer la configuración en otro nivel de la jerarquía de recursos, usa una de las siguientes marcas en lugar de la marca
--project. Establecer clientes de OAuth personalizados en un nivel de la jerarquía de recursos proporciona la misma marca personalizada a todos los servicios que se ejecutan en ese nivel.* <pre>--folder=<var>FOLDER_ID</var></pre> * <code>--organization=<var>ORGANIZATION_ID</var></code>- Para establecer la configuración en un servicio específico, ejecuta el siguiente comando:
gcloud iap settings set iap-oauth.yaml \ --project=PROJECT_ID \ --resource-type= RESOURCE_TYPE \ --region=REGION \ --service=SERVICE_NAME
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del recurso del proyecto. Para establecer la configuración en otro nivel, usa una de las siguientes marcas en lugar de la marca--project:--folder=FOLDER_ID--organization=ORGANIZATION_ID
RESOURCE_TYPE: Reemplaza este valor por uno de los siguientes tipos de recursos, según el recurso:app-enginebackend-servicescloud-runcomputefolderforwarding-ruleiap_weborganization
REGION: Es la región en la que ejecutas tu servicio de Cloud Run.SERVICE_NAME: El nombre de tu servicio.
Terraform
Para aplicar el cliente de OAuth personalizado con Terraform, haz lo siguiente:
resource "google_iap_settings" "iap_settings" { name = IAP_RESOURCE_NAME access_settings { oauth_settings { oauth_client_id = CLIENT_ID oauth_client_secret = CLIENT_SECRET } } }Reemplaza lo siguiente:
IAP_RESOURCE_NAME: Es el nombre del recursoiap_settingspara el servicio, que tiene el siguiente formato:projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAMECLIENT_ID: Es el ID de cliente de las credenciales de OAuth que generaste antes.CLIENT_SECRET: Es el secreto del cliente de las credenciales de OAuth que generaste antes.
API de REST
Crea un archivo JSON de configuración.
cat << EOF > iap-oauth.json { "accessSettings": { "oauthSettings": { "clientId": "CLIENT_ID", "clientSecret": "CLIENT_SECRET" } } } EOF
Reemplaza lo siguiente:
CLIENT_ID: Es el ID de cliente de las credenciales de OAuth que generaste antes.CLIENT_SECRET: Es el secreto del cliente de las credenciales de OAuth que generaste antes.
Aplica el archivo de configuración.
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 probar que tus aplicaciones web estén protegidas por IAP con los clientes de OAuth, consulta Prueba de acceso.
Configuración heredada de clientes de OAuth personalizados en un recurso
En las siguientes secciones, se describen los métodos heredados para configurar clientes de OAuth personalizados en IAP para ciertos tipos de recursos. Puedes omitir esta sección si usaste el método descrito anteriormente en este documento.
App Engine
En esta sección, se describe cómo habilitar clientes de OAuth personalizados en App Engine.
gcloud
Antes de configurar tu proyecto y la IAP, necesitas una versión actualizada de gcloud CLI. Si deseas obtener instrucciones para instalar gcloud CLI, consulta Instala la CLI de gcloud.
-
Para autenticarte, usa Google Cloud CLI y ejecuta el siguiente comando.
gcloud auth login - Para acceder, sigue la URL que aparece.
- 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 el recurso que deseas proteger con IAP.
gcloud config set project PROJECT_ID - Sigue las instrucciones en Cómo crear clientes de OAuth para las IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
- Guarda el ID y el secreto del cliente de OAuth.
-
Para habilitar el IAP, ejecuta el siguiente comando.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
Después de habilitar IAP, puedes usar gcloud CLI para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Obtén más información sobre cómo administrar funciones y permisos.
API
Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
Guarda el ID y el secreto del cliente de OAuth.
Ejecuta el siguiente comando para preparar un archivo
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFEjecuta el siguiente comando para habilitar el 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"
Después de habilitar IAP, puedes usar Google Cloud CLI para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Obtén más información sobre cómo administrar funciones y permisos.
GKE
En esta sección, se describe cómo habilitar clientes de OAuth personalizados en GKE.
Configura BackendConfig
Si ejecutas clústeres de GKE de la versión 1.24 o posterior, puedes configurar IAP y GKE con la API de Kubernetes Gateway. Consulta Configura la IAP para obtener instrucciones.
Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
Crea un Secret de Kubernetes para unir el cliente de OAuth.
Reemplaza lo siguiente:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET: Es el nombre del secreto que se creará.CLIENT_ID: Es el ID de cliente de OAuth.CLIENT_SECRET: El secreto del cliente de OAuth
Deberías recibir una confirmación, como el siguiente resultado, de que el secreto se creó correctamente:
secret "MY_SECRET" created
Agrega las credenciales de OAuth al BackendConfig.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRETHabilita IAP asociando puertos de servicio a tu BackendConfig. Consulta Asocia un BackendConfig con el Ingress. Una forma de establecer esta asociación es hacer que todos los puertos del servicio usen tu BackendConfig de forma predeterminada. Para ello, agrega la siguiente anotación a tu recurso Service:
metadata: annotations: cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'
Después de habilitar IAP, puedes usar gcloud CLI para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Obtén más información sobre cómo administrar funciones y permisos.
Soluciona problemas
Si el secretName al que hiciste referencia no existe o no está estructurado correctamente, se mostrará uno de los siguientes mensajes de error:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.Para resolver este error, asegúrate de haber creado el Secret de Kubernetes correctamente, como se describió en el paso 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.Para resolver este error, asegúrate de haber creado las credenciales de OAuth correctamente. Además, asegúrate de haber hecho referencia a las clavesclient_idyclient_secretcorrectas.
Servicio de backend del balanceador de cargas
En esta sección, se describe cómo configurar clientes de OAuth en IAP para el servicio de backend del balanceador de cargas para los usuarios de Compute Engine y Cloud Run.
gcloud
Antes de configurar tu proyecto y la IAP, necesitas una versión actualizada de gcloud CLI. Si deseas obtener instrucciones para instalar gcloud CLI, consulta Instala la CLI de gcloud.
-
Para autenticarte, usa Google Cloud CLI y ejecuta el siguiente comando.
gcloud auth login - Para acceder, sigue la URL que aparece.
- 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 el recurso que deseas proteger con IAP.
gcloud config set project PROJECT_ID
- Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
- Guarda el ID y el secreto del cliente de OAuth.
-
Para habilitar las IAP, ejecuta el comando con alcance global o regional.
Permiso global Alcance 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
Después de habilitar IAP, puedes usar gcloud CLI para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Obtén más información sobre cómo administrar funciones y permisos.
API
Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
Guarda el ID y el secreto del cliente de OAuth.
Ejecuta el siguiente comando para preparar un archivo
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOFEjecuta el siguiente comando para habilitar el 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"
Después de habilitar IAP, puedes usar gcloud CLI para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Obtén más información sobre cómo administrar funciones y permisos.
Prueba el acceso
Después de configurar tu cliente de OAuth personalizado, puedes probar que IAP lo use para proteger tu servicio de la siguiente manera:
En la página IAP, en la pestaña Aplicaciones, consulta las aplicaciones que administra IAP.
Accede a la URL de una de las aplicaciones. Si accedes a la aplicación por primera vez desde que configuraste la pantalla de consentimiento, verás la pantalla de consentimiento que configuraste anteriormente.