Control de acceso con la gestión de identidades y accesos

En este documento se explica cómo usa Cloud Logging los roles y permisos de Gestión de Identidades y Accesos (IAM) para controlar el acceso a los recursos de Logging. Tus roles de gestión de identidades y accesos determinan si puedes realizar acciones como crear receptores o cubos de registro, leer datos de registro almacenados en un cubo de registro o acceder a páginas como el explorador de registros. Si emites un comando de la API Logging o de la CLI de Google Cloud, tus roles de gestión de identidades y accesos determinarán si tienes permiso para ejecutar el comando.

Información general

Tus roles de gestión de identidades y accesos determinan las acciones que puedes realizar en Logging. Un rol es un conjunto de permisos. Cuando asignas un rol a una entidad, le concedes todos los permisos que contiene el rol. Puedes conceder varios roles al mismo principal.

Los roles de IAM se asignan a un recurso, como un Google Cloud proyecto, una carpeta, un segmento o una organización. Por ejemplo, puedes asignar a una principal el rol Lector de registros (roles/logging.viewer) en un proyecto Google Cloud concreto.

En las secciones Roles predefinidos y Roles de registro de esta página se proporciona información detallada sobre los roles y permisos de registro. En otras secciones de esta página se proporciona información sobre los roles o permisos de casos prácticos específicos.

En el resto de esta sección se resume cómo puedes conceder a una entidad acceso a segmentos de registro o solo a algunas de las entradas de registro de un segmento de registro. También se describe cómo puedes restringir el acceso a algunos campos LogEntry.

Conceder acceso a los contenedores de registro

El rol Visualizador de registros (roles/logging.viewer) permite que una entidad de seguridad acceda a todos los datos de registro almacenados en los segmentos de registro _Required y _Default, excepto a los registros de acceso a datos. Si una entidad necesita acceder a los registros de acceso a los datos, concédele el rol Visualizador de registros privados (roles/logging.privateLogViewer).

En el caso de los segmentos de registro personalizados, puede conceder acceso a la vista _AllLogs o a una vista de registro personalizada. El registro crea automáticamente la vista _AllLogs, que incluye todas las entradas de registro del contenedor de registro. Para conceder acceso a una vista de registro, añade una vinculación de gestión de identidades y accesos a la política de gestión de identidades y accesos asociada a la vista de registro o al proyecto. Para obtener más información, consulta Controlar el acceso a una vista de registro.

Logging también admite etiquetas en los contenedores de registro, lo que puede ayudarte a comprender tus costes. También puedes usar etiquetas para evitar que un usuario elimine un segmento de registro. Para obtener más información, consulta Usar etiquetas para gestionar el acceso a los segmentos de registro.

Conceder acceso a algunas entradas de registro de un segmento de registros

Para conceder a una entidad principal acceso solo a algunas de las entradas de registro almacenadas en un contenedor de registro, cree una vista de registro y, a continuación, conceda a la entidad principal acceso a la vista de registro. Por ejemplo, puede crear una vista de registro en el _Default contenedor de registro que solo incluya entradas de registro cuyo tipo de recurso sea una instancia de Compute Engine. Para obtener más información sobre cómo crear vistas de registro y las diferentes estrategias que puedes usar para conceder acceso a la vista, consulta el artículo Configurar vistas de registro en un segmento de registro.

Restringir el acceso a campos LogEntry específicos

Para restringir el acceso a campos específicos de la estructura de datos LogEntry, configura controles de acceso a nivel de campo en el segmento de registro que almacena tus datos. Por ejemplo, en tu _Default, puedes restringir el jsonPayload de la estructura de datos LogEntry y, a continuación, conceder acceso a ese campo a tus administradores. Para obtener más información, consulte Configurar controles de acceso a nivel de campo.

No puedes restringir los campos de un contenedor de registros que se haya actualizado para usar Analíticas de registros. Del mismo modo, si un contenedor de registros contiene un campo restringido, no podrá actualizarlo para usar Analíticas de registros.

Funciones predefinidas

