Migrar de registos de atividade para registos de auditoria


Se usar registos de atividade para ver a atividade de administrador e os eventos do sistema do Compute Engine, leia este guia para compreender como encontrar entradas de registo semelhantes usando registos de auditoria.

Os registos de atividade do Compute Engine foram descontinuados. Pode identificar as entradas do registo de atividade com base no respetivo nome do registo:

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

Os registos de auditoria do Compute Engine contêm as mesmas informações que estão disponíveis através dos registos de atividade e muito mais. No entanto, os registos de auditoria apresentam as informações de forma diferente em comparação com os registos de atividade. Por isso, tem de ajustar as suas consultas.

Como migrar de registos de atividade para registos de auditoria

Para usar registos de auditoria em vez de registos de atividade, ajuste as suas consultas. Siga os passos seguintes.

  1. Encontre as suas consultas antigas. Por exemplo, pode tê-los guardado numa pesquisa guardada no Explorador de registos ou criado um script através da API ou do SDK. Para mais informações sobre como pode monitorizar os seus recursos, consulte a documentação de registo.

  2. Substitua os campos do registo de atividade pelos campos do registo de auditoria adequados. Consulte a tabela para ver como os campos são mapeados entre si.

    Por exemplo, se a sua consulta do registo de atividade antigo procurava um campo denominado jsonPayload.resource.name, a nova consulta do registo de auditoria deve procurar protoPayload.resourceName.

  3. Guarde e use a nova consulta do registo de auditoria. Por exemplo, crie uma pesquisa guardada no Cloud Logging ou atualize os seus scripts.

Exemplos

Seguem-se alguns exemplos de consultas convertidas:

Consultar atividade relacionada com um recurso específico

Exemplo de consulta
Registo de atividade antigogcloud logging read jsonPayload.resource.name="VM_NAME"
Registo de auditoria

Use uma das seguintes opções

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

Com a opção 1, o operador "tem" (:) corresponde a todos os recursos no seu projeto que tenham um nome que inclua VM_NAME. Com a opção 2, o operador "igual a" (=) corresponde apenas a um recurso totalmente qualificado específico com esse nome.

Consultar entradas recentes do registo de atividade de administrador

Exemplo de consulta
Registo de atividade antigogcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Registo de auditoriagcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Consultar entradas do registo de criação de instâncias recentes

Exemplo de consulta
Registo de atividade antigogcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"'
Registo de auditoriagcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"'

Consultar o início de todas as operações de criação de instâncias

Exemplo de consulta
Registo de atividade antigogcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"'
Registo de auditoriagcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"'

Consultar a conclusão de qualquer operação

Exemplo de consulta
Registo de atividade antigogcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Registo de auditoriagcloud logging read operation.last="true"

Diferenças entre os registos de atividade e os registos de auditoria

Leia esta secção para saber como os registos de auditoria estão estruturados de forma diferente dos registos de atividade. Tenha em atenção estas diferenças ao converter consultas do registo de atividade antigo em consultas do registo de auditoria. Por exemplo, nas suas consultas, substitua todos os nomes dos campos do registo de atividade antigo pelos nomes dos campos do registo de auditoria correspondentes.

Embora o registo de auditoria e o registo de atividade devolvam objetos de entrada de registo, têm as seguintes diferenças:

  • Nomes de campos diferentes. Consulte a tabela de mapeamento de nomes de campos para ver detalhes.
  • Valores de campos diferentes, incluindo:
    • Nomes de registos diferentes: os registos de auditoria têm nomes de registos que contêm cloudaudit.googleapis.com.
    • Diferentes conteúdos úteis: os registos de auditoria devolvem um campo protoPayload em vez de um jsonPayload.
    • Nomes de recursos totalmente qualificados: os registos de auditoria devolvem nomes de recursos que incluem o respetivo caminho, por exemplo: projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Nomes de métodos com versões: os registos de auditoria devolvem nomes de métodos que incluem a respetiva versão, por exemplo, v1.

Segue-se um exemplo que mostra as diferenças nos nomes dos registos e nos payloads:

Exemplo de entrada do registo
Registo de atividade antigo
{
  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"
  ...
}
Registo de auditoria
{
  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"
  ...
}

Mapeamento de campos de registos de atividade para registos de auditoria

Use as tabelas seguintes para mapear os campos do registo de atividade com os campos do registo de auditoria correspondentes nas suas consultas.

Campos

Use a tabela seguinte para substituir os campos do registo de atividade antigo pelos campos do registo de auditoria nas suas consultas atualizadas.

Por exemplo, se a sua consulta do registo de atividade antigo contivesse um filtro com base em jsonPayload.resource.type, a nova consulta do registo de auditoria deve filtrar com base em resource.type.

Campo do registo de atividade antigo Campo do registo de auditoria
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 Uma das seguintes opções:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

Valores dos campos

Use as tabelas seguintes para mapear os valores dos campos do registo de atividade antigo para os valores dos campos do registo de auditoria. Em comparação com os registos de atividade, os registos de auditoria têm vários valores de nome do registo e valores de carga útil diferentes. As entradas do registo de auditoria também devolvem nomes de recursos totalmente qualificados e nomes de métodos com versões.

Nomes de registos

Para encontrar uma entrada do registo de auditoria, procure um logName que inclua cloudaudit.googleapis.com.

Nome de registoConteúdos de registos
Registo de atividade antigoprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logAtividade do administrador e eventos do sistema
Registo de auditoriaprojects/PROJECT_ID/logs/cloudaudit.googleapis.com%2FactivityAtividade do administrador
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_eventEventos do sistema
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_accessAcesso aos dados

Payloads

Em cada entrada do registo de auditoria, procure um protoPayload em vez de um jsonPayload.

Tipo de payloadExemplo de payload
Registo de atividade antigojsonPayload
    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"
    }
Registo de auditoriaprotoPayload
    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 como estes payloads se relacionam entre si e como mapear os campos do registo de atividade antigos para os campos do registo de auditoria, leia os mapeamentos de campos de entradas de registo.

Nomes de recursos

Nos registos de auditoria, os nomes dos recursos da API (no campo protoPayload.resourceName) são totalmente qualificados, por exemplo:

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

Pode continuar a usar nomes parciais, mas tem de corrigir a sua consulta para usar o operador "has" (:) em vez do operador "equals".

Use uma das seguintes opções nas suas consultas do registo de auditoria para filtrar um recurso específico:

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

Nomes dos métodos

Nos registos de auditoria, os nomes dos métodos da API (no campo protoPayload.methodName) têm o prefixo da respetiva versão, como: v1.compute.instances.delete.

CampoValorExemplo de consulta
Registo de atividade antigojsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Registo de auditoriaprotoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete
ou
protoPayload.methodName=beta.compute.instances.delete
ou
protoPayload.methodName:compute.instances.delete

Ainda pode usar nomes de métodos sem versão nas suas consultas de registo de auditoria, mas tem de corrigir a consulta para usar o operador "has" (:) em vez do operador "equals" (=). Por exemplo: protoPayload.methodName:compute.instances.delete devolve todas as chamadas da API de eliminação de instâncias, independentemente da versão. Para mais informações sobre os operadores, consulte as comparações.

O que se segue?