Control de acceso con la IAM

Cloud Logging usa roles y permisos de Identity and Access Management (IAM) para permitirte controlar quién puede ver, escribir y administrar los recursos de Logging. Tus roles de IAM determinan si puedes crear receptores o buckets de registros, leer datos de registros almacenados en un bucket de registros o acceder a páginas como el Explorador de registros. Cuando emites un comando de la API de Cloud Logging o de Google Cloud CLI, tus roles de IAM también determinan si tienes permiso para ejecutar el comando.

Descripción general

Tus roles de IAM determinan las acciones que puedes realizar en Logging. Un rol es un conjunto de permisos. Cuando otorgas un rol a una principal, le otorgas todos los permisos que el rol contiene. Puedes otorgar varios roles a la misma principal.

Los roles de IAM se otorgan en un recurso, como un proyecto, una carpeta, un bucket o una organización de Google Cloud . Por ejemplo, puedes otorgar a una principal el rol de Visualizador de registros (roles/logging.viewer) en un proyecto de Google Cloud en particular.

En las secciones Roles predefinidos y Roles de Logging de esta página, se proporciona información completa sobre los roles y los permisos de Logging. En otras secciones de esta página, se proporciona información sobre los roles o los permisos para casos de uso específicos.

En el resto de esta sección, se resume cómo puedes otorgar acceso a una principal a los buckets de registros o solo a algunas de las entradas de registro en un bucket de registros. También se describe cómo puedes restringir el acceso a algunos campos de LogEntry.

Otorga acceso a los buckets de registros

El rol de visualizador de registros (roles/logging.viewer) permite que una principal acceda a todos los datos de registro almacenados en los buckets de registros _Required y _Default, excepto los registros de acceso a los datos. Si un principal necesita acceso a los registros de acceso a los datos, otórgale el rol de Visualizador de registros privados (roles/logging.privateLogViewer).

En el caso de los buckets de registros personalizados, puedes otorgar acceso a la vista _AllLogs o a una vista de registro personalizada. Logging crea automáticamente la vista _AllLogs, que incluye todas las entradas de registro en el bucket de registros. Para otorgar acceso a una vista de registro, agrega una vinculación de IAM a la política de IAM adjunta a la vista de registro o al proyecto. Para obtener más información, consulta Controla el acceso a una vista de registros.

Logging también admite etiquetas en los buckets de registros, lo que puede ayudarte a comprender tus costos. También puedes usar etiquetas para evitar que un usuario borre un bucket de registros. Para obtener más información, consulta Usa etiquetas para administrar el acceso a los buckets de registros.

Otorga acceso a algunas entradas de registro en un bucket de registros

Para otorgar a una principal acceso solo a algunas de las entradas de registro almacenadas en un bucket de registros, crea una vista de registro y, luego, otorga a la principal acceso a la vista de registro. Por ejemplo, puedes crear una vista de registro en el bucket de registros _Default 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 registros y las diferentes estrategias que puedes usar para otorgar acceso a la vista, consulta Configura vistas de registros en un bucket de registros.

Restringe el acceso a campos específicos de LogEntry

Para restringir el acceso a campos específicos en la estructura de datos LogEntry, configura controles de acceso a nivel de campo en el bucket de registros que almacena tus datos. Por ejemplo, para tu bucket de registros _Default, puedes colocar una restricción en el jsonPayload de la estructura de datos LogEntry y, luego, otorgarles a tus administradores acceso a ese campo. Para obtener más información, consulta Configura controles de acceso a nivel de campo.

No puedes restringir los campos de un bucket de registros que se actualizó para usar Estadísticas de observabilidad. Del mismo modo, si un bucket de registros contiene un campo restringido, no puedes actualizarlo para usar Estadísticas de observabilidad.

Roles predefinidos

IAM proporciona roles predefinidos para otorgar acceso detallado a recursos específicos de Google Cloud 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, como cuando Logging agrega funciones nuevas.

En la siguiente tabla, se enumeran los roles predefinidos de Logging. Para cada rol, en la tabla se 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 otorgar los roles. Puedes otorgar los roles predefinidos a nivel de proyecto de Google Cloud o, en la mayoría de los casos, cualquier tipo superior en la jerarquía de recursos. Para restringir el rol de Descriptor de acceso de la vista de registros a una vista de registros en un bucket, usa los atributos de recursos para las condiciones de IAM.

