Control de acceso con IAM

De forma predeterminada, solo los propietarios y editores de proyectos pueden crear, actualizar, borrar o invocar servicios y trabajos, y solo los propietarios de proyectos y los administradores de Cloud Run pueden modificar las políticas de Identity and Access Management (IAM), por ejemplo, para hacer que un servicio sea público. Consulta los roles de IAM de Cloud Run para obtener más información.

Para otorgar a otros grupos o principales la capacidad de realizar estas acciones, utiliza IAM para otorgar roles a diferentes principales.

Roles predefinidos de Cloud Run

En comparación con los roles básicos (propietario, editor y visualizador), los siguientes roles predefinidos tienen un control de acceso más detallado para acceder a los recursos de Cloud Run:

Rol Descripción
Administrador de Cloud Run (roles/run.admin) Puede crear, actualizar y borrar servicios y trabajos, y obtener, enumerar y borrar ejecuciones de trabajos.
Puede invocar servicios y trabajos, y puede cancelar ejecuciones de trabajos.
Puede obtener y establecer políticas de IAM.
Puede ver, aplicar y descartar recomendaciones.
Requiere una configuración adicional para implementar servicios.
Desarrollador de Cloud Run (roles/run.developer) Puede crear, actualizar y borrar servicios y trabajos, y obtener, enumerar y borrar ejecuciones de trabajos.
Puede obtener, pero no establecer políticas de IAM.
Puede ver, aplicar y descartar recomendaciones.
Visualizador de Cloud Run (roles/run.viewer) Puede ver servicios, trabajos y ejecuciones de trabajos.
Puede obtener políticas de IAM.
Puede ver recomendaciones.
Invocador de Cloud Run (roles/run.invoker) Puede invocar servicios y trabajos, y cancelar las ejecuciones de trabajos.

Controla el acceso en un servicio o trabajo individual

Puedes controlar el acceso por servicio o por trabajo mediante IAM.

Haz público un servicio

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

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 consola de Google Cloud:

    Ir a la consola de Google Cloud

  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

Para crear un servicio de Cloud Run, agrega lo siguiente al archivo main.tf existente:

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.

Uso compartido restringido al dominio

Si el proyecto está sujeto a la política de la organización de uso compartido de dominio restringido, no podrás crear servicios públicos de forma predeterminada. Puedes usar etiquetas y una política condicional para eximir a servicios específicos de esta restricción. Para obtener más información, consulta la entrada de blog sobre cómo crear servicios públicos de Cloud Run cuando se aplique el uso compartido restringido del dominio.

Agregar principales

Puedes agregar principales a un trabajo o un servicio.

Agrega principales a un servicio

