Configurar Identity-Aware Proxy para Cloud Run

En esta página se describe cómo habilitar Identity-Aware Proxy desde 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 desde Cloud Run, puedes dirigir el tráfico con un solo clic desde todas las rutas de entrada, incluidas las URLs run.app predeterminadas y los balanceadores de carga.

Limitaciones conocidas

  • El proyecto debe pertenecer a una organización.
  • Las identidades deben pertenecer a la misma organización.
  • No puedes configurar IAP en el balanceador de carga y en el servicio de Cloud Run.
  • Es posible que algunas integraciones, como Pub/Sub, dejen de funcionar si se habilita la compra en la aplicación.

Antes de empezar

Habilitar IAP desde Cloud Run

Puedes habilitar IAP desde Cloud Run.

Si usas IAP y gestión de identidades y accesos en el mismo servicio de Cloud Run, ten en cuenta las siguientes condiciones:

  • Se realizan las comprobaciones de IAP e IAM.

  • La comprobación de las compras en la aplicación se realiza primero y acepta o bloquea las solicitudes en función de la configuración de las compras en la aplicación.

  • Si la solicitud supera la comprobación de IAP, IAP usa su propia cuenta de servicio para autenticarse en la comprobación de IAM de Cloud Run.

  • Como la comprobación de las compras en aplicaciones se realiza primero, es posible que algunos servicios, como Pub/Sub, no se autentiquen correctamente.

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

Consola

Para habilitar IAP desde Cloud Run, sigue estos pasos:

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

    Ir a Cloud Run

  2. Si vas a configurar un servicio nuevo en el que vas a implementar un contenedor, selecciona Implementar contenedor > Servicio. Si va a configurar y desplegar un servicio que ya tiene, haga clic en el servicio y, a continuación, en Editar y desplegar nueva revisión.

  3. Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio según sea necesario y, a continuación, selecciona Autenticación avanzada con Identity-Aware Proxy (IAP).

  4. Si vas a configurar e implementar un servicio, haz clic en el servicio y, a continuación, selecciona Autenticación avanzada con Identity-Aware Proxy (IAP).

  5. Haz clic en Editar política para crear una política de acceso contextual:

    • Añade uno o varios principales y, opcionalmente, el nivel de acceso que debe cumplir cada principal para acceder a la aplicación.

    • Haz clic en Guardar.

  6. Haz clic en Guardar.

gcloud

Para habilitar IAP directamente desde Cloud Run, añade la marca --iap al desplegar tu aplicación:

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

    Para un servicio nuevo:

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

    Para un servicio ya creado:

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

    Haz los cambios siguientes:

    • 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 del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  2. Para verificar que tu servicio esté configurado con IAP habilitado, ejecuta el siguiente comando:

    gcloud beta run services describe SERVICE_NAME

    El resultado debe contener la siguiente cadena:

    Iap Enabled: true

Ahora, todo el tráfico destinado al servicio de Cloud Run configurado se dirige a IAP para autenticarse antes de pasar al contenedor.

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade la política de gestión de identidades y accesos para conceder el rol Invocador de Cloud Run (roles/run.invoker) al agente de servicio de IAP. Para obtener más información, consulta Gestionar el acceso a recursos protegidos por IAP.

  1. Añade 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
    }
    
  2. Añade lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform.

    resource "google_cloud_run_v2_service" "default" {
      provider = google-beta
      name     = "cloudrun-iap-service"
      location = "europe-west1"
      ingress      = "INGRESS_TRAFFIC_ALL"
      launch_stage = "BETA"
      iap_enabled  = true
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
      }
    }
    

Inhabilitar IAP desde Cloud Run

Puedes inhabilitar IAP mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

Para inhabilitar IAP desde Cloud Run, sigue estos pasos:

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

    Ir a Cloud Run

  2. Haz clic en el servicio que quieras modificar.

  3. Haz clic en Seguridad y, a continuación, desmarca Autenticación avanzada con Identity-Aware Proxy (IAP).

  4. Haz clic en Guardar.

gcloud

Para inhabilitar IAP directamente desde Cloud Run, añade la marca --no-iap al desplegar tu aplicación:

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

    Para un servicio nuevo:

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

    Para un servicio ya creado:

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

    Haz los cambios siguientes:

    • 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 del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato 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 beta run services describe SERVICE_NAME

    El resultado ya no debe contener la siguiente cadena:

    Iap Enabled: true

Ya no enrutarás todo el tráfico destinado al servicio de Cloud Run configurado a IAP para que se autentique antes de pasar al contenedor.

Gestionar el acceso de usuarios o grupos

De forma predeterminada, IAP para Cloud Run usa identidades de la organización con cuentas de Google. Puedes añadir o quitar el acceso a un servicio de Cloud Run mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

Para añadir o quitar el acceso, sigue estos pasos:

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

    Ir a Cloud Run

  2. Haga clic en el servicio que quiera modificar y, a continuación, en Seguridad.

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

  4. Para añadir acceso, introduce la entidad y, opcionalmente, el nivel o los niveles de acceso que quieras añadir.

  5. Para quitar el acceso de un principal, haz clic en el icono Eliminar política situado junto a Niveles de acceso.

  6. Haz clic en Guardar.

gcloud

Para añadir o quitar el acceso a un servicio de Cloud Run a usuarios o grupos concretos de tu organización, ejecuta uno de los siguientes comandos:

  • Para añadir acceso, sigue estos pasos:

    gcloud beta 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 beta 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:

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

Haz los cambios siguientes:

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

Solución de problemas

El error del agente de servicio provoca un error al definir la gestión de identidades y accesos

Si habilitas IAP en un proyecto nuevo por primera vez, puede producirse el siguiente error:

Setting IAM permissions failed

Esto se debe a que el agente de servicio de Cloud Run ha fallado. Para solucionar el problema, vuelve a habilitar IAP o define la política de gestión de identidades y accesos manualmente.

Siguientes pasos