Gestión de identidades y accesos proporciona roles predefinidos para conceder acceso granular a recursos Google Cloud específicos y evitar el acceso no deseado a otros recursos. Google Cloud crea y mantiene estos roles, y actualiza automáticamente sus permisos según sea necesario, por ejemplo, cuando Logging añade nuevas funciones.

En la siguiente tabla se enumeran los roles predefinidos de Logging. En cada rol, la tabla muestra el título, la descripción, los permisos incluidos y el tipo de recurso de nivel más bajo en el que se pueden conceder los roles. Puedes asignar los roles predefinidos a nivel de proyecto o, en la mayoría de los casos, a cualquier tipo superior en la jerarquía de recursos. Google Cloud Para restringir el rol de acceso de lector de registros a una vista de registros de un contenedor, usa atributos de recursos para las condiciones de gestión de identidades y accesos.

Para obtener una lista de todos los permisos individuales que contiene un rol, consulta Obtener los metadatos del rol.

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.getIamPolicy
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.setIamPolicy
  • logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

En las siguientes secciones se proporciona información adicional para ayudarte a decidir qué roles se aplican a los casos prácticos de tus principales.

Roles de registro

  • Para permitir que un usuario realice todas las acciones en Logging, asígnale el rol Administrador de almacenamiento de registros (roles/logging.admin).

  • Para permitir que un usuario cree y modifique configuraciones de registro, concédele el rol Editor de configuración de registros (roles/logging.configWriter). Este rol te permite crear o modificar cualquiera de los siguientes elementos:

    Este rol no es suficiente para crear métricas basadas en registros ni políticas de alertas basadas en registros. Para obtener información sobre los roles necesarios para llevar a cabo estas tareas, consulta Permisos de las métricas basadas en registros y Permisos de las políticas de alertas basadas en registros.

  • Para permitir que un usuario lea los registros de los segmentos _Required y _Default o que use las páginas Explorador de registros y Analíticas de registros, asigne uno de los siguientes roles:

    • Para acceder a todos los registros del segmento _Required y a la vista _Default del segmento _Default, asigna el rol Lector de registros (roles/logging.viewer).
    • Para acceder a todos los registros de los segmentos _Required y _Default, incluidos los registros de acceso a datos, asigna el rol Visualizador de registros privados (roles/logging.privateLogViewer).
  • Para permitir que un usuario lea los registros de todas las vistas de registro de un proyecto, concédele el rol de gestión de identidades y accesos roles/logging.viewAccessor en el proyecto.

  • Para permitir que un usuario solo lea los registros de una vista de registro específica, tienes dos opciones:

    • Crea una política de gestión de identidades y accesos para la vista de registro y, a continuación, añade un enlace de gestión de identidades y accesos a esa política que conceda al principal acceso a la vista de registro.

    • Concede a la entidad principal el rol de gestión de identidades y accesos roles/logging.viewAccessor en el proyecto que contiene la vista de registro, pero adjunta una condición de gestión de identidades y accesos para restringir la concesión a la vista de registro específica.

    Para obtener información sobre cómo crear vistas de registro y conceder acceso, consulta el artículo Configurar vistas de registro en un segmento de registro.

  • Para dar acceso a un usuario a los campos LogEntry restringidos, si los hay, en un determinado contenedor de registro, asigna el rol Accesor de campos de registro (roles/logging.fieldAccessor). Para obtener más información, consulta Configurar el acceso a nivel de campo.
  • Para permitir que un usuario escriba registros mediante la API Logging, otórgale el rol Escritor de registros (roles/logging.logWriter). Este rol no concede permisos de visualización.

  • Para permitir que la cuenta de servicio de un sumidero envíe registros a un segmento de otro proyecto, asigna a la cuenta de servicio el rol Escritor del segmento de registros (roles/logging.bucketWriter). Google Cloud Para obtener instrucciones sobre cómo conceder permisos a una cuenta de servicio, consulta Definir permisos de destino.

