Configura IAP para Cloud Run

En esta página, se describe cómo habilitar IAP directamente en un servicio de Cloud Run y proteger el tráfico destinado a un servicio de Cloud Run enrutándolo a IAP para la autenticación. Si habilitas IAP directamente en Cloud Run, puedes proteger el tráfico con un solo clic desde todas las rutas de entrada, incluidas las URLs predeterminadas de y los balanceadores de cargas.

Cuando integras IAP en Cloud Run, puedes administrar el acceso de usuarios o grupos de las siguientes maneras:

  • Dentro de la organización: Configura el acceso para los usuarios que se encuentran dentro de la misma organización que tu servicio de Cloud Run.
  • Fuera de la organización: Configura el acceso para los usuarios que pertenecen a organizaciones diferentes de la de tu servicio de Cloud Run.
  • Sin organización: Configura el acceso en proyectos que no forman parte de ninguna organización de Google

Limitaciones conocidas

  • No puedes configurar IAP en el balanceador de cargas y en el servicio de Cloud Run.
  • Cloud Run aplica las políticas de IAP antes de realizar verificaciones de IAM en la cuenta de servicio de IAP. Debido a que IAP intercepta las solicitudes y reemplaza la identidad del emisor original, es posible que fallen los servicios como Pub/Sub que dependen de su propia autenticación.

Antes de comenzar

Roles obligatorios

Para obtener los permisos que necesitas para habilitar IAP, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Habilita IAP desde Cloud Run

Te recomendamos que habilites IAP en Cloud Run directamente.

Habilita IAP desde Cloud Run con la consola de Google Cloud , Google Cloud CLI o Terraform.

Console

Cuando habilitas IAP para Cloud Run, IAP requiere permisos para invocar tu servicio de Cloud Run. Si habilitas IAP con la consola de Google Cloud , este permiso se otorga automáticamente asignando el rol de Invocador de Cloud Run (roles/run.invoker) al agente de servicio de IAP. Para habilitar IAP desde Cloud Run, sigue estos pasos:

  1. En la consola Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Servicios en el menú de navegación de Cloud Run:

    1. Si estás configurando un servicio nuevo, haz clic en Implementar contenedor y completa la página de configuración inicial del servicio.

    2. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en la pestaña Seguridad.

  3. Selecciona Necesita autenticación y, luego, Identity-Aware Proxy (IAP).

  4. Opcional: Para otorgar acceso a los usuarios, sigue las instrucciones para administrar el acceso de usuarios o grupos en IAP. Si tienes problemas cuando configuras el acceso para usuarios ajenos a tu organización, consulta la sección Solución de problemas. Para guardar la configuración, haz clic en Guardar.

  5. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

Para habilitar IAP directamente desde Cloud Run, agrega la marca --iap cuando implementes tu app y otorga el permiso de invocador al agente de servicio de IAP:

  1. Implementa tu servicio de Cloud Run con uno de los siguientes comandos:

    Para un servicio nuevo, sigue estos pasos:

    gcloud run deploy SERVICE_NAME \
      --region=REGION \
      --image=IMAGE_URL \
      --no-allow-unauthenticated \
      --iap

    Si habilitas IAP por primera vez en un proyecto sin una organización, es posible que veas la siguiente advertencia:

    Deploying services with IAP enabled in a project without an organization
    may require initial setup via the Cloud Console. Please use the Cloud Run
    UI to enable IAP for the first time in the project.
    

    Esta advertencia aparece porque no puedes crear clientes de OAuth de manera programática. Te recomendamos que primero habilites IAP en Cloud Run directamente desde la consola de Google Cloud o configures un cliente de OAuth personalizado y, luego, agregues usuarios con gcloud CLI.

    Para un servicio existente, sigue estos pasos:

    gcloud run services update SERVICE_NAME \
      --region=REGION \
      --iap

    Reemplaza lo siguiente:

    • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
    • REGION: el nombre de tu región de Cloud Run. Por ejemplo, europe-west1
    • IMAGE_URL: una referencia a la imagen de contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PROJECT_NUMBER: Es el número del proyecto de Google Cloud .
  2. Otorga el permiso de invocador al agente de servicio de IAP:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
      --region=REGION \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap. \
      --role=roles/run.invoker

    Reemplaza lo siguiente:

    • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
    • REGION: el nombre de tu región de Cloud Run. Por ejemplo, europe-west1
    • PROJECT_NUMBER: Es el número del proyecto de Google Cloud .
  3. Es opcional. Para otorgar acceso a los usuarios, consulta Administra el acceso de usuarios o grupos para IAP.

  4. Para verificar que tu servicio esté configurado con IAP habilitado, ejecuta el siguiente comando:

    gcloud run services describe SERVICE_NAME

    El resultado debería contener la siguiente cadena:

    Iap Enabled: true

