Noções básicas sobre registros de auditoria

Nesta página, descrevemos as entradas de registro de auditoria em detalhes: a estrutura delas, como lê-las e interpretá-las.

Os registros de auditoria do Cloud mantém três registros para cada projeto, pasta e organização do Google Cloud:

  • Registros de auditoria de evento do sistema
  • Registros de auditoria das atividades do administrador
  • Registros de auditoria de acesso a dados

Para uma visão geral dos registros do Cloud Audit, consulte Cloud Audit Logs.

Formato das entradas de registro de auditoria

Uma entrada de registro de auditoria é um tipo de entrada de registro do Cloud Logging. Assim como todas as entradas de registro do Logging, uma entrada de registro de auditoria é armazenada em um objeto LogEntry. O que distingue uma entrada de registro de auditoria de outras entradas de registro é o campo protoPayload. Em entradas de registro de auditoria, o campo protoPayload da entrada de registro contém um objeto AuditLog que armazena os dados de registro de auditoria.

Em resumo, toda entrada de registro de auditoria é caracterizada pelas seguintes informações:

  • O projeto ou organização que tem a entrada de registro.
  • O recurso a que a entrada de registro se aplica. Esta informação consiste em um tipo de recurso da Lista de recursos monitorados (em inglês) e outros valores que denotam uma instância específica. Por exemplo, é possível ver as entradas de registro de auditoria de uma única instância de VM do Compute Engine ou de todas as instâncias de VM.
  • Um carimbo de data/hora.
  • Um Serviço: os Serviços são produtos individuais do Google Cloud, como o Compute Engine, o Cloud SQL ou o Pub/Sub. Cada serviço é identificado pelo nome: Compute Engine é compute.googleapis.com, Cloud SQL é cloudsql.googleapis.com e assim por diante. Essas informações são listadas no campo protoPayload.serviceName da entrada de registro de auditoria.

    Os tipos de recursos pertencem a um único serviço, mas um serviço pode ter vários tipos de recursos. Para ver uma lista de serviços e recursos, acesse Como mapear serviços para recursos.

  • Um payload, que é o tipo protoPayload. O payload de cada entrada de registro de auditoria é um objeto do tipo AuditLog, que define um conjunto de campos específicos para geração de registros de auditoria, como serviceName e authenticationInfo. Ele também tem um campo opcional, serviceData, que alguns serviços do Google Cloud Platform usam para listar informações específicas do serviço na entrada de registro de auditoria. Consulte Dados de auditoria específicos do serviço para uma lista dos serviços do Google Cloud que usam esse campo.

  • Nome do registro: as entradas de registro de auditoria pertencem a registros em projetos, pastas e organizações. Os nomes dos registros estão listados abaixo:

   projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
   projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

   folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Factivity
   folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

   organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Factivity
   organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

Em um projeto, pasta ou organização, esses nomes de registro geralmente são abreviados como activity, data_access e system_event.

Exemplo de entrada de registro de auditoria

Nesta seção, usamos um exemplo de entrada de registro de auditoria para explicar como encontrar as informações mais importantes.

O exemplo a seguir é uma entrada de registro de auditoria das atividades do administrador escrita pelo Resource Manager para registrar uma alteração em uma política do Cloud Identity and Access Management em um projeto do Google Cloud designado my-gcp-project-id. Por praticidade, omitimos algumas partes da entrada de registro e destacamos os campos importantes.

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "appengine.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.appengine.legacy.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "gae_app",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2019-05-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

Veja a seguir a consulta usada para selecionar o exemplo de entrada de registro de auditoria acima. Ela pode ser usada no Visualizador de registros avançado, na API Logging ou no SDK do Cloud. O identificador do projeto está no nome do registro e a consulta é rápida porque o campo logName está indexado:

    resource.type = "gae_app"
    logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"

Ao procurar registros de auditoria de uma única instância de um tipo de recurso, como gce_instance, inclua um qualificador de instância:

    resource.type = "gce_instance"
    resource.instance_id = "[INSTANCE_ID]/
    logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"

Como interpretar o exemplo de entrada de registro de auditoria

No exemplo de entrada de registro de auditoria acima, os campos protoPayload, insertId, resource, timestamp, severity e logName mostrados são parte do o objeto LogEntry. O valor do campo protoPayload é um objeto AuditLog. Ele armazena os dados do registro de auditoria.

Você poderá ter as seguintes dúvidas ao observar o exemplo de entrada de registro de auditoria acima:

  • Trata-se de uma entrada de registro de auditoria? Sim, e há duas maneiras de identificar isso.

    • O campo protoPayload.@type é type.googleapis.com/google.cloud.audit.AuditLog.

    • O campo logName inclui o domínio cloudaudit.googleapis.com.

  • Qual serviço gravou o registro de auditoria? O registro foi gravado pelo App Engine. Essas informações são listadas no campo protoPayload.serviceName da entrada de registro de auditoria.

  • Qual operação está sendo auditada? SetIamPolicy, conforme especificado no campo protoPayload.methodName, está sendo auditado. Para mais informações sobre a operação auditada, consulte o objeto AuditData em protoPayload.serviceData.

  • Qual recurso está sendo auditado? Um aplicativo em execução no App Engine, associado a um projeto do Google Cloud my-gcp-project-id, está sendo auditado. É possível determinar isso a partir do campo resource, que especifica o tipo de recurso gae_app e o identificador do projeto my-gcp-project-id. Neste exemplo, você encontrará detalhes sobre o tipo de recurso na lista tipos de recursos monitorados.

