Control de acceso con IAM

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

De forma predeterminada, solo los propietarios y editores de proyectos pueden crear, actualizar, borrar o invocar servicios, y solo los propietarios de proyectos y los administradores de Cloud Run pueden modificar las políticas de administración de identidades y accesos (IAM), por ejemplo, un servicio público. Obtén más información sobre las funciones de IAM de Cloud Run.

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

Controla el acceso en un servicio individual

Si deseas controlar el acceso según el servicio, puedes usar IAM por servicio.

Haz público un servicio

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 Google Cloud Console:

    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 cuadro de texto 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

Puedes hacer que un servicio sea accesible de forma pública mediante el agregado del tipo de miembro especial allUsers a un servicio y mediante el otorgamiento de la función roles/run.invoker:

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

Además, cuando implementas el servicio con el comando gcloud run deploy, puedes especificar que el servicio sea de acceso público si lo deseas:

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

Terraform

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

resource "google_cloud_run_service" "default" {
  name     = "cloud-run-srv"
  location = "us-central1"

  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

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_service.default.location
  service  = google_cloud_run_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. Google recomienda que crees todos los proyectos en una carpeta que no esté sujeta a esta restricción y que la quites en los proyectos existentes mediante el restablecimiento de la restricción predeterminada en el proyecto.

Agregar principales

IU de Console

  1. Ve a Google Cloud Console:

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

Quitar principales de un rol

IU de Console

  1. Ve a Google Cloud Console:

    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.

Agrega o quita principales de principales

IU de Console

  1. Ve a Google Cloud Console:

    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.

Ver principales

IU de Console

  1. Ve a Google Cloud Console:

    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

Controla el acceso en todos los servicios de un proyecto

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

IU de Console

  1. Ve a Google Cloud Console:

    Ir a Google Cloud Console

  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.

Próximos pasos

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