Permite el acceso público (no autenticado)

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

  • Inhabilita la verificación de IAM del invocador de Cloud Run (recomendado).
  • Asigna el rol de IAM de Cloud Run Invoker al tipo de miembro allUsers.

Roles requeridos

Para inhabilitar o volver a habilitar la verificación de IAM 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 de administrador de Cloud Run (roles/run.admin). Consulta los roles de IAM de Cloud Run para ver la lista completa de roles y sus permisos asociados.

Inhabilita la verificación de IAM del invocador de Cloud Run

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

Para inhabilitar la verificación, sigue estos pasos:

Console

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

    Ir a Cloud Run

  2. Haz clic en Crear servicio si estás configurando un servicio nuevo y, luego, completa la página de configuración inicial del servicio según sea necesario.

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

  3. Selecciona Permitir acceso público.

  4. Haz clic en Crear o 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

    Reemplaza SERVICE_NAME por el nombre del servicio.

  • Para un servicio existente, usa el comando gcloud run services update con la marca --no-invoker-iam-check:

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

Reemplaza SERVICE_NAME por el nombre del servicio.

YAML

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza la anotación 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

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

  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Para verificar que la verificación esté inhabilitada después de la implementación, navega al extremo HTTPS del servicio.

Vuelve a habilitar la verificación de IAM del invocador de Cloud Run

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

Console

  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 y, luego, en Seguridad.

  3. Selecciona Require authentication y, luego, Identity and Access Management (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

    Reemplaza SERVICE_NAME por el nombre del servicio.

YAML

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza la anotación 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

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

Para verificar que la verificación se vuelva a habilitar después de la implementación, navega al extremo HTTPS del servicio.

Configura la política de la organización para la verificación de IAM del invocador de Cloud Run

Si eres administrador, puedes restringir la capacidad de inhabilitar la verificación de IAM del invocador con la restricción administrada constraints/run.managed.requireInvokerIam. Esta restricción no se aplica de forma predeterminada.

Asigna el rol de invocador de IAM de Cloud Run al tipo de miembro allUsers.

Puedes permitir el acceso público a un servicio si asignas el rol de Invocador de Cloud Run de IAM 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 se incluye en el rol de administrador de Cloud Run. Consulta los roles de IAM de Cloud Run para ver la lista completa de roles y sus permisos asociados.

Console

Para un servicio existente de Cloud Run, haz lo siguiente:

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

    Ir a la Google Cloud consola

  2. A la izquierda del servicio que deseas hacer público, haz clic en la casilla de verificación. No hagas clic en el servicio.

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

  4. Haz clic en Agregar principal.

En el campo Principales nuevas, ingresa el valor allUsers.

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

  2. Haz clic en Guardar.

  3. Se te pedirá que verifiques que deseas que este recurso sea público. Haz 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 hacer que el servicio esté disponible de forma pública. Para que un servicio sea privado, selecciona Solicitar autenticación.

gcloud

Para que un servicio sea de acceso público, usa el comando gcloud run services para agregar el tipo de miembro especial allUsers a un servicio y otorgarle 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 el servicio sea de acceso público 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 para el SERVICE existente con el siguiente comando:

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

Terraform

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

Agrega 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"
    }
  }
}

Si deseas actualizar la vinculación de IAM del servicio para roles/run.invoker, agrega el siguiente recurso que hace 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 está autorizada para el rol determinado. Se conservan otras vinculaciones de IAM dentro de la política de IAM del servicio.