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
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.
Borra la opción Usar IAM para autenticar las solicitudes entrantes.
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
Para ver y descargar la configuración, ejecuta el siguiente comando:
gcloud run services describe SERVICE --format export > service.yaml
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.
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
Haz clic en el servicio y, luego, en Seguridad.
Selecciona Usar IAM para autenticar las solicitudes entrantes.
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
Para ver y descargar la configuración, ejecuta el siguiente comando:
gcloud run services describe SERVICE --format export > service.yaml
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:
Ve a la Google Cloud consola:
Haz clic en la casilla de verificación a la izquierda del servicio que deseas hacer público. (No hagas clic en el servicio).
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.
Haz clic en Agregar principal.
En el campo Principales nuevas, ingresa el valor allUsers
.
En el menú desplegable Rol, selecciona el rol Invocador de Cloud Run.
Haz clic en Guardar.
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 recursogoogle_cloud_run_v2_service
en la configuración de Terraform: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:
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.