Control de acceso con IAM

En este documento, se describe cómo usar las funciones y los permisos de la administración de identidades y accesos (IAM) para controlar el acceso a los datos de registro en la API de Logging, el Explorador de registros y la CLI de Google Cloud.

Descripción general

Los permisos y las funciones de IAM determinan tu capacidad para acceder a los datos de registros en la API de Logging, en el Explorador de registros y en la CLI de Google Cloud.

Una función es un conjunto de permisos No puedes otorgar permisos principales directamente. En su lugar, les otorgas una función. Cuando otorgas una función a una principal, les otorgas todos los permisos que contiene esa función. Puedes otorgar varias funciones a la misma principal.

Para usar Logging dentro de un recurso de Google Cloud, como un proyecto, una carpeta, una organización o un bucket de Google Cloud, la principal debe tener una función de IAM que contenga los permisos adecuados.

Funciones predefinidas

IAM proporciona funciones predefinidas 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 estas funciones y actualiza automáticamente sus permisos según sea necesario, como cuando Logging agrega características nuevas.

En la siguiente tabla, se enumeran las funciones predefinidas para Logging. Para cada función, en la tabla se muestran el título, la descripción, los permisos contenidos y el tipo de recurso de nivel más bajo en el que se pueden otorgar las funciones. Puedes otorgar las funciones predefinidas a nivel de proyecto de Cloud o, en la mayoría de los casos, cualquier tipo superior en la jerarquía de Google Cloud. A fin de limitar las funciones del escritor de buckets de registros o del visualizador de registros de forma más estrecha a nivel del bucket, usa los atributos de recursos para las condiciones de IAM.

Para obtener una lista de cada permiso individual incluido en una función, consulta la sección sobre cómo obtener los metadatos de la función.

Función Permisos

Administrador de Logging
(roles/logging.admin)

Proporciona todos los permisos necesarios para usar todas las funciones de Cloud Logging.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • logging.buckets.copyLogEntries
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.access
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.list
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.get
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Escritor de registros en bucket
(roles/logging.bucketWriter)

Puede escribir registros en un bucket de registros.

Recursos de nivel más bajo en los que puedes otorgar este rol:

  • Proyecto
  • logging.buckets.write

Escritor de configuración de registros
(roles/logging.configWriter)

Proporciona permisos para leer y escribir las configuraciones de las métricas basadas en registros y receptores a fin de exportar registros.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.list
  • logging.notificationRules.*
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Descriptor de acceso de campos de registro
(roles/logging.fieldAccessor)

Puede leer los campos restringidos de un bucket de registros.

Recursos de nivel más bajo en los que puedes otorgar este rol:

  • Proyecto
  • logging.fields.access

Escritor de registros
(roles/logging.logWriter)

Proporciona los permisos para escribir entradas de registro.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • logging.logEntries.create

Visualizador de registros privados
(roles/logging.privateLogViewer)

Proporciona los permisos de la función visor de registros y, además, brinda acceso de solo lectura para las entradas de registro en registros privados.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.list
  • logging.privateLogEntries.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.get
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Descriptor de acceso de vista de registros
(roles/logging.viewAccessor)

Puede leer los registros de una vista.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues

Visor de registros
(roles/logging.viewer)

Proporciona acceso para ver los registros.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • 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.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.get
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Consideraciones adicionales

