Permite el acceso público (no autenticado)

Esta opción es para un servicio de Cloud Run que es una API pública o un sitio web.

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

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

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 de IAM del invocador de Cloud Run. La verificación se aplica de forma predeterminada. Esta es la solución, en particular, si el proyecto está sujeto a la política de la organización de uso compartido de dominio restringido.

Para inhabilitar o volver a habilitar la verificación de IAM del llamador en un servicio, debes tener los siguientes permisos:

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

Estos permisos se incluyen en los roles de Propietario y Administrador de Cloud Run. Consulta [Roles de IAM de Cloud Run][1] para ver la lista completa de roles y los permisos asociados.

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

Para inhabilitar la verificación, sigue estos pasos:

Console

  1. Ir a Cloud Run

  2. Haz clic en Crear servicio si quieres configurar 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 Seguridad.

  3. Borra la opción Usar IAM para autenticar las solicitudes entrantes.

  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

    donde SERVICE_NAME es 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

    donde SERVICE_NAME es 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

    En el ejemplo anterior, SERVICE_NAME es 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

Navega al extremo HTTPS del servicio para verificar que la verificación esté inhabilitada después de la implementación.

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. Ir a Cloud Run

  2. Haz clic en el servicio y, luego, en Seguridad.

  3. Selecciona Usar IAM para autenticar las solicitudes entrantes.

  4. Haz clic en Guardar.

gcloud

  • Para actualizar el servicio, pasa la marca --invoker-iam-check:

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

    donde SERVICE_NAME es 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

    En el ejemplo anterior, SERVICE_NAME es el nombre de tu servicio de Cloud Run.

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

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 llamador 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 invocaciones no autenticadas a un servicio si asignas el rol de IAM de 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 se incluye en los roles de Propietario y Administrador de Cloud Run. Consulta Roles de IAM de Cloud Run para ver la lista completa de funciones y los permisos asociados.

IU de Console

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

  1. Ve a la Google Cloud consola:

    Ve a Google Cloud Console.

  2. Haz clic en la casilla de verificación a la izquierda del servicio que deseas hacer público. (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, puede 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ú desplegable Rol, selecciona 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, pero asegúrate de seleccionar Permitir invocaciones no autenticadas en la pestaña Autenticación para hacer que el servicio esté disponible de forma pública. Si seleccionas Solicitar autenticación, el servicio será privado.

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 las invocaciones no autenticadas para el SERVICE existente mediante 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 la 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 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.