Para obtener una lista de todos los permisos individuales que contiene un rol, consulta Obtén 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:

  • View

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

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(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:

  • View

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

  • View

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(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

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

Funciones de Logging

  • Para permitir que un usuario realice todas las acciones en Logging, otórgale el rol de Administrador de Logging (roles/logging.admin).

  • Para permitir que un usuario cree y modifique parámetros de configuración de registros, otórgale el rol de Escritor 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 estas tareas, consulta Permisos para las métricas basadas en registros y Permisos para las políticas de alertas basadas en registros.

  • Para permitir que un usuario lea los registros en los buckets _Required y _Default o use las páginas del Explorador de registros y de Estadísticas de observabilidad, otórgale uno de los siguientes roles:

    • Para acceder a todos los registros del bucket _Required y a la vista _Default del bucket _Default, otorga el rol de Visualizador de registros (roles/logging.viewer).
    • Para acceder a todos los registros de los buckets _Required y _Default, incluidos los registros de acceso a los datos, otorga el rol de Visualizador de registros privados (roles/logging.privateLogViewer).
  • Para permitir que un usuario lea los registros en todas las vistas de registro que se encuentran en un proyecto, otórgale el rol de IAM de roles/logging.viewAccessor en el proyecto.

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

    • Crea una política de IAM para la vista de registro y, luego, agrega una vinculación de IAM a esa política que otorgue a la principal acceso a la vista de registro.

    • Otorga a la principal el rol de IAM de roles/logging.viewAccessor en el proyecto que contiene la vista de registro, pero adjunta una condición de IAM para restringir el otorgamiento a la vista de registro específica.

    Para obtener información sobre cómo crear vistas de registros y otorgar acceso, consulta Configura vistas de registros en un bucket de registros.

  • Para otorgar a un usuario acceso a los campos restringidos de LogEntry, si los hay, en un bucket de registros determinado, otórgale el rol de Descriptor de acceso de campos de registros (roles/logging.fieldAccessor). Para obtener más información, consulta Configura el acceso a nivel de campo.
  • Para permitir que un usuario escriba registros con la API de Logging, otórgale el rol de escritor de registros (roles/logging.logWriter). Este rol no otorga permisos de visualización.

  • Para permitir que la cuenta de servicio de un receptor enrute registros a un bucket en un proyecto de Google Cloud distinto, otorga a la cuenta de servicio el rol de Escritor de buckets de registros (roles/logging.bucketWriter). Para obtener instrucciones sobre cómo otorgar permisos a una cuenta de servicio, consulta Establece permisos de destino.

Roles a nivel de proyecto

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

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

  • Para otorgar acceso de editor a la mayoría de los servicios de Google Cloud , asigna el rol de editor (roles/editor).

    Este rol incluye todos los permisos otorgados por el rol Visualizador de registros (roles/logging.viewer) y los permisos para escribir entradas de registro, borrar registros y crear métricas basadas en registros. Sin embargo, este rol no permite que los usuarios creen receptores, lean registros de auditoría de acceso a los datos que se encuentran en el bucket _Default ni lean registros que se encuentran en buckets de registros definidos por el usuario.

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

Otorgando funciones

Para obtener información sobre cómo otorgar un rol a una principal, consulta Otorga, cambia y revoca el acceso.

Se puede asignar varios roles al mismo usuario. Para obtener una lista de los permisos que contiene una función, consulta la página sobre cómo obtener los metadatos de la función.

Si intentas acceder a un recurso de Google Cloud y no tienes los permisos necesarios, comunícate con el principal que aparece como Propietario del recurso.

Funciones personalizadas

A fin de crear una función personalizada con permisos de Logging, haz lo siguiente:

Para obtener más información sobre los roles personalizados, consulta Comprende los roles personalizados de IAM.

Permisos de Cloud Logging

La siguiente tabla es una lista parcial de los permisos necesarios para 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 Console Permisos necesarios
Acceso de solo lectura mínimo logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Visualiza los registros de auditoría de acceso a los datos logging.privateLogEntries.list
Visualiza métricas basadas en registros logging.logMetrics.{list, get}
Ver receptores logging.sinks.{list, get}
Visualiza el uso de 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 se deben otorgar a nivel de proyecto. No puedes descargar registros si se otorga un rol que contiene estos permisos en el archivo de política de IAM de una vista de registro.

Enumera y visualiza los ámbitos de registros logging.logScopes.{get, list}
Visualiza el ámbito de registros predeterminado observability.scopes.get
Excluye registros logging.exclusions.{list, create, get, update, delete}

Cuando crees un rol personalizado que incluya permisos para administrar filtros de exclusión, agrega los permisos logging.sinks.* al rol en lugar de agregar los permisos logging.exclusions.*.

Crea y usa receptores logging.sinks.{list, create, get, update, delete}

Cuando creas un receptor, también debes otorgar a la cuenta de servicio un rol de IAM que le permita escribir entradas de registro en el destino. Para obtener más información, consulta Establece permisos de destino.

Después de que tus entradas de registro se enruten a un destino compatible, el acceso a las entradas de registro se controla por completo con los permisos y roles de IAM en el destino.

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

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

Guarda y usa consultas privadas logging.queries.usePrivate
logging.queries.{listShared,getShared}
Guarda y usa consultas compartidas logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Crea y administra ámbitos de registros logging.logScopes.{create, delete, get, list, update}
Establece y administra el ámbito de registros predeterminado observability.scopes.{get, update}
Crea y administra vistas de análisis observability.analyticsViews.{create, delete, get, list, update}

Permisos para la línea de comandos

Los comandos gcloud logging se controlan con permisos de IAM.

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

Una principal también debe tener el rol de IAM que corresponde al recurso del registro y al caso de uso. Para obtener más detalles, consulta 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 comunes que una principal necesita para acceder a las métricas basadas en registros:

  • El rol Escritor de configuración de registros (roles/logging.configWriter) permite que las principales enumeren, creen, obtengan, actualicen y borren métricas basadas en registros.

  • El rol de Visualizador de registros (roles/logging.viewer) contiene permisos para ver las métricas existentes. Específicamente, una principal necesita los permisos logging.logMetrics.get y logging.logMetrics.list para ver las métricas existentes.

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

  • Los roles de administrador de Logging (roles/logging.admin), editor del proyecto (roles/editor) y propietario del proyecto (roles/owner) contienen los permisos para crear métricas basadas en registros. En particular, una 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

En esta sección, se describen los roles que necesitas para crear políticas de alertas basadas en registros, canales de notificaciones y reglas de notificaciones. Los canales de notificaciones especifican cómo te notifica Cloud Monitoring. Una regla de notificación describe cómo hacer coincidir las entradas de registro entrantes con la política de alertas.

Roles obligatorios

Para obtener los permisos que necesitas para crear políticas de alertas basadas en registros, canales de notificaciones y las reglas de notificación de Logging asociadas, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para crear políticas de alertas basadas en registros, canales de notificaciones y las reglas de notificación de Logging asociadas. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear políticas de alertas basadas en registros, canales de notificaciones y las reglas de notificación de Logging asociadas:

  • monitoring.alertPolicies.create
  • monitoring.notificationChannels.create
  • logging.notificationRules.create

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Roles adicionales obligatorios para los usuarios de Google Cloud CLI

Para obtener el permiso que necesitas para crear una política de alertas con Google Cloud CLI, pídele a tu administrador que te otorgue el rol de IAM de Consumidor de Service Usage (roles/serviceusage.serviceUsageConsumer) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso serviceusage.services.use, que se requiere para crear una política de alertas con Google Cloud CLI.

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

Permisos para las políticas de alertas basadas en SQL

Las políticas de alertas basadas en SQL evalúan los resultados de una consulta en SQL que se ejecuta en los datos de grupos de entradas de registro. Para obtener información sobre los roles necesarios para crear y administrar políticas de alertas basadas en SQL, consulta la sección Antes de comenzar en Supervisa los resultados de tus consulta en SQL con una política de alertas.

Permisos de acceso de Logging

Los permisos de acceso son el método heredado para especificar permisos de las cuentas de servicio en tus instancias de VM de Compute Engine.

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

Permiso de acceso Permisos otorgados
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 de Logging.
https://www.googleapis.com/auth/cloud-platform Tiene acceso completo a la API de Logging y a todas las demás APIs de Google Cloud habilitadas.

Para obtener información sobre cómo usar este método heredado para configurar los niveles de acceso de tus cuentas de servicio, consulta Permisos de acceso.