IAP ahora enruta todo el tráfico destinado al servicio de Cloud Run configurado a IAP para la autenticación antes de pasar al contenedor.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Para habilitar IAP con Terraform, debes actualizar la definición del servicio y agregar una vinculación de política de IAM para otorgar permiso de invocador a IAP.

  1. Agrega iap_enabled = true a un recurso google_cloud_run_v2_service en tu configuración de Terraform para habilitar IAP en el servicio:

    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-iap-service"
      location = "europe-west1"
      ingress      = "INGRESS_TRAFFIC_ALL"
      iap_enabled  = true
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
      }
    }
    
  2. Agrega lo siguiente para otorgar el rol roles/run.invoker al agente de servicio de IAP.

    resource "google_cloud_run_v2_service_iam_member" "iap_invoker" {
      project = google_cloud_run_v2_service.default.project
      location = google_cloud_run_v2_service.default.location
      name = google_cloud_run_v2_service.default.name
      role   = "roles/run.invoker"
      member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap."
    }
    

    Reemplaza PROJECT_NUMBER por el número del proyecto.

  3. Es opcional. Para recuperar los datos actuales de la política de IAM, agrega lo siguiente a un recurso google_cloud_run_v2_service_iam_policy en tu configuración de Terraform.

    data "google_cloud_run_v2_service_iam_policy" "policy" {
      project = google_cloud_run_v2_service.default.project
      location = google_cloud_run_v2_service.default.location
      name = google_cloud_run_v2_service.default.name
    }
    

Administra el acceso de usuarios o grupos

De forma predeterminada, IAP para Cloud Run usa un cliente de OAuth administrado por Google que te permite agregar identidades dentro de la organización con una dirección de correo electrónico asociada a un usuario. También puedes administrar principales externas a tu organización o sin una organización con la consola de Google Cloud en IAP. Para ello, crea un cliente de OAuth personalizado como se describe en los siguientes pasos.

Agrega o quita el acceso de IAP a un servicio de Cloud Run con la consola de Google Cloud , gcloud CLI o Terraform.

Dentro de la organización

Console

Para agregar o quitar el acceso, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio existente que deseas modificar y, luego, en Seguridad.

  3. En Identity-Aware Proxy (IAP), haz clic en Editar política.

  4. Para agregar acceso, ingresa la principal y, de forma opcional, el nivel de acceso que deseas agregar, o deja el nivel de acceso en blanco. Para ver y agregar niveles de acceso, debes tener los roles necesarios para Access Context Manager.

  5. Para quitar el acceso cuando solo hay una principal en la política, haz clic en el ícono Borrar política junto a Niveles de acceso.

  6. Para quitar principales individuales de una política, haz clic en el ícono X junto al nombre de la principal que deseas quitar.

  7. Para guardar la configuración del usuario, haz clic en Guardar.

gcloud

Para agregar o quitar el acceso a un servicio de Cloud Run para usuarios o grupos individuales, ejecuta uno de los siguientes comandos:

  • Sigue estos pasos para agregar el acceso:

    gcloud iap web add-iam-policy-binding \
      --member=user:USER_EMAIL \
      --role=roles/iap.httpsResourceAccessor \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME
  • Para quitar el acceso, sigue estos pasos:

    gcloud iap web remove-iam-policy-binding \
      --member=user:USER_EMAIL \
      --role=roles/iap.httpsResourceAccessor \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME
  • Para ver el acceso, sigue estos pasos:

    gcloud iap web get-iam-policy \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME

Reemplaza lo siguiente:

  • USER_EMAIL: la dirección de correo electrónico del usuario.
  • REGION: Es el nombre de tu región de Cloud Run.
  • SERVICE_NAME: el nombre de tu servicio de Cloud Run.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

  • Para otorgar acceso autoritativo a una lista de principales, haz lo siguiente:

    Usa el recurso google_iap_web_cloud_run_service_iam_binding para otorgar un rol a una lista autorizada de principales. Este recurso garantiza que solo los miembros de la lista reciban el rol. Se quitan todos los demás principales a los que se les otorgó el rol.

    1. Agrega lo siguiente a un recurso google_iap_web_cloud_run_service_iam_binding en tu configuración de Terraform.

      resource "google_iap_web_cloud_run_service_iam_binding" "binding" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        members = [
          "PRINCIPAL_A", "PRINCIPAL_B"
        ]
      }
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el nombre del proyecto.
      • REGION: la región de Google Cloud , por ejemplo, europe-west1.
      • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
      • PRINCIPAL: Es un identificador para las principales o los miembros, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que PRINCIPAL puede tener, consulta la referencia sobre la vinculación de políticas.
  • Para otorgar acceso a una sola principal, sigue estos pasos:

    Usa el recurso google_iap_web_cloud_run_service_iam_member para otorgar un rol a una sola principal sin afectar a otras principales que puedan tener el mismo rol.

    1. Agrega lo siguiente a un recurso google_iap_web_cloud_run_service_iam_member en tu configuración de Terraform.

      resource "google_iap_web_cloud_run_service_iam_member" "member" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        member = "PRINCIPAL"
      }</span>
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el nombre del proyecto.
      • REGION: la región de Google Cloud , por ejemplo, europe-west1.
      • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
      • PRINCIPAL: Es un identificador para las principales o los miembros, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que PRINCIPAL puede tener, consulta la referencia sobre la vinculación de políticas.

Fuera de la organización

Console

  • Para agregar usuarios externos a tu organización con IAP, completa el siguiente proceso de configuración única:

    1. En la consola de Google Cloud , ve a la página de Cloud Run:

      Ir a Cloud Run

    2. Haz clic en el servicio existente que deseas modificar y, luego, en Seguridad.

    3. En la página de detalles de seguridad de tu servicio de Cloud Run, en IAP, haz clic en Editar política.

    4. Haz clic en Configurar en IAP. Se abrirá la página de configuración de recursos en IAP.

    5. Haz clic en Configurar pantalla de consentimiento para configurar tu pantalla de consentimiento de OAuth. En el tipo de público, selecciona Externo.

    6. Para realizar la configuración más rápida, haz clic en Generar credenciales automáticamente.

    7. Como alternativa, sigue las instrucciones para crear un ID de cliente de OAuth. Selecciona OAuth personalizado y, luego, ingresa tu ID de cliente y secreto personalizados.

    8. Para guardar la configuración, haz clic en Guardar.

    Ahora puedes volver a tu servicio de Cloud Run en Cloud Run para agregar principales ajenas a la organización.

  • Para agregar o quitar el acceso de un usuario, completa los siguientes pasos:

    1. En la consola de Google Cloud , ve a la página de Cloud Run:

      Ir a Cloud Run

    2. Haz clic en el servicio existente que deseas modificar y, luego, en Seguridad.

    3. En IAP, haz clic en Editar política.

    4. Para agregar acceso, ingresa la principal y, de forma opcional, el nivel de acceso que deseas agregar, o deja el nivel de acceso en blanco. Para ver y agregar niveles de acceso, debes tener los roles necesarios para Access Context Manager.

    5. Para quitar el acceso cuando solo hay una principal en la política, haz clic en el ícono Borrar política junto a Niveles de acceso.

    6. Para quitar principales individuales de una política, haz clic en el ícono X junto al nombre de la principal que deseas quitar.

    7. Para guardar la configuración del usuario, haz clic en Guardar.

gcloud

Antes de comenzar

Para agregar o quitar el acceso a un servicio de Cloud Run para usuarios o grupos individuales, ejecuta uno de los siguientes comandos:

  • Sigue estos pasos para agregar el acceso:

    gcloud iap web add-iam-policy-binding \
      --member=user:USER_EMAIL \
      --role=roles/iap.httpsResourceAccessor \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME
  • Para quitar el acceso, sigue estos pasos:

    gcloud iap web remove-iam-policy-binding \
      --member=user:USER_EMAIL \
      --role=roles/iap.httpsResourceAccessor \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME
  • Para ver el acceso, sigue estos pasos:

    gcloud iap web get-iam-policy \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME

