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 registros en la API de Logging, el Explorador de registros y Google Cloud CLI.

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, el Explorador de registros y la Google Cloud CLI.

Un rol es un conjunto de permisos. No puedes otorgar permisos principales directamente. En su lugar, les otorgas una función. Cuando otorgas un rol a una principal, le otorgas todos los permisos que el rol contiene. Puedes asignar varios roles a la misma principal.

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

Roles predefinidos

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 de forma automática sus permisos según sea necesario, como cuando Logging agrega funciones nuevas.

En la siguiente tabla, se enumeran los roles predefinidos para Logging. Para cada función, la tabla muestra el título de la función, 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 los roles predefinidos a nivel de proyecto de Google Cloud o, en la mayoría de los casos, a cualquier tipo superior en la jerarquía de Google Cloud. Para definir el alcance de la función de descriptor de acceso de vista de registros al nivel del bucket, usa los atributos de recursos para Condiciones de IAM.

Para obtener una lista de todos los permisos individuales que contiene una función, consulta Cómo obtener los metadatos de la función.

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

logging.buckets.get

logging.buckets.list

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.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.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.update
  • logging.queries.updateShared

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

logging.views.*

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

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

logging.buckets.get

logging.buckets.list

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

logging.views.delete

logging.views.get

logging.views.list

logging.views.update

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

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

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

Funciones de Logging

  • Para permitir que un usuario realice todas las acciones en Logging, otorga la función de administrador de Logging (roles/logging.admin).

  • Para permitir que un usuario cree y modifique la configuración de registro, como receptores, buckets, vistas, vínculos, métricas basadas en registros o exclusiones, otorga la función de escritor de configuración de registros (roles/logging.configWriter).

  • Para permitir que un usuario lea registros en los buckets _Required y _Default, usa el Explorador de registros y usa la página de Análisis de registros, otorga uno de los siguientes roles:

    • Para acceder a todos los registros del bucket _Required y a la vista _Default en el bucket _Default, otorga la función de visor de registros (roles/logging.viewer).
    • Para acceder a todos los registros en los buckets _Required y _Default, incluidos los registros de acceso a los datos, otorga la función de visualizador de registros privados (roles/logging.privateLogViewer).
  • Para permitir que un usuario lea los registros almacenados en un bucket definido por el usuario, otorga la función de descriptor de acceso de vista de registros (roles/logging.viewAccessor). Puedes restringir la autorización a una vista de registro específica en un bucket específico mediante una condición de IAM; consulta Otorga acceso a una vista de registro.

  • Para otorgarle a un usuario acceso a campos LogEntry restringidos, si los hay, en un bucket determinado, otorga la función de descriptor de acceso de campos de registro (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, otorga la función de escritor de registros (roles/logging.logWriter). Este rol no otorga permisos de lectura.

  • Para permitir que la cuenta de servicio de una ruta de receptor se registre en un bucket en un proyecto de Google Cloud diferente, otorga a la cuenta de servicio el rol de escritor de bucket de registros (roles/logging.bucketWriter). Si quieres obtener instrucciones para otorgar permisos a una cuenta de servicio, consulta Configura permisos de destino.

Roles a nivel de proyecto

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

    Esta función incluye todos los permisos que otorga la función de visor de registros (roles/logging.viewer).

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

    Esta función incluye todos los permisos que otorga la función de visor de registros (roles/logging.viewer) y los permisos para escribir entradas de registro, borrar registros y crear métricas basadas en registros. Sin embargo, esta función 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 leen registros que están en buckets de registros definidos por el usuario.

  • Para brindar acceso completo a la mayoría de los servicios de Google Cloud, otorga la función de propietario (roles/owner).

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 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 la principal que aparece como el Propietario del recurso.

Roles personalizados

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 para la API de Logging

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.*) organizations
organizations.sinks.* logging.sinks.* (Consulta projects.sinks.*) organizations
organizations.locations.buckets.* logging.buckets.* (Consulta projects.locations.buckets.*) organizations
projects.exclusions.create logging.exclusions.create projects
projects.exclusions.delete logging.exclusions.delete projects
projects.exclusions.get logging.exclusions.get projects
projects.exclusions.list logging.exclusions.list projects
projects.exclusions.patch logging.exclusions.update projects
projects.logs.list logging.logs.list projects
projects.logs.delete logging.logs.delete projects
projects.sinks.list logging.sinks.list projects
projects.sinks.get logging.sinks.get projects
projects.sinks.create logging.sinks.create projects
projects.sinks.update logging.sinks.update projects
projects.sinks.delete logging.sinks.delete projects
projects.locations.buckets.list logging.buckets.list projects
projects.locations.buckets.get logging.buckets.get projects
projects.locations.buckets.patch logging.buckets.update projects
projects.locations.buckets.create logging.buckets.create projects
projects.locations.buckets.delete logging.buckets.delete projects
projects.locations.buckets.undelete logging.buckets.undelete projects
projects.metrics.list logging.logMetrics.list projects
projects.metrics.get logging.logMetrics.get projects
projects.metrics.create logging.logMetrics.create projects
projects.metrics.update logging.logMetrics.update projects
projects.metrics.delete logging.logMetrics.delete proyectos