Cuando decidas qué permisos y funciones se aplican a tus principales, ten en cuenta lo siguiente:

  • roles/logging.admin (Administrador de Logging) te otorga todos los permisos relacionados con Logging.

  • roles/logging.viewer (Visor de registros) otorga a las principales acceso de solo lectura a la mayoría de las funciones de Logging.

    La función Visor de registros otorga a las principales acceso a la vista de registro _AllLogs en el bucket _Required y a la vista de registro _Default en el bucket _Default.

    La función Visor de registros no permite que las principales lean los registros de auditoría de acceso a los datos que se encuentran en el bucket de _Default. Para leer estos registros de auditoría de acceso a los datos, las principales necesitan la función de visualizador de registros privados (roles/logging.privateLogViewer) en la vista de registro adecuada.

    La función Visor de registros no permite que las principales lean los registros que se almacenan en los buckets definidos por el usuario. Para leer los registros en buckets definidos por el usuario, las principales necesitan la función de acceso de vista de registros (roles/logging.viewAccessor) a fin de obtener la vista de registro adecuada.

  • roles/logging.privateLogViewer (Visualizador de registros privados) incluye todos los permisos que contiene roles/logging.viewer, además de la capacidad de leer registros de auditoría de acceso a los datos en el bucket de _Default.

    La función Visor de registros privados no permite que las principales lean los registros de auditoría de acceso a los datos si están almacenados en buckets definidos por el usuario. Para leer estos registros en buckets definidos por el usuario, las principales necesitan la función de acceso de registros (roles/logging.viewAccessor) a fin de obtener la vista de registro adecuada.

  • roles/logging.viewAccessor (accesorio de vista de registros) otorga permisos a la principal para leer registros, claves de recursos y valores con una vista de registro y descargar registros. Para restringir esta función a una vista en un bucket específico, usa una condición de IAM. Consulta Lee registros de un bucket para ver un ejemplo.

  • roles/logging.fieldAccessor (accesorio de campo de registros) otorga permisos a las principales para acceder a campos LogEntry restringidos, si los hubiera, en un bucket determinado. Consulta Control de acceso a nivel de campo para obtener más información.

  • roles/logging.logWriter (escritor de registros) otorga a las principales los permisos mínimos necesarios para escribir registros en la API de Logging. Esta función no otorga permisos de lectura.

  • roles/logging.bucketWriter (escritor de buckets de registros) otorga a una cuenta de servicio de un receptor los permisos mínimos necesarios para enrutar los registros a un bucket específico. Si deseas obtener instrucciones para otorgar permisos a una cuenta de servicio de un receptor, consulta Configura los permisos de destino.

  • roles/logging.configWriter (escritor de configuración de registros) otorga a las principales los permisos para crear o modificar configuraciones de registro, como receptores, buckets, vistas, métricas basadas en registros o exclusiones. Si quieres usar el Explorador de registros para estas acciones, agrega roles/logging.viewer.

  • roles/viewer (Visualizador del proyecto) es lo mismo que roles/logging.viewer. La función otorga a las principales acceso de solo lectura a todas las funciones de Logging, excepto para ver los registros de auditoría de acceso a los datos que se encuentran en el bucket _Default.

  • roles/editor (Editor de proyecto) incluye los permisos de roles/logging.viewer, además de permisos para escribir entradas de registro, borrar registros y crear métricas basadas en registros. La función no permite que las principales creen receptores o lean registros de auditoría de acceso a los datos que se encuentren en el bucket _Default.

  • roles/owner (propietario del proyecto) otorga a las principales acceso completo a Logging, incluida la lectura de los registros de auditoría de acceso a los datos.

Otorgando funciones

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

Se puede asignar varias funciones 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 para el 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 las funciones personalizadas, consulta Comprende las funciones personalizadas de IAM.

Permisos de la API

Los métodos de la API de Logging requieren permisos específicos de IAM. En la siguiente tabla, se muestra una lista de los permisos que necesitan los métodos de la API.

Si te interesan los registros almacenados en organizaciones, cuentas de facturación y carpetas de Google Cloud, ten en cuenta que esos recursos tienen sus propios métodos de API para logs y sinks. En lugar de repetir todos los métodos de la tabla, solo los métodos de projects se muestran de forma individual.

Método de Logging Permiso requerido Tipo de recurso
billingAccounts.logs.* logging.logs.* (Consulta projects.logs.*) cuentas de facturación
billingAccounts.sinks.* logging.sinks.* (Consulta projects.sinks.*.) cuentas de facturación
billingAccounts.locations.buckets.* logging.buckets.* (Consulta projects.locations.buckets.*.) cuentas de facturación
entries.list logging.logEntries.list o
logging.privateLogEntries.list
proyectos, organizaciones,
carpetas, cuentas de facturación
entries.tail logging.logEntries.list o
logging.privateLogEntries.list
proyectos, organizaciones,
carpetas, cuentas de facturación
entries.write logging.logEntries.create proyectos, organizaciones,
carpetas, cuentas de facturación
folders.logs.* logging.logs.* (Consulta projects.logs.*) carpetas
folders.sinks.* logging.sinks.* (Consulta projects.sinks.*) carpetas
folders.locations.buckets.* logging.buckets.* (Consulta projects.locations.buckets.*) carpetas
monitoredResourceDescriptors.list (ninguna) (ninguna)
organizations.logs.* logging.logs.* (Consulta projects.logs.*) organizaciones
organizations.sinks.* logging.sinks.* (Consulta projects.sinks.*) organizaciones
organizations.locations.buckets.* logging.buckets.* (Consulta projects.locations.buckets.*) organizaciones
projects.exclusions.create logging.exclusions.create proyectos
projects.exclusions.delete logging.exclusions.delete proyectos
projects.exclusions.get logging.exclusions.get proyectos
projects.exclusions.list logging.exclusions.list proyectos
projects.exclusions.patch logging.exclusions.update proyectos
projects.logs.list logging.logs.list proyectos
projects.logs.delete logging.logs.delete proyectos
projects.sinks.list logging.sinks.list proyectos
projects.sinks.get logging.sinks.get proyectos
projects.sinks.create logging.sinks.create proyectos
projects.sinks.update logging.sinks.update proyectos
projects.sinks.delete logging.sinks.delete proyectos
projects.locations.buckets.list logging.buckets.list proyectos
projects.locations.buckets.get logging.buckets.get proyectos
projects.locations.buckets.patch logging.buckets.update proyectos
projects.locations.buckets.create logging.buckets.create proyectos
projects.locations.buckets.delete logging.buckets.delete proyectos
projects.locations.buckets.undelete logging.buckets.undelete proyectos
projects.metrics.list logging.logMetrics.list proyectos
projects.metrics.get logging.logMetrics.get proyectos
projects.metrics.create logging.logMetrics.create proyectos
projects.metrics.update logging.logMetrics.update proyectos
projects.metrics.delete logging.logMetrics.delete projects

