Migra de registros de actividad a registros de auditoría


Si usas registros de actividad para ver la actividad del administrador de Compute Engine y los eventos del sistema, lee esta guía a fin de comprender cómo encontrar entradas de registro similares mediante registros de auditoría en su lugar.

Los registros de actividad de Compute Engine están obsoletos. Puedes identificar las entradas del registro de actividad según su nombre de registro:

logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"

Los registros de auditoría de Compute Engine contienen la misma información que está disponible a través de los registros de actividad y más. Sin embargo, los registros de auditoría presentan la información de manera diferente en comparación con los registros de actividad. Por lo tanto, deberás ajustar las consultas.

Cómo migrar de los registros de actividad a los registros de auditoría

Para usar registros de auditoría en lugar de registros de actividad, ajusta las consultas. Sigue estos pasos:

  1. Busca las consultas anteriores. Por ejemplo, puedes haberlas guardado en una búsqueda guardada en el Explorador de registros o quizás creaste una secuencia de comandos mediante la API o el SDK. Para obtener más información sobre cómo supervisar los recursos, consulta la documentación de Logging.

  2. Reemplaza los campos del registro de actividad con los campos de registro de auditoría adecuados. Consulta la tabla para ver cómo se asignan los campos entre sí.

    Por ejemplo, si la consulta del registro de actividad heredado buscaba un campo llamado jsonPayload.resource.name, la consulta de registro de auditoría nueva debería buscar protoPayload.resourceName en su lugar.

  3. Guarda y usa la nueva consulta de registro de auditoría. Por ejemplo, crea una búsqueda guardada en Cloud Logging o actualiza las secuencias de comandos.

Ejemplos

Estos son algunos ejemplos de consultas convertidas:

Consulta las actividades relacionadas con un recurso específico

Ejemplo de consulta
Registro de actividad heredadogcloud logging read jsonPayload.resource.name="VM_NAME"
Registro de auditoría

Usa una de las opciones que aparecen a continuación:

  1. gcloud logging read protoPayload.resourceName:"VM_NAME"
  2. gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Con la opción 1, el operador “has” (:) hace coincidir todos los recursos del proyecto que tienen un nombre que incluye VM_NAME. Con la opción 2, el operador “equals” (=) solo coincide con un recurso específico completamente calificado con ese nombre.

Consulta las entradas del registro de actividad reciente del administrador

Ejemplo de consulta
Registro de actividad heredadogcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Registro de auditoríagcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Consulta las entradas de registro de creación de instancias recientes

Ejemplo de consulta
Registro de actividad heredadogcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"'
Registro de auditoríagcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"'

Consulta el inicio de todas las operaciones de creación de instancias

Ejemplo de consulta
Registro de actividad heredadogcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"'
Registro de auditoríagcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"'

Consulta la finalización de cualquier operación

Ejemplo de consulta
Registro de actividad heredadogcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Registro de auditoríagcloud logging read operation.last="true"

Diferencias entre los registros de actividad y los registros de auditoría

Consulta esta sección para aprender cómo se estructuran los registros de auditoría en comparación con los registros de actividad. Ten en cuenta estas diferencias cuando conviertas consultas de registros de actividad heredadas en consultas de registros de auditoría. Por ejemplo, en las consultas, reemplaza todos los nombres de campo de registro de actividad heredados con los nombres de campo de registro de auditoría correspondientes.

Si bien el registro de auditoría y el registro de actividad muestran objetos de entrada de registro, tienen las siguientes diferencias:

  • Diferentes nombres de campo. Consulta la tabla de asignación de nombres de campo para obtener más detalles.
  • Diferentes valores de campo, incluidos:
    • Diferentes nombres de registro: los registros de auditoría tienen nombres de registro que contienen cloudaudit.googleapis.com.
    • Diferentes cargas útiles: los registros de auditoría muestran un campo protoPayload en lugar de un jsonPayload.
    • Nombres de recursos completamente calificados: los registros de auditoría muestran nombres de recursos que incluyen la ruta, por ejemplo: projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Nombres de métodos con versiones: los registros de auditoría muestran nombres de métodos que incluyen la versión, por ejemplo, v1.

Este es un ejemplo que muestra las diferencias en los nombres de registros y las cargas útiles:

Ejemplo de entrada de registro
Registro de actividad heredado

{
  insertId:  "1x3bbhjg2wwvz1x"
  jsonPayload: {
    event_subtype: "compute.instances.stop"
    ...
    resource: {
      id: "12345678900123456789"
      name: "my-instance-name"
      type: "instance"
      zone: "us-east1-b"
    }
    ...
  }
  labels: {…}
  logName:  "projects/my-project/logs/compute.googleapis.com%2Factivity_log"
  receiveTimestamp:  "2019-08-26T12:22:44.602794616Z"
  ...
}
Registro de auditoría

{
  insertId:  "-w6o499e22fwk"
  logName:  "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity"
  protoPayload: {
    ...
    methodName: "beta.compute.instances.stop"
    ...
    resourceName: "projects/my-project/zones/us-east1-b/instances/my-instance-name"
  }
  receiveTimestamp:  "2019-08-26T12:22:46.881198276Z"
  ...
}

