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, 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 una función a una principal, les otorgas todos los permisos que contiene la 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, un bucket o una organización de Google Cloud, una 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 sus permisos de forma automática 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, la tabla muestra 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 depósitos de registros o del descriptor de acceso de vista de registros con mayor precisión a nivel de bucket, debes usar atributos de recursos para las condiciones de IAM.
Para obtener una lista de cada permiso individual contenido en una función, consulta la sección sobre cómo obtener los metadatos de la función.
Función | Permisos |
---|---|
Administrador de Logging( 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:
Contiene 15 permisos de propietario |
logging.buckets.copyLogEntries logging.buckets.create logging.buckets.delete logging.buckets.get logging.buckets.list logging.buckets.undelete logging.buckets.update logging.exclusions.*
logging.fields.access logging.links.*
logging.locations.*
logging.logEntries.*
logging.logMetrics.*
logging.logServiceIndexes.list logging.logServices.list logging.logs.*
logging.notificationRules.*
logging.operations.*
logging.privateLogEntries.list logging.queries.*
logging.settings.*
logging.sinks.*
logging.usage.get logging.views.*
resourcemanager.projects.get resourcemanager.projects.list |
Escritor de registros en bucket( Puede escribir registros en un bucket de registros. Recursos de nivel más bajo en los que puedes otorgar este rol:
|
logging.buckets.write |
Escritor de configuración de registros( 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:
Contiene 10 permisos de propietario |
logging.buckets.create logging.buckets.delete logging.buckets.get logging.buckets.list logging.buckets.undelete logging.buckets.update logging.exclusions.*
logging.links.*
logging.locations.*
logging.logMetrics.*
logging.logServiceIndexes.list logging.logServices.list logging.logs.list logging.notificationRules.*
logging.operations.*
logging.settings.*
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( Puede leer los campos restringidos de un bucket de registros. Recursos de nivel más bajo en los que puedes otorgar este rol:
Contiene 1 permiso de propietario |
logging.fields.access |
Descriptor de acceso de vínculos de registros Beta( Capacidad de ver vínculos para un bucket. |
logging.links.get logging.links.list |
Escritor de registros( Proporciona los permisos para escribir entradas de registro. Recursos de nivel más bajo en los que puedes otorgar esta función:
|
logging.logEntries.create |
Visualizador de registros privado( 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:
Contiene 2 permisos de propietario |
logging.buckets.get logging.buckets.list logging.exclusions.get logging.exclusions.list logging.links.get logging.links.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( Puede leer los registros de una vista. Recursos de nivel más bajo en los que puedes otorgar esta función:
Contiene 1 permiso de propietario |
logging.logEntries.download logging.views.access logging.views.listLogs logging.views.listResourceKeys logging. |
Visor de registros( Proporciona acceso para ver los registros. Recursos de nivel más bajo en los que puedes otorgar esta función:
|
logging.buckets.get logging.buckets.list logging.exclusions.get logging.exclusions.list logging.links.get logging.links.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 |
En las siguientes secciones, se proporciona información adicional para ayudarte a decidir qué funciones se aplican a los casos prácticos de tus 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 configuraciones de registro, como receptores, depósitos, 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 depósitos
_Required
y_Default
, usa el Explorador de registros y usa la página de estadísticas de registros, otorga una de las siguientes funciones:- 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 depósitos
_Required
y_Default
, incluidos los registros de acceso a los datos, otorga la función Visor de registros privados (roles/logging.privateLogViewer
).
- Para acceder a todos los registros del bucket
Para permitir que un usuario lea registros mediante una vista de registro en un bucket definido por el usuario, otorga la función de acceso de vista de registros (
roles/logging.viewAccessor
). Puedes restringir la autorización a una vista específica en un bucket específico mediante una condición de IAM. Consulta Lee registros de un bucket para ver un ejemplo.Para otorgar a un usuario acceso a los campos
LogEntry
restringidos, si los hay, en una bucket determinada, otorga la función de Descriptor de acceso de campo 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 mediante la API de Logging, otorga la función de escritor de registros (
roles/logging.logWriter
). Esta función no otorga permisos de visualización.Para que la cuenta de servicio de una ruta de receptor se registre en un bucket de un proyecto de Google Cloud diferente, otorga a la cuenta de servicio la función de escritor de depósitos de registros (
roles/logging.bucketWriter
). Para obtener instrucciones sobre cómo otorgar permisos a una cuenta de servicio, consulta Establece permisos de destino.
Funciones a nivel de proyecto
Para otorgar acceso de lectura a la mayoría de los servicios de Google Cloud, otorga la función de visualizador (
roles/viewer
).Esta función incluye todos los permisos que otorga la función de visualizador de registros (
roles/logging.viewer
).Para otorgar acceso de editor a la mayoría de los servicios de Google Cloud, otorga la función 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 ni lean los registros de auditoría de acceso a los datos que se encuentran en el bucket_Default
.Para otorgar 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.
Puedes 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 la principal que se muestra como Propietario del recurso.
Funciones personalizadas
A fin de crear una función personalizada con permisos de Logging, haz lo siguiente:
En el caso de una función que otorgue permisos para la API de Logging, elige los permisos de los permisos de la API y, luego, sigue las instrucciones a fin de crear una función personalizada.
Para una función que otorga permisos con el fin de usar el Explorador de registros, elige de entre los grupos de permisos en Permisos de la consola y, luego, sigue las instrucciones para crear una función personalizada.
Si deseas obtener una función que otorgue permisos para usar
gcloud logging
, consulta la sección Permisos de la línea de comandos en esta página y, luego, sigue las instrucciones a fin de crear una función personalizada.
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 ologging.privateLogEntries.list |
proyectos, organizaciones, carpetas, cuentas de facturación |
entries.tail |
logging.logEntries.list ologging.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 |
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 |
projects |
Permisos de 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 } |
Agregar 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 } |
Agregar la capacidad para 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 } |
Agregar la capacidad de guardar consultas | Agregar logging.queries. {list , create , get , update , delete } |
Agregar la capacidad de compartir consultas | Agregar logging.queries.share |
Agregar la capacidad de usar las 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 del registro y al caso práctico. Para obtener más información, consulta los permisos de interfaz de línea de comandos.
Vínculo a un permiso de conjunto de datos de BigQuery
En la siguiente lista, se describen las funciones predefinidas y los permisos correspondientes para administrar tus conjuntos de datos de BigQuery vinculados:
El administrador de Logging (
roles/logging.admin
) y el escritor de configuración de registros (roles/logging.configWriter
) otorgan los siguientes permisos:logging.links.list
logging.links.create
logging.links.get
logging.links.delete
El Descriptor de acceso de vínculos de registros (
roles/logging.linkViewer
), el visor de registros privados (roles/logging.privateLogViewer
) y el visor de registros (roles/logging.viewer
) otorgan los siguientes permisos:logging.links.list
logging.links.get
Las funciones y los permisos enumerados antes solo se aplican a las páginas de Logging, como la página de estadísticas 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 IAM para BigQuery a fin de obtener más información.
Permisos de enrutamiento de registros
Si deseas obtener más información sobre cómo configurar los controles de acceso cuando creas y administras receptores para enrutar registros, consulta Configura permisos de destino.
Ten en cuenta que la administración de 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 agregar los permisos logging.exclusions.*
.
Después de que las entradas de registro se enruten a un destino compatible, el acceso a las copias de registro se controlará completamente mediante los permisos y las 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 una principal necesita para acceder a las métricas basadas en registros:
El Escritor de configuración de registros (
roles/logging.configWriter
) permite que las principales muestren, 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 permisoslogging.logMetrics.get
ylogging.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 permisomonitoring.timeSeries.list
a una función personalizada.El administrador de Logging (
roles/logging.admin
), el editor del proyecto (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 presenta un resumen de las funciones y los permisos comunes que una principal necesita para crear y administrar alertas basadas en registros:
Administrador de Logging (
roles/logging.admin
). En particular, una 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:
- Otorga las funciones Escritor de configuración de registros (
roles/logging.configWriter
) y Visor de registros (roles/logging.viewer
). - Crea una función personalizada y, además, incluye estos permisos. Para obtener más información, consulta Crea y administra funciones personalizadas.
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 e incluye los permisos en las funciones Editor de alertas de Monitoring y Editor de NotificationChannel de Monitoring.
- Para obtener información sobre las funciones personalizadas, consulta Crea y administra funciones personalizadas.
- Para obtener más información sobre las funciones y los permisos de Monitoring, consulta Control de acceso.
Niveles de acceso de Logging
Los niveles 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 tus cuentas de servicio, consulta Permisos de cuentas de servicio.