Noções básicas sobre registros de auditoria

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

O Cloud Audit Logging mantém três registros de auditoria para cada projeto, pasta e organização:

  • Registros de auditoria de atividade do administrador
  • Registros de auditoria de acesso a dados
  • Registros de auditoria de evento do sistema

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, a pasta ou a organização proprietária da 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 registros de auditoria do Cloud, 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.

  • Um nome de 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 de atividade do administrador escrita pelo Resource Manager para registrar uma alteração em uma política do gerenciamento de identidade e acesso (IAM) com PROJECT_ID 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. Ele pode ser usado no Explorador de registros, 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
IAM 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 Explorador de registros no Console do Cloud para recuperar as entradas de registro de auditoria do projeto do Cloud:

  1. No Console do Cloud, acesse a página Logging > Explorador de registros.

    Acessar a página Logs Explorer (em inglês)

  2. Na página Explorador de registros, selecione um projeto do Cloud.

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

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

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

      • Para os registros de auditoria da atividade do administrador, selecione Atividade.
      • Para os registros de auditoria de acesso a dados, selecione data_access.
      • Para os registros de auditoria de eventos do sistema, selecione system_event.

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

    Para mais detalhes sobre como consultar usando o novo Explorador de registros, consulte Como criar consultas de registro.

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 suas entradas de registro de auditoria no nível do projeto do Google Cloud, execute o comando a seguir:

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

Para ler suas entradas de registro de auditoria no nível da pasta, execute o comando a seguir:

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 o seguinte comando:

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.

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 que você fornecer precisará fazer referência ao projeto do Cloud selecionado.

Para usar a API Logging para analisar suas entradas de registro de auditoria, siga estas instruções:

  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.

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.