Migrar de registros de actividad a registros de auditoría


Si usa registros de actividad para ver la actividad administrativa de Compute Engine y los eventos del sistema, lea esta guía para comprender cómo encontrar entradas de registro similares utilizando registros de auditoría .

Los registros de actividad de Compute Engine están obsoletos. Puede 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. Pero los registros de auditoría presentan la información de manera diferente en comparación con los registros de actividad. Por lo tanto, deberá ajustar sus consultas.

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

Para utilizar registros de auditoría en lugar de registros de actividad, ajuste sus consultas . Utilice los siguientes pasos.

  1. Encuentra tus consultas antiguas. Por ejemplo, es posible que los haya guardado en una búsqueda guardada en el Explorador de registros o haya creado un script utilizando la API o el SDK. Para obtener más información sobre cómo puede monitorear sus recursos, consulte la documentación de Registro .

  2. Reemplace los campos del registro de actividad con campos de registro de auditoría apropiados. Consulte la tabla para ver cómo se asignan los campos entre sí.

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

  3. Guarde y utilice su nueva consulta de registro de auditoría. Por ejemplo, cree una búsqueda guardada en Cloud Logging o actualice sus scripts.

Ejemplos

A continuación se muestran algunos ejemplos de consultas convertidas:

Consulta de actividad relacionada con un recurso específico

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

Utilice 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 "has" ( : ) coincide con todos los recursos de su proyecto que tienen un nombre que incluye VM_NAME . Con la opción 2, el operador "igual" ( = ) solo coincide con un recurso específico totalmente calificado con ese nombre.

Consulta de entradas recientes del registro de actividad del administrador

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

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

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

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

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

Consultar la finalización de cualquier operación.

Ejemplo de consulta
Registro de actividad heredado gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Registro de auditoría gcloud logging read operation.last="true"

Diferencias entre registros de actividad y registros de auditoría

Lea esta sección para saber cómo se estructuran los registros de auditoría de manera diferente a los registros de actividad. Tenga en cuenta estas diferencias al convertir consultas de registros de actividad heredados en consultas de registros de auditoría. Por ejemplo, en sus consultas, reemplace todos los nombres de los campos del registro de actividad heredado con los nombres de los campos del registro de auditoría correspondientes.

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

  • Diferentes nombres de campos. Consulte la tabla de asignación de nombres de campos para obtener más detalles.
  • Diferentes valores de campo, que incluyen:
    • 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 devuelven un campo protoPayload en lugar de 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 versionados: 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 que muestra diferencias en los nombres de registro 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"
  ...
}

Asignación de campos de registros de actividad a registros de auditoría

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

Campos

Utilice la siguiente tabla para reemplazar los campos de registro de actividad heredados con campos de registro de auditoría en sus consultas actualizadas.

Por ejemplo, si su consulta de registro de actividad heredada contenía un filtro basado en jsonPayload.resource.type , su 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

Utilice las siguientes tablas para asignar valores de campos de registro de actividad heredados a valores de campos 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 del registro de auditoría también devuelven nombres de recursos completos y nombres de métodos versionados.

Nombres de registro

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

Nombre de registro Contenido del registro
Registro de actividad heredado projects/ PROJECT_ID /logs/compute.googleapis.com%2Factivity_log Actividad de administrador y eventos del sistema
Registro de auditoría projects/ PROJECT_ID /logs/cloudaudit.googleapis.com%2Factivity Actividad administrativa
projects/ PROJECT_ID /logs/cloudaudit.googleapis.com%2Fsystem_event Eventos del sistema
projects/ PROJECT_ID /logs/cloudaudit.googleapis.com%2Fdata_access Acceso a datos

Cargas útiles

En cada entrada del registro de auditoría, busque protoPayload en lugar de jsonPayload .

Tipo de carga útil Ejemplo de carga útil
Registro de actividad heredado jsonPayload
    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ía protoPayload
    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 entre sí y cómo asignar campos de registro de actividad heredados a campos de registro de auditoría, lea Asignaciones de campos de entrada de registro .

Nombres de recursos

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

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

Aún puede usar nombres parciales, pero debe corregir su consulta para usar el operador "tiene" ( : ) en lugar del operador "igual".

Utilice una de las siguientes opciones en sus 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 API (en el campo protoPayload.methodName ) tienen el prefijo de su versión, como: v1.compute.instances.delete .

Campo Valor Ejemplo de consulta
Registro de actividad heredado jsonPayload.event_subtype RESOURCE . METHOD jsonPayload.event_subtype=compute.instances.delete
Registro de auditoría protoPayload.nombredelmétodo API_VERSION . RESOURCE . METHOD protoPayload.methodName=v1.compute.instances.delete
o
protoPayload.methodName=beta.compute.instances.delete
o
protoPayload.methodName:compute.instances.delete

Aún puede usar nombres de métodos no versionados en sus consultas de registro de auditoría, pero debe corregir su consulta para usar el operador "tiene" ( : ) en lugar del operador "igual" ( = ). Por ejemplo: protoPayload.methodName:compute.instances.delete devuelve todas las llamadas API de eliminación de instancias, independientemente de la versión. Para obtener más información sobre los operadores, consulte comparaciones .

¿Qué sigue?