Asigna campos de los registros de actividad a los de registros de auditoría

Usa las siguientes tablas para asignar campos de registro de actividad a los campos de registro de auditoría correspondientes en las consultas.

Campos

Usa la siguiente tabla para reemplazar los campos de registro de actividad heredados por los campos de registro de auditoría en las búsquedas actualizadas.

Por ejemplo, si tu consulta de registro de actividad heredada contenía un filtro basado en jsonPayload.resource.type, la nueva consulta de registro de auditoría debería filtrarse por resource.type.

Campo de registro de actividad heredado Campo de registro de auditoría
insertId insertId
jsonPayload.actor.user protoPayload.authenticationInfo.principalEmail
jsonPayload.event_subtype protoPayload.methodName
jsonPayload.event_timestamp_us timestamp
jsonPayload.event_type="GCE_API_CALL" operation.first="true"
jsonPayload.event_type="GCE_OPERATION_DONE" operation.last="true"
jsonPayload.request protoPayload.request
jsonPayload.operation operation
jsonPayload.resource.id resource.labels.instance_id
jsonPayload.resource.name protoPayload.resourceName
jsonPayload.resource.type resource.type
jsonPayload.resource.zone resource.labels.zone
jsonPayload.trace_id operation.id
jsonPayload.user_agent protoPayload.requestMetadata.callerSuppliedUserAgent
labels.compute.googleapis.com/resource_id resource.labels.[RESOURCE_TYPE]_id
labels.compute.googleapis.com/resource_name protoPayload.resourceName
labels.compute.googleapis.com/resource_type resource.type
labels.compute.googleapis.com/resource_zone Uno de:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

Valores de campo

Usa las siguientes tablas para asignar valores de campo de registros de actividad heredados a valores de campo de registro de auditoría. En comparación con los registros de actividad, los registros de auditoría tienen varios valores de nombre de registro y diferentes valores de carga útil. Las entradas de registro de auditoría también muestran nombres de recursos completamente calificados y nombres de métodos con versiones.

Nombres de registro

Para encontrar una entrada de registro de auditoría, busca un logName que incluya cloudaudit.googleapis.com.

Nombre del registroContenido del registro
Registro de actividad heredadoprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logActividad del administrador y eventos del sistema
Registro de auditoríaprojects/PROJECT_ID/logs/cloudaudit.googleapis.com%2FactivityActividad del administrador
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_eventEventos del sistema
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_accessAcceso a los datos

Cargas útiles

En cada entrada de registro de auditoría, busca un protoPayload en lugar de un jsonPayload.

Tipo de carga útilEjemplo de carga útil
Registro de actividad heredadojsonPayload

    jsonPayload: {
      actor: {…}
      event_subtype:  "compute.instances.start"
      event_timestamp_us:  "1566404493487248"
      event_type:  "GCE_API_CALL"
      ip_address:  ""
      operation: {…}
      request: {…}
      resource: {…}
      trace_id:  "operation-1566404491560-590a2f74b4705-a1ae0686-d896d772"
      user_agent:  "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
      version:  "1.2"
    }
Registro de auditoríaprotoPayload

    protoPayload: {
      @type:  "type.googleapis.com/google.cloud.audit.AuditLog"
      authenticationInfo: {…}
      methodName:  "v1.compute.instances.start"
      request: {…}
      requestMetadata: {…}
      resourceName:  "projects/my-project/zones/us-central1-a/instances/alert"
      serviceName:  "compute.googleapis.com"
    }

Para saber cómo se relacionan estas cargas útiles entre sí y cómo asignar los campos de registro de actividad heredados a los campos de registro de auditoría, lee la sección sobre cómo asignar campos de entrada de registro.

Nombres de recursos

En los registros de auditoría, los nombres de recursos de la API (en el campo protoPayload.resourceName) están completamente calificados, por ejemplo:

resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Aún puedes usar nombres parciales, pero debes corregir la consulta para usar el operador “has” (:) en lugar del operador “equals”.

Usa una de las siguientes opciones en las consultas de registro de auditoría para filtrar según un recurso específico:

  • gcloud logging read protoPayload.resourceName:"VM_NAME"
  • gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Nombres de métodos

En los registros de auditoría, los nombres de los métodos de API (en el campo protoPayload.methodName) tienen el número de versión como prefijo (por ejemplo, v1.compute.instances.delete).

CampoValorEjemplo de consulta
Registro de actividad heredadojsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Registro de auditoríaprotoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete
o
protoPayload.methodName=beta.compute.instances.delete
o
protoPayload.methodName:compute.instances.delete

Aún puedes usar nombres de métodos sin versiones en las consultas de registro de auditoría, pero debes corregir la consulta para usar el operador “has” (:) en lugar del operador “equals” (=). Por ejemplo, protoPayload.methodName:compute.instances.delete muestra todas las llamadas a la API de eliminación de instancias, sin importar la versión. Para obtener más información sobre los operadores, consulta comparaciones.

¿Qué sigue?