Reemplaza lo siguiente:

  • USER_EMAIL: la dirección de correo electrónico del usuario.
  • REGION: el nombre de tu región de Cloud Run.
  • SERVICE_NAME: el nombre de tu servicio de Cloud Run.

Terraform

Antes de comenzar

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

  • Para otorgar acceso autoritativo a una lista de principales, haz lo siguiente:

    Usa el recurso google_iap_web_cloud_run_service_iam_binding para otorgar un rol a una lista autorizada de principales. Este recurso garantiza que solo se otorgue el rol a los miembros de la lista. Se quitan todas las demás principales a las que se les otorgó el rol.

    1. Agrega lo siguiente a un recurso google_iap_web_cloud_run_service_iam_binding en tu configuración de Terraform.

      resource "google_iap_web_cloud_run_service_iam_binding" "binding" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        members = [
          "PRINCIPAL_A", "PRINCIPAL_B"
        ]
      }
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el nombre del proyecto.
      • REGION: la región de Google Cloud , por ejemplo, europe-west1.
      • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
      • PRINCIPAL: Es un identificador para las principales o los miembros, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que PRINCIPAL puede tener, consulta la referencia sobre la vinculación de políticas.
  • Para otorgar acceso a una sola principal, sigue estos pasos:

    Usa el recurso google_iap_web_cloud_run_service_iam_member para otorgar un rol a una sola principal sin afectar a otras principales que puedan tener el mismo rol.

    1. Agrega lo siguiente a un recurso google_iap_web_cloud_run_service_iam_member en tu configuración de Terraform.

      resource "google_iap_web_cloud_run_service_iam_member" "member" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        member = "PRINCIPAL"
      }</span>
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el nombre del proyecto.
      • REGION: la región de Google Cloud , por ejemplo, europe-west1.
      • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
      • PRINCIPAL: Es un identificador para las principales o los miembros, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que PRINCIPAL puede tener, consulta la referencia sobre la vinculación de políticas.

Sin organización

Console

Para agregar o quitar el acceso, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio existente que deseas modificar y, luego, en Seguridad.

  3. En IAP, haz clic en Editar política.

  4. Para agregar acceso, ingresa la principal y, de forma opcional, el nivel de acceso que deseas agregar, o deja el nivel de acceso en blanco. Para ver y agregar niveles de acceso, debes tener los roles necesarios para Access Context Manager.

  5. Para quitar el acceso cuando solo hay una principal en la política, haz clic en el ícono Borrar política junto a Niveles de acceso.

  6. Para quitar principales individuales de una política, haz clic en el ícono X junto al nombre de la principal que deseas quitar.

  7. Para guardar la configuración del usuario, haz clic en Guardar.

gcloud

Antes de comenzar

Para agregar o quitar el acceso a un servicio de Cloud Run para usuarios o grupos individuales, ejecuta uno de los siguientes comandos:

  • Sigue estos pasos para agregar el acceso:

    gcloud iap web add-iam-policy-binding \
      --member=user:USER_EMAIL \
      --role=roles/iap.httpsResourceAccessor \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME
  • Para quitar el acceso, sigue estos pasos:

    gcloud iap web remove-iam-policy-binding \
      --member=user:USER_EMAIL \
      --role=roles/iap.httpsResourceAccessor \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME
  • Para ver el acceso, sigue estos pasos:

    gcloud iap web get-iam-policy \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME

Reemplaza lo siguiente:

  • USER_EMAIL: la dirección de correo electrónico del usuario.
  • REGION: el nombre de tu región de Cloud Run.
  • SERVICE_NAME: el nombre de tu servicio de Cloud Run.

Terraform