Para agregar principales a un servicio, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación junto al servicio al que deseas agregar las principales. (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.

  5. En el campo Principales nuevas, ingresa una o más identidades que necesiten acceder al servicio.

  6. En el menú desplegable Rol, selecciona un rol o roles. Los roles que selecciones aparecerán en el panel con una descripción breve del permiso que otorgan.

  7. Haz clic en Guardar.

gcloud

Usa el comando gcloud run services add-iam-policy-binding:

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

En el ejemplo anterior, se ilustra lo siguiente: SERVICE_NAME es el nombre del servicio, MEMBER_TYPE es el tipo de principal (p. ej., user:email@domain.com) y ROLE es el rol.

A fin de obtener una lista de valores aceptables para MEMBER_TYPE, consulta la página de conceptos de IAM. Para obtener una lista de valores aceptables para ROLE, consulta Funciones de IAM de Cloud Run.

Agrega principales a un trabajo

Para agregar principales a un trabajo, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del trabajo al que deseas agregar las principales. (No hagas clic en el trabajo).

  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.

  5. En el cuadro de texto Principales nuevas, ingresa una o más identidades que necesiten acceder al servicio.

  6. En el menú desplegable Rol, selecciona un rol o roles. Los roles que selecciones aparecerán en el panel con una descripción breve del permiso que otorgan.

  7. Haz clic en Guardar.

gcloud

Usa el comando gcloud run jobs add-iam-policy-binding:

gcloud run jobs add-iam-policy-binding JOB_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

En el ejemplo anterior, JOB_NAME es el nombre del trabajo, MEMBER_TYPE es el tipo de principal (p. ej., user:email@domain.com) y ROLE es el rol.

A fin de obtener una lista de valores aceptables para MEMBER_TYPE, consulta la página de conceptos de IAM. Para obtener una lista de valores aceptables para ROLE, consulta Funciones de IAM de Cloud Run.

Quitar principales de un rol

Puedes quitar principales de un servicio o de un trabajo.

Quita principales de un rol para un servicio

Si deseas quitar principales de un rol para un servicio, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del servicio del que deseas quitar principales. (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. Ingresa la principal que deseas quitar en el filtro de la lista de roles, que muestra todos los roles otorgados a esa principal.

  5. Para quitar un rol de la principal, haz clic en la papelera de borrado que aparece junto a la principal en el rol que deseas quitar.

  6. En el cuadro de diálogo de confirmación, tienes la opción de quitar esa principal de todos los roles del servicio. Haz clic en Quitar para quitar la principal del rol.

gcloud

Usa el comando gcloud run services remove-iam-policy-binding:

  gcloud run services remove-iam-policy-binding SERVICE_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

En el ejemplo anterior, se ilustra lo siguiente: SERVICE_NAME es el nombre del servicio, MEMBER_TYPE es el tipo de principal (p. ej., user:email@domain.com) y ROLE es el rol.

A fin de obtener una lista de valores aceptables para MEMBER_TYPE, consulta la página de conceptos de IAM. Para obtener una lista de valores aceptables para ROLE, consulta Funciones de IAM de Cloud Run.

Quita principales de un rol para un trabajo

Si deseas quitar principales de un rol para un trabajo, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del trabajo al que deseas agregar las principales. (No hagas clic en el trabajo).

  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. Ingresa la principal que deseas quitar en el filtro de la lista de roles, que muestra todos los roles otorgados a esa principal.

  5. Para quitar un rol de la principal, haz clic en la papelera de borrado que aparece junto a la principal en el rol que deseas quitar.

  6. En el cuadro de diálogo de confirmación, tienes la opción de quitar esa principal de todos los roles del trabajo. Haz clic en Quitar para quitar la principal del rol.

gcloud

Usa el comando gcloud run jobs remove-iam-policy-binding:

  gcloud run jobs remove-iam-policy-binding JOB_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

En el ejemplo anterior, JOB_NAME es el nombre del trabajo, MEMBER_TYPE es el tipo de principal (p. ej., user:email@domain.com) y ROLE es el rol.

A fin de obtener una lista de valores aceptables para MEMBER_TYPE, consulta la página de conceptos de IAM. Para obtener una lista de valores aceptables para ROLE, consulta Funciones de IAM de Cloud Run.

Agrega o quita principales de principales

Puedes agregar o quitar de forma masiva servicios y trabajos.

Agrega y quita principales de forma masiva para servicios

Si deseas agregar o quitar de forma masiva para servicio, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del servicio al que deseas agregar o quitar principales. (No hagas clic en el servicio).

  3. Selecciona el servicio en el que deseas agregar o quitar principales.

  4. 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.

Si deseas agregar principales, haz lo siguiente:

  1. Haz clic en Agregar principal.

  2. En el cuadro de texto Principales nuevas, ingresa una o más identidades que necesiten acceder al servicio.

  3. En el menú desplegable Rol, selecciona un rol (o roles). Los roles que selecciones aparecerán en el panel con una descripción breve del permiso que otorgan.

  4. Haz clic en Guardar.

Si deseas quitar las principales, sigue estos pasos:

  1. Ingresa la principal que deseas quitar en el filtro de la lista de roles, que muestra todos los roles otorgados a esa principal.

  2. Para quitar un rol de la principal, haz clic en la papelera de borrado que aparece junto a la principal en el rol que deseas quitar.

  3. En el cuadro de diálogo de confirmación, tienes la opción de quitar esa principal de todos los roles del servicio. Haz clic en Quitar para quitar la principal del rol.

gcloud

Crea una política de IAM como en el ejemplo:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

Usa el comando gcloud run services set-iam-policy:

gcloud run services set-iam-policy SERVICE_NAME policy.json

Para obtener una lista de valores aceptables para MEMBER_TYPE, consulta la página de conceptos de IAM. Para obtener una lista de valores aceptables para ROLE, consulta Funciones de IAM de Cloud Run.

Agrega y quita principales de forma masiva para trabajos

Si deseas agregar o quitar de forma masiva para un trabajo, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del trabajo al que deseas agregar las principales. (No hagas clic en el trabajo).

  3. Selecciona el trabajo en el que deseas agregar o quitar principales.

  4. 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.

Si deseas agregar principales, haz lo siguiente:

  1. Haz clic en Agregar principal.

  2. En el cuadro de texto Principales nuevas, ingresa una o más identidades que necesiten acceder al servicio.

  3. En el menú desplegable Rol, selecciona un rol (o roles). Los roles que selecciones aparecerán en el panel con una descripción breve del permiso que otorgan.

  4. Haz clic en Guardar.

Si deseas quitar las principales, sigue estos pasos:

  1. Ingresa la principal que deseas quitar en el filtro de la lista de roles, que muestra todos los roles otorgados a esa principal.

  2. Para quitar un rol de la principal, haz clic en la papelera de borrado que aparece junto a la principal en el rol que deseas quitar.

  3. En el cuadro de diálogo de confirmación, tienes la opción de quitar esa principal de todos los roles del trabajo. Haz clic en Quitar para quitar la principal del rol.

gcloud

Crea una política de IAM como en el ejemplo:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

Usa el comando gcloud run jobs set-iam-policy:

gcloud run jobs set-iam-policy JOB_NAME policy.json

Para obtener una lista de valores aceptables para MEMBER_TYPE, consulta la página de conceptos de IAM. Para obtener una lista de valores aceptables para ROLE, consulta Funciones de IAM de Cloud Run.

Ver principales

Puedes ver las principales de los servicios y trabajos.

Visualiza las principales de un servicio

Para ver las principales de un servicio, sigue estos pasos:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del servicio cuyos roles y principales deseas ver. (No hagas clic en el servicio).

  3. Selecciona el servicio cuyos roles y principales deseas ver.

  4. 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.

  5. Se mostrará la lista de roles y principales, agrupados por rol otorgado.

gcloud

Usa el comando gcloud run services get-iam-policy:

gcloud run services get-iam-policy SERVICE_NAME

Visualiza las principales de un trabajo

Para ver las principales de un trabajo, haz lo siguiente:

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación a la izquierda del trabajo al que deseas agregar las principales. (No hagas clic en el trabajo).

  3. Selecciona el trabajo cuyos roles y principales deseas ver.

  4. 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.

  5. Se mostrará la lista de roles y principales, agrupados por rol otorgado.

gcloud

Usa el comando gcloud run jobs get-iam-policy:

gcloud run jobs get-iam-policy JOB_NAME

Controla el acceso en todos los servicios y trabajos de un proyecto

Si deseas otorgar roles a las principales en todos los servicios y trabajos de un proyecto, puedes usar IAM a nivel de proyecto.

IU de Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Busca la principal a la que deseas otorgar un rol en todo el proyecto.

  3. Haz clic en el lápiz de edición en el lado derecho de la fila de la principal.

  4. Haz clic en Agregar otra función y elige la función deseada.

  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=MEMBER_TYPE \
  --role=ROLE

En el ejemplo anterior, se ilustra lo siguiente: MEMBER_TYPE es el tipo de principal (p. ej., user:email@domain.com) y ROLE es el rol (p. ej. roles/run.admin).

Los tipos de principal allUsers y allAuthenticatedUsers no se pueden aplicar a nivel de proyecto y, en su lugar, se deben agregar a cada servicio de forma individual.

Inhabilita el invocador de Cloud Run para los servicios

Puedes inhabilitar o volver a habilitar la verificación de IAM del invocador de Cloud Run para cualquier servicio de Cloud Run. La verificación se aplica de forma predeterminada.

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 para ver la lista completa de funciones y los permisos asociados.

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

  1. Anula la restricción de la política de la organización constraints/run.requireInvokerIam a nivel de la organización o del proyecto según sea necesario. Puedes usar etiquetas para establecer reglas más detalladas para servicios específicos de Cloud Run.

    Para quitar la restricción de política de la consola de Google Cloud, haz lo siguiente:

    1. Ir a IAM

    2. Haz clic en la pestaña Políticas de la organización.

    3. Busca la política Permitir que IAM del invocador esté inhabilitada (Cloud Run) y selecciona Editar política en el menú Acciones.

    4. Asegúrate de que la política esté configurada como No aplicada.

    5. Haz clic en Establecer política.

  2. Inhabilita la verificación:

    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. Anula la opción Usar Cloud IAM para autenticar las solicitudes entrantes.

    4. Haz clic en Crear o Guardar.

    gcloud

    • Usa la marca --no-invoker-iam-check:

      gcloud run deploy 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 Cloud IAM para autenticar las solicitudes entrantes.

  4. Haz clic en Guardar.

gcloud

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

    gcloud beta run services 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/invokerIamCheckDisabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invokerIamCheckDisabled: 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.

Próximos pasos

Aprende a autenticar desarrolladores, servicios y usuarios de forma segura en los servicios que acabas de proteger.