Roles a nivel de proyecto

  • Para dar acceso de lectura a la mayoría de los servicios de Google Cloud , asigna el rol Lector (roles/viewer).

    Este rol incluye todos los permisos que concede el rol Lector de registros (roles/logging.viewer).

  • Para dar acceso de edición a la mayoría de los Google Cloud servicios, asigna el rol Editor (roles/editor).

    Este rol incluye todos los permisos concedidos por el rol Lector de registros (roles/logging.viewer) y los permisos para escribir entradas de registro, eliminar registros y crear métricas basadas en registros. Sin embargo, este rol no permite a los usuarios crear receptores, leer registros de auditoría de acceso a datos que estén en el bucket _Default ni leer registros que estén en buckets de registro definidos por el usuario.

  • Para dar acceso completo a la mayoría de los servicios de Google Cloud , asigna el rol Propietario (roles/owner).

Conceder roles

Para saber cómo asignar un rol a un principal, consulta Conceder, cambiar y revocar el acceso.

Puedes conceder varias funciones a un mismo usuario. Para obtener una lista de los permisos incluidos en un rol, consulta Obtener los metadatos del rol.

Si intentas acceder a un Google Cloud recurso y no tienes los permisos necesarios, ponte en contacto con la entidad de seguridad que aparece como propietario del recurso.

Roles personalizados

Para crear un rol personalizado con permisos de registro, sigue estos pasos:

Para obtener más información sobre los roles personalizados, consulta el artículo Conocer los roles personalizados de gestión de identidades y accesos.

Permisos de Cloud Logging

En la siguiente tabla se muestra una lista parcial de los permisos necesarios para usar funciones específicas de Cloud Logging. Esta tabla puede ayudarte a identificar los permisos que necesitas para usar páginas como el explorador de registros.

En la tabla, a.b.{x,y} significa a.b.x y a.b.y.

Actividad de la consola Permisos obligatorios
Acceso mínimo de solo lectura logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Ver registros de auditoría de acceso a datos logging.privateLogEntries.list
Ver métricas basadas en registros logging.logMetrics.{list, get}
Ver sumideros logging.sinks.{list, get}
Ver el uso de los registros logging.usage.get
Descargar registros logging.logEntries.{list, download}

Solo se necesita uno de estos permisos para descargar los registros. Los roles que contienen los permisos para descargar registros deben concederse a nivel de proyecto. No puedes descargar registros si se concede un rol que contenga estos permisos en el archivo de política de gestión de identidades y accesos de una vista de registro.

Mostrar y ver ámbitos de registro logging.logScopes.{get, list}
Ver el ámbito de registro predeterminado observability.scopes.get
Excluir registros logging.exclusions.{list, create, get, update, delete}

Cuando crees un rol personalizado que incluya permisos para gestionar filtros de exclusión, añade los permisos logging.sinks.* al rol en lugar de añadir los permisos logging.exclusions.*.

Crear y usar receptores logging.sinks.{list, create, get, update, delete}

Cuando creas un receptor, también debes asignar a la cuenta de servicio un rol de gestión de identidades y accesos que le permita escribir entradas de registro en el destino. Para obtener más información, consulta Definir permisos de destino.

Una vez que las entradas de registro se hayan enrutado a un destino admitido, el acceso a ellas se controlará por completo mediante los permisos y roles de gestión de identidades y accesos del destino.

Crear alertas basadas en registros Consulta los roles necesarios para crear y usar políticas de alertas basadas en registros.
Crear métricas basadas en registros logging.logMetrics.{list, create, get, update, delete}

Para obtener información sobre otros roles de IAM que necesitas crear y usar métricas basadas en registros, consulta Roles necesarios para crear y usar métricas basadas en registros.

Guardar y usar consultas privadas logging.queries.usePrivate
logging.queries.{listShared,getShared}
Guardar y usar consultas compartidas logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Usar consultas recientes logging.queries.{create, list}
Crear y gestionar ámbitos de registro logging.logScopes.{create, delete, get, list, update}
Definir y gestionar el ámbito de registro predeterminado observability.scopes.{get, update}
Crear y gestionar vistas de analíticas observability.analyticsViews.{create, delete, get, list, update}