Antes de comenzar

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

  • Para otorgar acceso autoritativo a una lista de principales, haz lo siguiente:

    Usa el recurso google_iap_web_cloud_run_service_iam_binding para otorgar un rol a una lista autorizada de principales. Este recurso garantiza que solo se otorgue el rol a los miembros de la lista. Se quitan todas las demás principales a las que se les otorgó el rol.

    1. Agrega lo siguiente a un recurso google_iap_web_cloud_run_service_iam_binding en tu configuración de Terraform.

      resource "google_iap_web_cloud_run_service_iam_binding" "binding" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        members = [
          "PRINCIPAL_A", "PRINCIPAL_B"
        ]
      }
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el nombre del proyecto.
      • REGION: la región de Google Cloud , por ejemplo, europe-west1.
      • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
      • PRINCIPAL: Es un identificador para las principales o los miembros, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que PRINCIPAL puede tener, consulta la referencia sobre la vinculación de políticas.
  • Para otorgar acceso a una sola principal, sigue estos pasos:

    Usa el recurso google_iap_web_cloud_run_service_iam_member para otorgar un rol a una sola principal sin afectar a otras principales que puedan tener el mismo rol.

    1. Agrega lo siguiente a un recurso google_iap_web_cloud_run_service_iam_member en tu configuración de Terraform.

      resource "google_iap_web_cloud_run_service_iam_member" "member" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        member = "PRINCIPAL"
      }</span>
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el nombre del proyecto.
      • REGION: la región de Google Cloud , por ejemplo, europe-west1.
      • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
      • PRINCIPAL: Es un identificador para las principales o los miembros, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que PRINCIPAL puede tener, consulta la referencia sobre la vinculación de políticas.

Inhabilita IAP desde Cloud Run

Puedes inhabilitar IAP con la consola de Google Cloud o gcloud CLI.

Console

Para inhabilitar IAP desde Cloud Run, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página de Cloud Run:

    Ir a Cloud Run

  2. Selecciona el servicio que deseas modificar.

  3. Haz clic en la pestaña Seguridad.

  4. Anula la selección de Identity-Aware Proxy (IAP). Tu servicio está protegido por tu política de IAM. Sin embargo, si no usas IAM, selecciona Permitir acceso público para que tu servicio sea de acceso público.

  5. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios.

gcloud

Para inhabilitar IAP directamente desde Cloud Run, agrega la marca --no-iap cuando implementes tu app de la siguiente manera:

  1. Implementa tu servicio de Cloud Run con cualquiera de los siguientes comandos:

    Para un servicio nuevo, sigue estos pasos:

    gcloud run deploy SERVICE_NAME \
      --region=REGION \
      --image=IMAGE_URL \
      --no-iap

    Para un servicio existente, sigue estos pasos:

    gcloud run services update SERVICE_NAME \
      --region=REGION \
      --no-iap

    Reemplaza lo siguiente:

    • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
    • REGION: el nombre de tu región de Cloud Run.
    • IMAGE_URL: una referencia a la imagen de contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  2. Para verificar que tu servicio ya no esté configurado con IAP habilitado, ejecuta el siguiente comando:

    gcloud run services describe SERVICE_NAME

    El resultado ya no debería contener la siguiente cadena:

    Iap Enabled: true

IAP ya no enruta todo el tráfico con destino al servicio de Cloud Run configurado a IAP para la autenticación antes de pasar al contenedor.

Configura un cliente de OAuth personalizado

Te recomendamos que uses la consola de Google Cloud cuando habilites IAP por primera vez. De esta manera, puedes generar credenciales de forma automática para evitar tener que crear un cliente de OAuth personalizado de forma manual. Cuando habilitas IAP en Cloud Run directamente desde la consola de Google Cloud , IAP configura automáticamente el cliente de OAuth personalizado por ti a nivel del proyecto.

Si usas gcloud CLI para administrar el acceso de los usuarios sin una organización, habilita IAP en Cloud Run directamente desde la consola de Google Cloud o sigue los pasos de esta sección para crear un cliente de OAuth personalizado de forma manual.

Para situaciones avanzadas, como personalizar la pantalla de consentimiento o administrar clientes de OAuth a nivel de la organización, sigue estos pasos.

Configura la marca

  1. En la consola de Google Cloud , ve a la página Desarrollo de la marca de OAuth:

    Ir a Información de la marca

  2. Haz clic en Comenzar.

  3. Completa el formulario Información de la app y haz clic en Siguiente.

  4. En Público, selecciona Externo.

  5. Completa el resto del formulario y haz clic en Crear.