Para mais informações, consulte os tipos LogEntry, AuditLog e AuditData do IAM.

Entradas de registro de auditoria grandes ou de longa duração

Uma única operação auditada será dividida em várias entradas de registro se for executada de maneira assíncrona ou gerar um registro AuditLog grande. Quando uma única operação tem mais de uma entrada de registro, o objeto LogEntry contém um campo operation e as entradas têm o mesmo valor de LogEntry.operation.id e LogEntry.operation.producer.

No exemplo de entrada de registro de auditoria anterior, o campo operation não existe, o que significa que todas as informações de auditoria estão contidas em uma única entrada de registro.

Dados de auditoria específicos do serviço

Alguns serviços estendem as informações armazenadas no AuditLog, colocando uma estrutura de dados suplementar no campo serviceData do log de auditoria. A tabela a seguir lista os serviços que usam o campo serviceData e fornece um link para o tipo AuditData.

Serviço Tipo de dados do serviço
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (legado) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData

Como ver registros de auditoria

Para encontrar e visualizar registros de auditoria, é preciso saber o identificador do projeto, da pasta ou da organização do Google Cloud. É possível especificar outros campos LogEntry indexados, como resource.type. Para detalhes, acesse Como encontrar entradas de registro rapidamente.

Veja a seguir os nomes dos registros de auditoria que incluem variáveis para os identificadores do projeto, da pasta ou da organização do Cloud.

   projects/project-id/logs/cloudaudit.googleapis.com%2Factivity
   projects/project-id/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/project-id/logs/cloudaudit.googleapis.com%2Fsystem_event

   folders/folder-id/logs/cloudaudit.googleapis.com%2Factivity
   folders/folder-id/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/folder-id/logs/cloudaudit.googleapis.com%2Fsystem_event

   organizations/organization-id/logs/cloudaudit.googleapis.com%2Factivity
   organizations/organization-id/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/organization-id/logs/cloudaudit.googleapis.com%2Fsystem_event

Você tem várias opções para ver as entradas de registro de auditoria.

Console

Use o visualizador de registros no Console do Cloud para recuperar as entradas de registro de auditoria para o projeto do Google Cloud.

  1. No Console do Cloud, acesse a página Cloud Logging > Registros (Visualizador de registros).

    Acesse a página "Visualizador de registros"

  2. Na versão clássica, selecione Visualizar o novo visualizador de registros.

  3. Selecione um projeto do Cloud existente.

  4. No painel Criador de consultas, faça o seguinte:

    • Em Recurso, selecione o tipo de recurso do Google Cloud cujos registros de auditoria você quer ver.

    • Em Nome do registro, selecione o tipo de registro de auditoria que você quer ver:

    • Para registros de auditoria de atividade do administrador, selecione activity.

    • Para registros de auditoria de acesso a dados, selecione data_access.

    • Para registros de auditoria de eventos do sistema, selecione system_events.

    Se você não vir essas opções, não há registros de auditoria desse tipo disponíveis no projeto do Cloud.

    Para mais detalhes sobre como consultar usando o novo Visualizador de registros, consulte Como criar consultas de registro (visualização).

API

Ao criar consultas, substitua as variáveis por valores válidos, bem como nomes ou identificadores dos registros de auditoria adequados a nível do projeto, da pasta ou da organização, conforme listado nos nomes dos registros de auditoria. Por exemplo, se a consulta incluir um project-id, o identificador do projeto fornecido precisará fazer referência ao projeto do Cloud selecionado no momento.

Para analisar as entradas de registro de auditoria usando a API de Logging, faça o seguinte:

  1. Acesse a seção Testar esta API da documentação do método entries.list.

  2. Digite o seguinte na parte do Corpo da solicitação do formulário Teste esta API. Clique nesse formulário preenchido automaticamente para preencher automaticamente o corpo da solicitação, mas é necessário inserir um project-id válido em cada um dos nomes de registro.

    {
      "resourceNames": [
        "projects/project-id"
      ],
      "pageSize": 5,
      "filter": "logName : projects/project-id/logs/cloudaudit.googleapis.com"
    }
    
  3. Clique em Executar.

Para mais detalhes sobre consultas, acesse Linguagem de consulta do Logging.

gcloud

A ferramenta de linha de comando gcloud fornece à API Cloud Logging uma interface de linha de comando. Insira um project-id, folder-id ou organization-id válido em cada um dos nomes de registro.

Para ler as entradas de registro de auditoria no nível do projeto do Google Cloud, execute:

gcloud logging read "logName : projects/project-id/logs/cloudaudit.googleapis.com" --project=project-id

Para ler as entradas de registro de auditoria no nível da pasta, execute:

gcloud logging read "logName : folders/folder-id/logs/cloudaudit.googleapis.com" --folder=folder-id

Para ler as entradas de registro de auditoria no nível da organização, execute:

gcloud logging read "logName : organizations/organization-id/logs/cloudaudit.googleapis.com" --organization=organization-id

Para mais informações sobre como usar a ferramenta gcloud, consulte Como ler entradas de registro.

Para ver um exemplo de entrada de registro de auditoria e instruções sobre como encontrar as informações mais importantes nesse registro, acesse Noções básicas sobre registros de auditoria.

Para saber mais sobre como localizar registros de auditoria usando o Visualizador de registros, incluindo dicas sobre a sintaxe da consulta, acesse Visualização de registros.