En esta página, se describe cómo Cloud Logging usa la Administración de identidades y accesos (IAM) para controlar el acceso a los datos de registro en los recursos de Google Cloud.
Descripción general
Los permisos y las funciones de IAM determinan cómo puedes usar la API de Logging, el Explorador de registros y el comando herramienta de línea de comandos de gcloud
.
Los registros se encuentran en depósitos de registros dentro de los proyectos, las organizaciones, las carpetas y las cuentas de facturación de Google Cloud. Cada uno de estos recursos de Google Cloud puede tener su propio conjunto de miembros con sus propios conjuntos de funciones y permisos de Cloud Logging.
A fin de usar Logging con los datos de registro en un proyecto de Google Cloud, debes ser miembro y tener una función de IAM que te otorgue permiso para usar Logging. Las siguientes funciones de IAM se aplican a Logging:
roles/logging.viewer (Visor de registros) te otorga acceso de solo lectura a todas las funciones de Logging, excepto a los registros de Transparencia de acceso y a los registros de auditoría de acceso a datos.
roles/logging.privateLogViewer (Visor de registros privado) incluye roles/logging.viewer, además de la posibilidad de leer registros de Transparencia de acceso y registros de auditoría de acceso a datos. Esta función se aplica solo a los depósitos
_Required
y_Default
.roles/logging.logWriter (Escritor de registros) puede otorgarse a las cuentas de servicio a fin de que otorguen los permisos suficientes a las aplicaciones para escribir registros. Esta función no otorga permisos de lectura.
roles/logging.bucketWriter (Escritor de depósitos de registros) puede otorgarse a cuentas de servicio a fin de que Cloud Logging tenga permisos suficientes para escribir registros en un depósito de registro. Para restringir esta función a un depósito específico, usa una condición de IAM. Consulta Enruta registros de un proyecto a otro con depósito para ver un ejemplo.
roles/logging.configWriter (Escritor de configuración de registros) otorga los permisos para crear métricas basadas en registros, exclusiones, depósitos y vistas, y exportar receptores. Si deseas usar el Explorador de registros (consola) para estas acciones, agrega roles/logging.viewer.
roles/logging.admin (Administrador de Logging) te otorga todos los permisos de Logging.
roles/logging.viewAccessor (Administrador de accesos de visualización de registros) te otorga permiso para leer los registros de una vista. Para restringir esta función a una vista en un depósito específico, usa una condición de IAM. Consulta la Lee registros de un depósito para ver un ejemplo.
roles/viewer (Visor del proyecto) es lo mismo que roles/logging.viewer. La función te otorga acceso de solo lectura a todas las funciones de Logging, excepto los registros de Transparencia de acceso y los registros de auditoría de acceso a datos. Esta función se aplica solo a los depósitos
_Required
y_Default
.roles/editor (Editor del 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 te permite crear receptores de exportación ni leer registros de Transparencia de acceso ni registros de auditoría de acceso a datos.
roles/owner (Propietario del proyecto) te da acceso completo a Logging, incluidos los registros de Transparencia de acceso y los registros de auditoría de acceso a datos.
Para obtener más detalles sobre las funciones de Logging, consulta Permisos y funciones en esta página.
Otorga funciones
Para otorgarle una función a un miembro, debes tener el conjunto de permisos que se encuentra en roles/owner (Propietario del proyecto). Para obtener información sobre cómo otorgar funciones, consulta la página Cómo otorgar, cambiar y revocar el acceso a los recursos.
Si intentas acceder a un recurso de Google Cloud y no tienes los permisos necesarios, comunícate con el miembro que aparece como el Propietario del recurso.
Permisos y funciones
En la siguiente tabla, se enumeran las funciones de IAM que otorgan acceso a Cloud Logging. Cada función tiene un conjunto específico de permisos de registro. Las funciones pueden asignarse a miembros de los tipos de recursos de la lista.
En la tabla, a.b.{x,y}
significa a.b.x
y a.b.y
.
Nombre de la función | Título de la función | Permisos de Logging | Tipo de recurso |
---|---|---|---|
roles/ logging.viewer |
Visor de registros | logging.exclusions. {list ,get .logging.locations. {list ,get .logging.logEntries.list logging.logMetrics. {list ,get .logging.views. {list ,get .logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.queries.listShared logging.sinks. {list ,get .logging.buckets. {list ,get .logging.usage.get resourcemanager.projects.get logging.queries. {get ,list ,update ,create ,delete .
|
proyecto, organización, carpeta, cuenta de facturación |
roles/ logging.privateLogViewer |
Visor de registros privado | Permisos roles/logging.viewer , más:logging.privateLogEntries.list |
proyecto, organización, carpeta, cuenta de facturación |
roles/ logging.logWriter
|
Escritor de registros | logging.logEntries.create |
proyecto, organización, carpeta, cuenta de facturación |
roles/ logging.configWriter |
Escritor de configuración de registros | logging.buckets. {list ,
create ,
get ,
update ,
delete ,
undelete }logging.cmekSettings. {get ,
update }logging.exclusions. {list ,
create ,
get ,
update ,
delete }logging.locations. {list ,
get }logging.logMetrics. {list ,
create ,
get ,
update ,
delete }logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,
create ,
get ,
update ,
delete }logging.views. {list ,
create ,
get ,
update ,
delete }resourcemanager.projects. {get ,
list }
|
proyecto, organización, carpeta, cuenta de facturación |
roles/ logging.bucketWriter |
Escritor de registros en depósito | logging.buckets.write |
proyecto |
roles/ logging.viewAccessor |
Descriptor de acceso de vista de registros | logging.views. {access ,
listLogs ,
listResourceKeys ,
listResourceValues } |
proyecto, organización, carpeta, cuenta de facturación |
roles/ logging.admin |
Administrador de Logging | logging.exclusions. {list ,create ,get ,update ,delete .logging.locations. {list ,get .logging.logEntries. {create ,list .logging.logMetrics. {list ,create ,get ,update ,delete .logging.logs. {delete ,list .logging.logServiceIndexes.list logging.logServices.list logging.privateLogEntries.list logging.sinks. {list ,create ,get ,update ,delete .logging.buckets. {list ,get ,update ,create ,delete ,undelete .logging.views. {list ,access ,create ,get ,update ,delete ,listLogs ,listResourceKeys ,listResourceValues .logging.cmekSettings. {get ,update .logging.usage.get resourcemanager.projects. {get ,list .logging.queries. {get ,list ,update ,create ,delete ,share ,updateShared ,listShared . |
proyecto, organización, carpeta, cuenta de facturación |
roles/viewer |
Lector | logging.buckets. {list ,get .logging.cmekSettings.get logging.exclusions. {list ,get .logging.locations. {list ,get .logging.logEntries. {list ,download .logging.logMetrics. {list ,get .logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,get .logging.usage.get logging.views. {list ,get ,listLogs ,listResourceValues ,listResourceKeys .resourcemanager.projects.get logging.queries. {get ,list ,update ,create ,delete ,listShared . |
proyecto, organización, carpeta |
roles/editor |
Editor | roles/viewer Permisos de Logging, más:logging.cmekSettings.update logging.logEntries.create logging.logMetrics. {create ,update ,delete .logging.logs.delete logging.queries. {get ,list ,update ,create ,delete ,listShared .logging.views. {create ,update ,delete . |
proyecto, organización, carpeta |
roles/owner |
Propietario | roles/editor Permisos de Logging, más:logging.buckets. {create ,update ,delete ,undelete .logging.exclusions. {create ,update ,delete .logging.privateLogEntries.list logging.sinks. {create ,update ,delete .logging.queries. {get ,list ,update ,create ,delete ,share ,updateShared ,listShared .logging.views.access |
proyecto, organización, carpeta |
Funciones personalizadas
A fin de crear una función personalizada con permisos de Logging, haz lo siguiente:
Para una función que otorga permisos a la API de Logging, elige los permisos en la sección Permisos de la API.
Si deseas una función que otorgue permisos para usar el Explorador de registros, elige entre los grupos de permisos en Permisos de la consola.
Si deseas una función que otorgue permisos para usar
gcloud logging
, ve a la descripción general de la herramientagcloud
.
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.
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 |
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 |
proyectos |
Permisos de Console
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 los registros de Transparencia de acceso | Agregar logging.privateLogEntries.list |
Agregar la habilidad para ver las métricas basadas en registros | Agregar logging.logMetrics. {list , get } |
Agregar la habilidad para ver exportaciones | 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 habilidad de exportar registros | 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 } |
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
, debes tener el permiso serviceusage.services.use
.
También debes tener la función de IAM correspondiente a la ubicación del registro y a tu caso práctico. Para obtener más información, consulta los permisos de la interfaz de línea de comandos.
Accede a registros exportados
Si deseas crear un receptor, para poder exportar registros, debes tener los permisos de roles/logging.configWriter
, roles/logging.admin
o roles/owner
.
Una vez que un receptor comienza a exportar registros, tiene acceso completo a todas las entradas de registro nuevas. Los receptores pueden exportar entradas de registro privadas, incluidos los registros de Transparencia de acceso y los registros de auditoría de acceso a datos.
Una vez que se exportan las entradas de registro, el acceso a las copias exportadas se controla en su totalidad con los permisos y las funciones de IAM en cualquiera de los siguientes destinos: Cloud Storage, BigQuery o Pub/Sub.
Niveles de acceso de Logging
Los niveles de acceso son el método heredado que se usa a fin de especificar permisos para 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. |
Recomendaciones
Ahora que las funciones de IAM están disponibles, una práctica razonable es otorgar a todas tus instancias de VM el permiso “Acceso completo a todas las API habilitadas de Google Cloud”:
https://www.googleapis.com/auth/cloud-platform
Puedes otorgar funciones específicas de IAM en la cuenta de servicio de tu instancia de VM para restringir el acceso a API específicas. Para obtener más detalles, consulta Permisos de cuenta de servicio.
Cuando creas una función personalizada que incluye permisos para administrar exclusiones, se recomienda otorgar los permisos
logging.sinks.*
a la función, en lugar de otorgar los permisoslogging.exclusions.*
.La administración de exclusiones forma parte de los receptores de registros, por lo que todos los permisos relacionados con la administración de los receptores, incluidas las exclusiones, se incluyen en los permisos
logging.sinks.*
.