Crea un cliente de OAuth personalizado de forma manual

  • Si es la primera vez que configuras Google Auth Platform, haz lo siguiente:

    1. En la consola de Google Cloud , ve a la página Clientes:

      Ir a Clientes

    2. Si se te solicita, haz clic en Comenzar en la página de resumen de Google Auth Platform.

      1. Completa los detalles de la información de la app y haz clic en Siguiente.
      2. Selecciona Externo para el tipo de público.
      3. Completa la información de contacto, acepta las condiciones y, luego, haz clic en Crear.
      4. Haz clic en Crear cliente.
      5. En Tipo de aplicación, selecciona Aplicación web y completa el nombre de tu cliente de OAuth.
      6. Haz clic en Crear.
      7. Toma nota del ID de cliente y el secreto, y haz clic en Aceptar.
      8. Haz clic en el nombre del cliente de OAuth recién creado para editarlo.
      9. En el campo URI de redireccionamiento autorizados, agrega el siguiente URI:
        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
        Reemplaza CLIENT_ID por el ID de cliente de OAuth que acabas de generar.
      10. Haz clic en Guardar.
  • Si ya configuraste Google Auth Platform, haz lo siguiente:

    1. En la consola de Google Cloud , ve a la página Clientes:

      Ir a Clientes

    2. Haz clic en Crear cliente.

    3. En Tipo de aplicación, selecciona Aplicación web y completa el nombre de tu cliente de OAuth.

    4. Completa los detalles de la información de la app.

    5. Haz clic en Crear.

    6. Toma nota del ID de cliente y el secreto, y haz clic en Aceptar.

    7. Haz clic en el nombre del cliente de OAuth recién creado para editarlo.

    8. En el campo URI de redireccionamiento autorizados, agrega el siguiente URI:

      https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      Reemplaza CLIENT_ID por el ID de cliente de OAuth que acabas de generar.

    9. Haz clic en Guardar.

Aplica el cliente de OAuth a IAP

Puedes aplicar el cliente de OAuth a nivel del proyecto o de la organización.

  • A nivel del proyecto, sigue estos pasos:

    1. Crea un archivo llamado iap_settings.yaml y agrégale el siguiente contenido:

      access_settings:
        oauth_settings:
          client_id: CLIENT_ID
          client_secret: CLIENT_SECRET
    2. Ejecuta el comando gcloud iap settings set para aplicar el cliente de OAuth a nivel del proyecto:

      gcloud iap settings set iap_settings.yaml --project=PROJECT_ID

    Reemplaza lo siguiente:

    • CLIENT_ID: Es el ID de cliente de OAuth que guardaste en el paso anterior.
    • CLIENT_SECRET: Es el secreto que guardaste en el paso anterior.
    • PROJECT_ID: el ID de tu proyecto.
  • A nivel de la organización, sigue estos pasos:

    1. Para aplicar el cliente de OAuth a nivel de la organización, ejecuta el comando gcloud iap settings set:

      gcloud iap settings set iap_settings.yaml --organization=ORGANIZATION_NUMBER

      Reemplaza lo siguiente:

      • CLIENT_ID: Es el ID de cliente de OAuth que guardaste en el paso anterior.
      • CLIENT_SECRET: Es el secreto que guardaste en el paso anterior.
      • ORGANIZATION_NUMBER: Es el número de tu organización.

Soluciona problemas

En la siguiente sección, se describe cómo solucionar problemas de IAP con Cloud Run.

Errores de acceso externo a la organización

A continuación, se indican los errores que puedes encontrar cuando configuras el acceso para usuarios ajenos a tu organización.

Acceso de usuarios externos a la organización: Inhabilitado

Para asegurarte de que el acceso de usuarios externos a la organización esté inhabilitado, te recomendamos que lo inhabilites a nivel de proyecto. Es posible que los controles en otros niveles (servicio, carpeta u organización) aparezcan inhabilitados, incluso si el acceso está disponible.

La marca está configurada como interna

No se admite el acceso fuera de la organización cuando la marca de tu cliente de OAuth personalizado se configura como interno.

Para actualizar el parámetro de configuración de la marca a externa y habilitar el acceso de las principales externas a la organización con IAP, completa los siguientes pasos:

  1. En la consola de Google Cloud , ve a la página Público de Google Auth Platform:

    Ir a Público

  2. En Tipo de usuario, haz clic en Hacer externo.

La falla del agente de servicio provoca un error de IAM de configuración

Habilitar IAP en un proyecto nuevo por primera vez puede causar el siguiente error:

Setting IAM permissions failed

Esto se debe a que se produjo un error en el agente de servicio de Cloud Run. Para resolver el problema, vuelve a habilitar IAP o establece la política de IAM de forma manual.

¿Qué sigue?