Como migrar de registros de atividades para registros de auditoria

Se você usa os registros de atividades para visualizar a atividade de administração do Compute Engine e os eventos do sistema, leia este guia para entender como encontrar entradas de registro semelhantes usando os registros de auditoria.

Os registros de atividades do Compute Engine estão obsoletos. É possível identificar entradas de registro de atividades com base no nome de registro:

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

Os registros de auditoria do Compute Engine têm as mesmas informações disponíveis nos registros de atividades e muito mais. No entanto, os registros de auditoria têm uma maneira diferente de exibir as informações em comparação com os registros de atividades. Portanto, você precisará ajustar suas consultas.

Como migrar dos registros de atividades para os registros de auditoria

Para usar os registros de auditoria ao invés dos registros de atividades, ajuste as consultas. Siga estas etapas:

  1. Encontre suas consultas antigas. Por exemplo, é possível que você as tenha salvo em uma pesquisa salva no visualizador de registros ou criado um script usando a API ou o SDK. Para mais informações sobre como monitorar seus recursos, consulte a documentação do Logging.

  2. Substitua os campos do registro de atividades pelos campos do registro de auditoria adequados. Consulte a tabela para ver como os campos são mapeados.

    Por exemplo, se a consulta de registro de atividades legado procurou um campo chamado jsonPayload.resource.name, a nova consulta de registro de auditoria deve procurar protoPayload.resourceName.

  3. Salve e use a nova consulta de registro de auditoria. Por exemplo, crie uma pesquisa salva no Cloud Logging ou atualize os scripts.

Exemplos

Confira alguns exemplos de consultas convertidas:

Consulta de atividades relacionadas a um recurso específico

Exemplo de consulta
Registro de atividades legadogcloud logging read jsonPayload.resource.name="INSTANCE_NAME"
Registro de auditoria

Use uma das seguintes opções:

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

Com a opção 1, o operador "has" (:) corresponde a todos os recursos no projeto que têm um nome que inclui INSTANCE_NAME. Com a opção 2, o operador "igual a" (=) corresponde somente a um recurso totalmente qualificado específico com esse nome.

Como consultar entradas recentes de registro de atividades do administrador

Exemplo de consulta
Registro de atividades legadogcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Registro de auditoriagcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Como consultar entradas recentes de registro de criação de instâncias

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

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

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

Como consultar a conclusão de qualquer operação

Exemplo de consulta
Registro de atividades legadogcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Registro de auditoriagcloud logging read operation.last="true"

Diferenças entre registros de atividades e registros de auditoria

Nesta seção, você entenderá como os registros de auditoria são estruturados de maneira diferente dos registros de atividades. Considere essas diferenças ao converter as consultas do registro de atividades legado em consultas do registro de auditoria. Por exemplo, nas consultas, substitua todos os nomes do campo do registro de atividades legado pelos nomes do campo do registro de auditoria correspondentes.

Embora a geração de registros de auditoria e de atividades retornem objetos da entrada de registro, eles têm as seguintes diferenças:

  • Nomes de campos diferentes. Para mais detalhes, consulte a tabela de mapeamento de nome de campo.
  • valores de campo diferentes, incluindo:
    • Diferentes nomes de registros: os registros de auditoria têm nomes de registros que contêm cloudaudit.googleapis.com.
    • Payloads diferentes: os registros de auditoria retornam um campo protoPayload em vez de um jsonPayload.
    • Nomes de recursos totalmente qualificados: os registros de auditoria retornam nomes de recursos que incluem o caminho deles, como projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Nomes de métodos com controle de versão: os registros de auditoria retornam nomes de métodos que incluem a versão deles, como v1.

Confira um exemplo que mostra as diferenças nos nomes de registro e nos payloads:

Exemplo de entrada de registro
Registro de atividades legado

{
  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 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"
  ...
}

Como mapear campos dos registros de atividades para os registros de auditoria

Use as tabelas a seguir para mapear os campos de registro de atividades para os campos de registro de auditoria correspondentes nas consultas.

Campos

Use a tabela a seguir para substituir campos de registro de atividades legadas por campos de registro de auditoria nas consultas atualizadas.

Por exemplo, se a consulta do registro de atividades legado continha um filtro baseado em jsonPayload.resource.type, a nova consulta de registro de auditoria deve filtrar por resource.type.

Campo do registro de atividades legado Campo do registro 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 de campo

Use as tabelas a seguir para mapear valores de campo de registro de atividades legado para valores de campo de registro de auditoria. Em comparação com os registros de atividade, os registros de auditoria têm vários valores de nome de registro e diferentes valores de payload. Entradas de registro de auditoria também retornam nomes de recursos totalmente qualificados e nomes de métodos com controle de versão.

Nomes de registro

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

Nome do registroConteúdo do registro
Registro de atividades legadoprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logAtividade do administrador e eventos do sistema
Registro de auditoriaprojects/PROJECT_ID/logs/cloudaudit.googleapis.com%2FactivityAtividade administrativa
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_eventEventos do sistema
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_accessAcesso a dados

Payloads

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

Tipo de payloadExemplo de payload
Registro de atividades legadojsonPayload

    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 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 esses payloads se relacionam uns com os outros e como mapear campos de registros de atividades legados para campos de registros de auditoria, leia sobre o mapeamento de campos de entrada de registro.

Nomes de recurso

Nos registros de auditoria, os nomes de recursos da API, no campo protoPayload.resourceName, são totalmente qualificados. Por exemplo:

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

Ainda é possível usar nomes parciais, mas você precisa corrigir a consulta para usar o operador "contém" (:) em vez do operador "igual a".

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

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

Nomes de método

Nos registros de auditoria, os nomes de método de API (no campo protoPayload.methodName) são prefixados com a versão, como v1.compute.instances.delete.

CampoValorExemplo de consulta
Registro de atividades legadojsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Registro de auditoriaprotoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete
ou
protoPayload.methodName=beta.compute.instances.delete
ou
protoPayload.methodName:compute.instances.delete

É possível continuar usando nomes de método sem controle de versões nas consultas de registro de auditoria, mas você precisa corrigir a consulta para usar o operador "contém" (:) em vez do operador "igual a" (=). Por exemplo: protoPayload.methodName:compute.instances.delete retorna todas as chamadas de API de exclusão de instância, independentemente da versão. Para mais informações sobre operadores, consulte as comparações.

A seguir