Permisos para la consola de Google Cloud

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 habilidad de ver los 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 habilidad 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 habilidad de guardar consultas Agregar logging.queries.{list, create, get, update, delete}
Agrega la habilidad de compartir consultas Agregar logging.queries.share
Agrega la capacidad de usar consultas recientes Agregar logging.queries.{create, list}

Permisos para 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 el rol de IAM que corresponde al recurso del registro y al caso de uso. Para obtener más información, consulta los permisos de la interfaz de línea de comandos.

En la siguiente lista, se describen los roles predefinidos y los permisos correspondientes para administrar tus conjuntos de datos de BigQuery vinculados:

Las funciones y los permisos enumerados anteriormente solo se aplican a las páginas de Logging, como la página de Análisis de registros. Si usas la interfaz de BigQuery para administrar tus conjuntos de datos, es posible que necesites funciones y permisos de BigQuery separados. Consulta Control de acceso con la IAM para BigQuery a fin de obtener más información.

Permisos para enrutar registros

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

Ten en cuenta que la administración de filtros de exclusión está integrada en la configuración de 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 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.*.

Después de que tus entradas de registro se enrutan a un destino compatible, el acceso a las copias del registro se controla en su totalidad con permisos y funciones de IAM en los destinos: Cloud Storage, BigQuery o Pub/Sub.

Permisos para métricas basadas en registros

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

  • La función Escritor de configuración de registros (roles/logging.configWriter) permite a las principales enumerar, crear, obtener, actualizar y borrar métricas basadas en registros.

  • La función Visor de registros (roles/logging.viewer) contiene permisos para ver las métricas existentes. En particular, una principal necesita los permisos logging.logMetrics.get y logging.logMetrics.list para ver las métricas existentes.

  • La función de Visualizador de Monitoring (roles/monitoring.viewer) contiene los permisos para leer datos de TimeSeries. Específicamente, una principal necesita el permiso monitoring.timeSeries.list para leer datos de series temporales.

  • Las funciones 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.

Permisos para alertas basadas en registros

Para crear y administrar alertas basadas en registros, una principal necesita las siguientes funciones y permisos de Logging y Monitoring:

  • A fin de obtener los permisos que necesitas para leer registros y administrar las reglas de notificaciones de Logging, pídele a tu administrador que te otorgue el rol de IAM Administrador de Logging (roles/logging.admin) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

    Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.

  • Si quieres obtener los permisos que necesitas para crear una política de alertas en Google Cloud CLI, pídele a tu administrador que te otorgue el rol de IAM Consumidor de Service Usage (roles/serviceusage.serviceUsageConsumer) en tu proyecto.

Niveles de acceso de Logging

Los permisos de acceso son el método heredado de 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 deseas obtener información sobre el uso de este método heredado para configurar los niveles de acceso de las cuentas de servicio, consulta Permisos de la cuenta de servicio.