Permitir el acceso público (sin autenticar)

Hay dos formas de crear un servicio público de Cloud Run:

  • Inhabilita la comprobación de gestión de identidades y accesos del invocador de Cloud Run (recomendado).
  • Asigna el rol de gestión de identidades y accesos Invocador de Cloud Run al tipo de miembro allUsers.

Roles obligatorios

Para inhabilitar o volver a habilitar la comprobación de gestión de identidades y accesos de invocador en un servicio, debes tener los siguientes permisos:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Estos permisos se incluyen en el rol Administrador de Cloud Run (roles/run.admin). Consulta la lista completa de roles de gestión de identidades y accesos de Cloud Run y sus permisos asociados.

Inhabilitar la comprobación de gestión de identidades y accesos de Cloud Run Invoker

La forma recomendada de crear un servicio público es inhabilitar la comprobación de gestión de identidades y accesos del invocador de Cloud Run. Cloud Run aplica esta comprobación de forma predeterminada. Usa esta solución cuando el proyecto esté sujeto a la restricción de uso compartido restringido al dominio en una política de organización.

Para inhabilitar la comprobación, sigue estos pasos:

Consola

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

    Ir a Cloud Run

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo y, a continuación, rellene la página de configuración inicial del servicio según sea necesario.

    Si va a configurar un servicio que ya está disponible, haga clic en él y, a continuación, en la pestaña Seguridad.

  3. Selecciona Permitir el acceso público.

  4. Haz clic en Crear o en Guardar.

gcloud

  • Para un servicio nuevo, usa el comando gcloud run deploy con la marca --no-invoker-iam-check:

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    Sustituye SERVICE_NAME por el nombre del servicio.

  • En el caso de un servicio ya creado, usa el comando gcloud run services update con la marca --no-invoker-iam-check:

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

Sustituye SERVICE_NAME por el nombre del servicio.

YAML

  1. Para ver y descargar la configuración, sigue estos pasos:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza la anotación de run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        annotations:
          run.googleapis.com/invoker-iam-disabled: true
        name: SERVICE_NAME

    Sustituye SERVICE_NAME por el nombre de tu servicio de Cloud Run.

  3. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml

Verifica que la comprobación esté inhabilitada después de la implementación. Para ello, ve al endpoint HTTPS del servicio.

Volver a habilitar la comprobación de IAM de invocador de Cloud Run

Para volver a habilitar la comprobación, sigue estos pasos:

Consola

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

    Ir a Cloud Run

  2. Haz clic en el servicio y, a continuación, en Seguridad.

  3. Selecciona Pedir autenticación y, a continuación, Gestión de Identidades y Accesos (IAM).

  4. Haz clic en Guardar.

gcloud

  • Actualiza el servicio pasando la marca --invoker-iam-check:

    gcloud run services update SERVICE_NAME --invoker-iam-check

    Sustituye SERVICE_NAME por el nombre del servicio.

YAML

  1. Para ver y descargar la configuración, sigue estos pasos:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza la anotación de run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invoker-iam-disabled: false
        name: SERVICE_NAME

    Sustituye SERVICE_NAME por el nombre de tu servicio de Cloud Run.

Verifica que la comprobación se vuelve a habilitar después de la implementación. Para ello, ve al endpoint HTTPS del servicio.

Configurar la política de la organización para la comprobación de gestión de identidades y accesos del invocador de Cloud Run

Si eres administrador, puedes restringir la capacidad de inhabilitar la comprobación de gestión de identidades y accesos de Invoker mediante la restricción gestionada constraints/run.managed.requireInvokerIam. Esta restricción no se aplica de forma predeterminada.

Asigna el rol de invocador de Cloud Run de gestión de identidades y accesos al tipo de miembro allUsers

Puedes permitir el acceso público a un servicio asignando el rol de gestión de identidades y accesos Invocador de Cloud Run al tipo de miembro allUsers.

Debes tener el permiso run.services.setIamPolicy para configurar la autenticación en un servicio de Cloud Run. Este permiso está incluido en el rol Administrador de Cloud Run. Consulta la lista completa de roles de gestión de identidades y accesos de Cloud Run y sus permisos asociados.

Consola

En un servicio de Cloud Run ya creado, sigue estos pasos:

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

    Ir a la Google Cloud consola

  2. A la izquierda del servicio que quieras hacer público, marca la casilla. No hagas clic en el servicio en sí.

  3. En el panel de información de la esquina superior derecha, haga clic en la pestaña Permisos. Si el panel de información no está visible, es posible que tengas que hacer clic en Mostrar panel de información y, a continuación, en Permisos.

  4. Haz clic en Añadir principal.

En el campo New principals (Nuevos principales), introduce el valor allUsers.

  1. En el menú Seleccionar un rol, elige el rol Invocador de Cloud Run.

  2. Haz clic en Guardar.

  3. Se te pedirá que verifiques que quieres hacer público este recurso. Haga clic en Permitir acceso público para aplicar el cambio a la configuración de IAM del servicio.

En el caso de un servicio nuevo que estés creando, crea el servicio y selecciona Permitir acceso público en la sección Autenticación para que el servicio esté disponible públicamente. Para que un servicio sea privado, selecciona Requerir autenticación.

gcloud

Para que un servicio sea accesible públicamente, usa el comando gcloud run services para añadir el tipo de miembro especial allUsers a un servicio y asignarle el rol roles/run.invoker:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

Ejecuta el comando gcloud run deploy para que tu servicio sea accesible públicamente cuando lo implementes:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Crea un archivo llamado policy.yaml con el siguiente contenido:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Permite el acceso público a la SERVICE actual mediante lo siguiente:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

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

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" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Para actualizar el enlace de gestión de identidades y accesos del servicio de roles/run.invoker, añade el siguiente recurso que haga referencia a tu servicio de Cloud Run:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Esta vinculación solo es autoritativa para el rol indicado. Se conservan otras vinculaciones de gestión de identidades y accesos en la política de gestión de identidades y accesos del servicio.