permisos de la consola

La siguiente tabla muestra una lista de los permisos necesarios para usar 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
Agregar la capacidad de ver los registros de auditoría de acceso a datos Agregar logging.privateLogEntries.list
Agregar la habilidad para ver las métricas basadas en registros Agregar logging.logMetrics.{list, get}
Agrega la capacidad de ver receptores Agregar logging.sinks.{list, get}
Agregar la habilidad para ver el uso de los registros Agregar logging.usage.get
Agregar la habilidad de excluir registros Agregar logging.exclusions.{list, create, get, update, delete}
Agrega la capacidad de usar receptores Agregar logging.sinks.{list, create, get, update, delete}
Agregar la habilidad de crear métricas basadas en registros Agregar logging.logMetrics.{list, create, get, update, delete}
Agrega la capacidad de guardar consultas Agregar logging.queries.{list, create, get, update, delete}
Agrega la capacidad de compartir consultas Agregar logging.queries.share
Agrega la capacidad de usar consultas recientes. Agregar logging.queries.{create, list}

Permisos de la línea de comandos

Los comandos gcloud logging se controlan mediante los 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 la función de IAM que corresponde al recurso de registro y al caso de uso. Para obtener más información, consulta Permisos de la interfaz de línea de comandos.

Permisos de enrutamiento de registros

Si quieres obtener información sobre cómo configurar los controles de acceso cuando creas y administras receptores para enrutar los registros, consulta Configura receptores: configura permisos de destino.

Ten en cuenta que la administración de los filtros de exclusión se integra en la configuración de los receptores. Todos los permisos relacionados con la administración de receptores, incluida la configuración de filtros de exclusión, se incluyen en los permisos logging.sinks.*. Cuando crees una función personalizada que incluya permisos para administrar filtros de exclusión, agrega los permisos logging.sinks.* a la función en lugar de logging.exclusions.*.

Una vez que tus entradas de registro se enrutan a un destino compatible, el acceso a las copias de registro se controla por completo con permisos y funciones de IAM en los destinos: Cloud Storage, BigQuery o Pub/Sub.

Permisos de métricas basadas en registros

A continuación, se muestra un resumen de las funciones y los permisos comunes que necesita una principal para acceder a las métricas basadas en registros:

  • El 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 Visor de registros (roles/logging.viewer) permite que las principales vean las métricas existentes. También puedes agregar los permisos logging.logMetrics.get y logging.logMetrics.list a una función personalizada.

  • El Visualizador de Monitoring (roles/monitoring.viewer) permite que las principales lean datos de TimeSeries. También puedes agregar el permiso monitoring.timeSeries.list a una función personalizada.

  • El Administrador de Logging (roles/logging.admin), el Editor de proyectos (roles/editor) y el Propietario del proyecto (roles/owner) permiten que las principales creen métricas basadas en registros (logging.logMetrics.create).

Permisos de alertas basadas en registros

A continuación, se muestra un resumen de las funciones y los permisos comunes que la principal necesita para crear y administrar alertas basadas en registros:

  • Administrador de Logging (roles/logging.admin): En particular, la principal necesita los siguientes permisos para leer registros y administrar reglas de notificación de Logging:

    • logging.logs.list
    • logging.logEntries.list
    • logging.notificationRules.create
    • logging.notificationRules.update

    Estos permisos están incluidos en la función de administrador de Logging. Si no deseas otorgar esta función, haz lo siguiente:

  • El Editor de políticas de alertas de Monitoring (roles/monitoring.alertPolicyEditor) y el Editor de canales de notificaciones de Monitoring (roles/monitoring.notificationChannelEditor) incluyen los permisos necesarios para administrar las políticas de alertas y los canales de notificaciones que usan las alertas basadas en registros:

    • monitoring.alertPolicies.{create, delete, get, list, update}
    • monitoring.notificationChannelDescriptors.{get, list}
    • monitoring.notificationChannels.{create, delete, get, list, sendVerificationCode, update, verify}

    Los permisos necesarios también se incluyen en las funciones Editor de Monitoring (roles/monitoring.editor) y Administrador de Monitoring (roles/monitoring.admin).

    Si no deseas otorgar ninguna de estas funciones, crea una función personalizada y, luego, incluye los permisos en las funciones de Editor de alertas de Monitoring y Editor de notificaciones de Monitoring.

Niveles de acceso de Logging

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

Los siguientes niveles de acceso aplican a la API de Logging:

Nivel 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 Acceso completo a la API de Logging y a otras API habilitadas de Google Cloud.

Si quieres obtener información sobre el uso de este método heredado para configurar tus cuentas de servicio (niveles de acceso), consulta Permisos de la cuenta de servicio.