Control de acceso con IAM

En este documento, se describe cómo usar roles y permisos de Identity and Access Management (IAM) para para controlar el acceso a los datos de registro la API de Logging, el el Explorador de registros Google Cloud CLI.

Descripción general

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

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 contiene ese rol. Puedes otorgar varios roles a la misma principal.

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

Funciones predefinidas

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

En la siguiente tabla, se enumeran los roles predefinidos de Logging. Para de cada rol, la tabla muestra el título del rol, la descripción permisos 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 del proyecto de Google Cloud o, en la mayoría de los casos, a cualquier tipo superior en la jerarquía de recursos. Para restringir el rol Acceso de vista de registros a una vista de registro en un bucket, usa atributos de recursos para las condiciones de IAM.

Para obtener una lista de todos los permisos individuales que contiene un rol, 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.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.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.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.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.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.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 brinda información adicional para ayudarte a decidir qué roles se aplican a las cuentas de los casos de uso.

Funciones de Logging

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

  • Para permitir que un usuario cree y modifique configuraciones de registro, otorga 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][log-overview-lbm] o [políticas de alertas basadas en registros][log-overview-lba]. 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 registros en los buckets de _Required y _Default o usar las páginas del Explorador de registros y Análisis de registros, otorgar uno de los siguientes roles:

    • Para obtener acceso a todos los registros del bucket _Required y a la vista _Default en el bucket _Default, otorga el rol de Visualizador de registros (roles/logging.viewer).
    • Para obtener acceso a todos los registros de los buckets _Required y _Default, incluidos los registros de acceso a los datos, otorga el rol de Visor de registros privados (roles/logging.privateLogViewer).
  • Para permitir que un usuario lea registros en todas las vistas de registro de un proyecto, otórgale la función de IAM de 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 IAM para la vista de registro y, luego, agrega una vinculación de IAM a esa política que otorgue al principal acceso a la vista de registro.

    • Otorga al 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 la concesión a la vista de registro específica.

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

  • Para otorgar a un usuario acceso a campos restringidos de LogEntry, si los hay, haz lo siguiente: en un bucket de registros determinado, otorga rol de Acceso a 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, otorga el rol de escritor de registros (roles/logging.logWriter). Este rol no otorga permisos de lectura.

  • Para permitir que la cuenta de servicio de un receptor enrute los registros a un bucket en un otro proyecto de Google Cloud, otórgale a la cuenta de servicio Rol de escritor de buckets de registros (roles/logging.bucketWriter). Si quieres obtener instrucciones para otorgar permisos a una cuenta de servicio, consulta Configura permisos de destino.

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

    Este rol incluye todos los permisos otorgados por el rol de visor de registros (roles/logging.viewer).

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

    Este rol incluye todos los permisos otorgados por el de 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 registro definidos por el usuario.

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

Otorgando funciones

Para obtener información sobre cómo otorgar un rol a una principal, consulta Cómo otorgar, cambiar y revocar 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 el administrador que aparece como el 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 las funciones personalizadas 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 la 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
Cómo ver los registros de auditoría de acceso a los datos logging.privateLogEntries.list
Cómo ver las métricas basadas en registros logging.logMetrics.[list, get]
Cómo ver los receptores logging.sinks.[list, get]
Ver uso de registros logging.usage.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 crees un receptor, también debes otorgarle 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 Configura los permisos de destino.

Una vez que tus entradas de registro se enrutan a un destino compatible, el acceso a ellas 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 crear y usar métricas basadas en registros, consulta Los 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]
Usa consultas recientes logging.queries.[create, list]

Permisos de la línea de comandos

Los comandos gcloud logging están controlados por los permisos de IAM.

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

Un principal también debe tener el rol de IAM correspondiente al recurso del registro y al caso de uso. Para obtener más información, 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 muestra un resumen de los roles y permisos comunes que una principal necesita acceder a las métricas basadas en registros:

  • El rol de Escritor de configuración de registros (roles/logging.configWriter) permite que los 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 Visualizador de Monitoring (roles/monitoring.viewer) contiene los permisos para leer datos de TimeSeries. Específicamente, un usuario principal necesita el permiso monitoring.timeSeries.list para leer datos de series temporales.

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

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

Para crear y administrar políticas de alertas basadas en registros, un principal necesita los siguientes roles y permisos de Logging y Monitoring:

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

Si tu proyecto de Google Cloud ya tiene canales de notificación, puedes configurar tu política de alertas para usar un canal existente sin roles ni permisos adicionales. 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:

  • A fin de obtener el permiso que necesitas para crear un canal de notificaciones para una política de alertas basada en registros, solicita a tu administrador que te otorgue el Rol de IAM de Editor de canal de notificaciones de Monitoring (roles/monitoring.notificationChannelEditor) en tu proyecto.

    Este rol predefinido contiene el permiso monitoring.notificationChannels.create, que se requiere para crear un canal de notificación para una política de alertas basada en registros.

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 ejecutada según 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 consultas de SQL con una política de alertas.

Niveles de acceso de Logging

Los permisos de acceso son método heredado de especificar permisos para las cuentas de servicio en tu 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 las contraseñas niveles de acceso, consulta Permisos de la cuenta de servicio.