Migrar de registros de actividad a registros de auditoría


Si usas registros de actividad para ver la actividad de administrador y los eventos del sistema de Compute Engine, consulta esta guía para saber cómo encontrar entradas de registro similares con registros de auditoría.

Los registros de actividad de Compute Engine están obsoletos. Puedes identificar las entradas de registro de actividad por 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 en los registros de actividad, y más. Sin embargo, los registros de auditoría presentan la información de forma diferente a los registros de actividad. Por lo tanto, tendrás que ajustar tus consultas.

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

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

  1. Busca tus consultas antiguas. Por ejemplo, puede que los hayas guardado en una búsqueda guardada en el Explorador de registros o que hayas creado una secuencia de comandos con la API o el SDK. Para obtener más información sobre cómo monitorizar tus recursos, consulta la documentación de registro.

  2. Sustituye los campos del registro de actividad por los campos del registro de auditoría correspondientes. Consulta la tabla para ver cómo se asignan los campos entre sí.

    Por ejemplo, si tu consulta del registro de actividad antiguo buscaba un campo llamado jsonPayload.resource.name, tu nueva consulta del registro de auditoría debería buscar protoPayload.resourceName.

  3. Guarda y usa tu nueva consulta de registro de auditoría. Por ejemplo, puedes crear una búsqueda guardada en Cloud Logging o actualizar tus secuencias de comandos.

Ejemplos

Estos son algunos ejemplos de consultas convertidas:

Consultar la actividad relacionada con un recurso específico

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

Usa una de las siguientes opciones

  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 "tiene" (:) coincide con todos los recursos de tu proyecto que tengan un nombre que incluya VM_NAME. Con la opción 2, el operador "es igual a" (=) solo coincide con un recurso específico totalmente cualificado con ese nombre.

Consultar entradas recientes del registro de actividad del administrador

Ejemplo de consulta
Registro de actividad antiguogcloud 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"

Consultar entradas de registro de creación de instancias recientes

Ejemplo de consulta
Registro de actividad antiguogcloud 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"'

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

Ejemplo de consulta
Registro de actividad antiguogcloud 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"'

Consultar si se ha completado alguna operación

Ejemplo de consulta
Registro de actividad antiguogcloud 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

Lee esta sección para saber cómo se estructuran los registros de auditoría de forma diferente a los registros de actividad. Ten en cuenta estas diferencias al convertir las consultas del registro de actividad antiguo en consultas del registro de auditoría. Por ejemplo, en tus consultas, sustituye todos los nombres de campos de registros de actividad antiguos por los nombres de campos de registros de auditoría correspondientes.

Aunque los registros de auditoría y de actividad devuelven objetos LogEntry, tienen las siguientes diferencias:

  • Nombres de campo diferentes. Consulta la tabla de asignación de nombres de campos para obtener más información.
  • Diferentes valores de campo, entre los que se incluyen los siguientes:
    • Diferentes nombres de registro: los registros de auditoría tienen nombres que contienen cloudaudit.googleapis.com.
    • Diferentes cargas útiles: los registros de auditoría devuelven un campo protoPayload en lugar de un jsonPayload.
    • Nombres de recursos completos: los registros de auditoría devuelven nombres de recursos que incluyen su 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 devuelven nombres de métodos que incluyen su versión, por ejemplo, v1.

A continuación, se muestra un ejemplo de las diferencias en los nombres de los registros y las cargas útiles:

Ejemplo de entrada de registro
Registro de actividad antiguo
{
  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"
  ...
}

Asignar campos de registros de actividad a registros de auditoría

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

Campos

Usa la siguiente tabla para sustituir los campos del registro de actividad antiguo por los campos del registro de auditoría en las consultas actualizadas.

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

Campo de registro de actividad antiguo Campo del 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 los siguientes valores:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

Valores de campo

Use las siguientes tablas para asignar los valores de los campos del registro de actividad antiguo a los valores de los campos del 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 del registro de auditoría también devuelven nombres de recursos completos 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 antiguoprojects/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 de 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 del registro de auditoría, busca protoPayload en lugar de jsonPayload.

Tipo de carga útilEjemplo de carga útil
Registro de actividad antiguojsonPayload
    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 campos de registro de actividad antiguos a campos de registro de auditoría, consulta Asignaciones de 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 completos. Por ejemplo:

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

Puedes seguir usando nombres parciales, pero debes corregir tu consulta para usar el operador "has" (:) en lugar del operador "equals".

Usa una de las siguientes opciones en tus consultas de registro de auditoría para filtrar por 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 la API (en el campo protoPayload.methodName) tienen como prefijo su versión, como v1.compute.instances.delete.

CampoValorEjemplo de consulta
Registro de actividad antiguojsonPayload.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

Puedes seguir usando nombres de métodos sin versión en tus 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 devuelve todas las llamadas a la API de eliminación de instancias, independientemente de la versión. Para obtener más información sobre los operadores, consulta las comparaciones.

Siguientes pasos