Migrando de logs de atividades para logs de auditoria


Se você usa registros de atividades para visualizar atividades administrativas e eventos do sistema do Compute Engine, leia este guia para entender como encontrar entradas de registro semelhantes usando registros de auditoria .

Os registros de atividades do Compute Engine estão obsoletos. Você pode identificar entradas do log de atividades com base no nome do log:

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

Os registros de auditoria do Compute Engine contêm as mesmas informações disponíveis nos registros de atividades e muito mais. Mas os registos de auditoria apresentam as informações de forma diferente em comparação com os registos de atividades. Portanto, você precisará ajustar suas consultas.

Como migrar de registros de atividades para registros de auditoria

Para usar registros de auditoria em vez de registros de atividades, ajuste suas consultas . Use as etapas a seguir.

  1. Encontre suas consultas antigas. Por exemplo, você pode tê-los salvo em uma pesquisa salva no Logs Explorer ou criado um script usando a API ou o SDK. Para obter mais informações sobre como você pode monitorar seus recursos, consulte a documentação do Logging .

  2. Substitua os campos do log de atividades pelos campos apropriados do log de auditoria. Consulte a tabela para ver como os campos são mapeados entre si.

    Por exemplo, se sua consulta de log de atividades herdada procurou um campo chamado jsonPayload.resource.name , sua nova consulta de log de auditoria deverá procurar protoPayload.resourceName .

  3. Salve e use sua nova consulta de log de auditoria. Por exemplo, crie uma pesquisa salva no Cloud Logging ou atualize seus scripts.

Exemplos

Aqui estão alguns exemplos de consultas convertidas:

Consultando atividades relacionadas a um recurso específico

Exemplo de consulta
Registro de atividades legado gcloud logging read jsonPayload.resource.name=" VM_NAME "
Registro 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 "has" ( : ) corresponde a todos os recursos do seu projeto que possuem um nome que inclui VM_NAME . Com a opção 2, o operador "equals" ( = ) corresponde apenas a um recurso específico totalmente qualificado com esse nome.

Consultando entradas recentes do log de atividades do administrador

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

Consultando entradas de log de criação de instância recentes

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

Consultando o início de todas as operações de criação de instância

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

Consultando a conclusão de qualquer operação

Exemplo de consulta
Registro de atividades legado gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Registro de auditoria gcloud logging read operation.last="true"

Diferenças entre logs de atividades e logs de auditoria

Leia esta seção para saber como os logs de auditoria são estruturados de forma diferente dos logs de atividades. Lembre-se dessas diferenças ao converter consultas de log de atividades herdadas em consultas de log de auditoria. Por exemplo, em suas consultas, substitua todos os nomes de campos de log de atividades herdados pelos nomes de campos de log de auditoria correspondentes.

Embora o registro em log de auditoria e o registro em log de atividades retornem objetos de entrada de log , eles têm as seguintes diferenças:

  • Nomes de campos diferentes. Consulte a tabela de mapeamento de nomes de campos para obter detalhes.
  • Diferentes valores de campo, incluindo:
    • Nomes de registro diferentes: os registros de auditoria têm nomes de registro que contêm cloudaudit.googleapis.com .
    • Cargas diferentes: os logs de auditoria retornam um campo protoPayload em vez de um jsonPayload .
    • Nomes de recursos totalmente qualificados: os logs de auditoria retornam nomes de recursos que incluem seu caminho, por exemplo: projects/my-project/zones/us-east1-b/instances/my-instance-name .
    • Nomes de métodos com versão: os logs de auditoria retornam nomes de métodos que incluem sua versão, por exemplo, v1 .

Aqui está um exemplo que mostra diferenças em nomes de log e cargas úteis:

Exemplo de entrada de log
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"
  ...
}

Mapeando campos de logs de atividades para logs de auditoria

Use as tabelas a seguir para mapear campos de log de atividades para campos de log de auditoria correspondentes em suas consultas.

Campos

Use a tabela a seguir para substituir campos de log de atividades herdados por campos de log de auditoria em suas consultas atualizadas.

Por exemplo, se sua consulta de log de atividades herdada contivesse um filtro baseado em jsonPayload.resource.type , sua nova consulta de log de auditoria deveria filtrar em resource.type .

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

Use as tabelas a seguir para mapear valores de campos de log de atividades herdados para valores de campos de log de auditoria. Em comparação com os registos de atividades, os registos de auditoria têm vários valores de nome de registo e diferentes valores de carga útil . As entradas do log 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 registro Conteúdo do registro
Registro de atividades legado projects/ PROJECT_ID /logs/compute.googleapis.com%2Factivity_log Atividade administrativa e eventos do sistema
Registro de auditoria projects/ PROJECT_ID /logs/cloudaudit.googleapis.com%2Factivity Atividade administrativa
projects/ PROJECT_ID /logs/cloudaudit.googleapis.com%2Fsystem_event Eventos do sistema
projects/ PROJECT_ID /logs/cloudaudit.googleapis.com%2Fdata_access Acesso a dados

Cargas úteis

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

Tipo de carga útil Exemplo de carga útil
Registro de atividades legado 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 auditoria 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 como essas cargas se relacionam entre si e como mapear campos de log de atividades legados para campos de log de auditoria, leia mapeamentos de campos de entrada de log .

Nomes de recursos

Nos logs 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"

Você ainda pode usar nomes parciais, mas deve corrigir sua consulta para usar o operador "has" ( : ) em vez do operador "equals".

Use uma das seguintes opções em suas consultas de log 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 de métodos

Nos logs de auditoria, os nomes dos métodos de API (no campo protoPayload.methodName ) são prefixados com sua versão, como: v1.compute.instances.delete .

Campo Valor Exemplo de consulta
Registro de atividades legado jsonPayload.event_subtype RESOURCE . METHOD jsonPayload.event_subtype=compute.instances.delete
Registro de auditoria protoPayload.methodName API_VERSION . RESOURCE . METHOD protoPayload.methodName=v1.compute.instances.delete
ou
protoPayload.methodName=beta.compute.instances.delete
ou
protoPayload.methodName:compute.instances.delete

Você ainda pode usar nomes de métodos não versionados em suas consultas de log de auditoria, mas deve corrigir sua consulta para usar o operador "has" ( : ) em vez do operador "equals" ( = ). Por exemplo: protoPayload.methodName:compute.instances.delete retorna todas as chamadas de API de exclusão de instância, independentemente da versão. Para obter mais informações sobre operadores, consulte comparações .

O que vem a seguir