Permisos para la línea de comandos

Los comandos de gcloud logging se controlan mediante permisos de gestión de identidades y accesos.

Para usar cualquiera de los comandos gcloud logging, las entidades deben tener el permiso serviceusage.services.use.

Un principal también debe tener el rol de gestión de identidades y accesos que corresponda al recurso del registro y al caso práctico. Para obtener más información, consulta los permisos de la interfaz de línea de comandos.

Roles necesarios para crear y usar métricas basadas en registros

A continuación, se incluye un resumen de los roles y permisos habituales que necesita una entidad para acceder a las métricas basadas en registros:

  • El rol Editor de configuración de registros (roles/logging.configWriter) permite a los principales enumerar, crear, obtener, actualizar y eliminar métricas basadas en registros.

  • El rol Lector de registros (roles/logging.viewer) incluye permisos para ver las métricas. En concreto, una entidad necesita los permisos logging.logMetrics.get y logging.logMetrics.list para ver las métricas.

  • El rol Lector de Monitoring (roles/monitoring.viewer) contiene los permisos para leer datos de TimeSeries. En concreto, una entidad necesita el permiso monitoring.timeSeries.list para leer datos de series temporales.

  • Los roles Administrador de Logging (roles/logging.admin), Editor de proyectos (roles/editor) y Propietario del proyecto (roles/owner) tienen los permisos necesarios para crear métricas basadas en registros. En concreto, un principal necesita el permiso logging.logMetrics.create para crear métricas basadas en registros.

Roles necesarios para crear y usar políticas de alertas basadas en registros

Para crear y gestionar políticas de alertas basadas en registros, una entidad de seguridad necesita los siguientes roles y permisos de Logging y Monitoring:

Si creas la política de alertas en la CLI de Google Cloud, también se requiere el siguiente rol o permiso:

  • Para obtener el permiso que necesitas para crear una política de alertas con la CLI de Google Cloud, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Consumidor de uso de servicio (roles/serviceusage.serviceUsageConsumer) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

    Este rol predefinido contiene el permiso serviceusage.services.use , que es necesario para crear una política de alertas mediante la CLI de Google Cloud.

    También puedes obtener este permiso con roles personalizados u otros roles predefinidos.

Si tu Google Cloud proyecto ya tiene canales de notificaciones, puedes configurar tu política de alertas para que use un canal que ya tengas sin necesidad de añadir roles ni permisos. Sin embargo, si necesitas crear un canal de notificaciones para tu política de alertas basada en registros, se requiere el siguiente rol o permiso:

  • Para obtener el permiso que necesitas para crear un canal de notificaciones para una política de alertas basada en registros, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de NotificationChannel de Monitoring (roles/monitoring.notificationChannelEditor) en tu proyecto.

    Este rol predefinido contiene el permiso monitoring.notificationChannels.create , que es necesario para crear un canal de notificaciones de una política de alertas basada en registros.

Permisos de las políticas de alertas basadas en SQL

Las políticas de alertas basadas en SQL evalúan los resultados de una consulta de SQL ejecutada en datos de grupos de entradas de registro. Para obtener información sobre los roles necesarios para crear y gestionar políticas de alertas basadas en SQL, consulta la sección Antes de empezar del artículo Monitorizar los resultados de consultas SQL con una política de alertas.

Permisos de acceso de registro

Los permisos de acceso son el método antiguo de especificar los permisos de las cuentas de servicio de tus instancias de VM de Compute Engine.

Los siguientes permisos de acceso se aplican a la API Logging:

Permiso de acceso Permisos concedidos
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Acceso completo a la API Logging.
https://www.googleapis.com/auth/cloud-platform Acceso completo a la API Logging y a todas las demás APIs habilitadas. Google Cloud

Para obtener información sobre cómo usar este método antiguo para definir los niveles de acceso de tus cuentas de servicio, consulta Ámbitos de acceso.