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.

Os Registros de auditoria do Cloud fornecem os seguintes registros de auditoria para cada projeto, pasta e organização do Google Cloud:

  • Registros de auditoria de atividade do administrador
  • Registros de auditoria de acesso a dados
  • Registros de auditoria de eventos do sistema
  • Registros de auditoria de política negada

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, metadata, que os serviços do Google Cloud usam para listar informações específicas de serviços na entrada de registro de auditoria. Alguns serviços do Google Cloud ainda usam o campo serviceData mais antigo para listar informações específicas do serviço. Para ver uma lista de serviços que usam o campo serviceData, consulte Dados de auditoria específicos do serviço.

  • 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
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   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
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   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
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

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

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 atividades do administrador escrita pelo App Engine para registrar uma alteração em uma política do Identity and Access Management (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 na Análise de registros, na API Logging ou na Google Cloud CLI. 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

É possível consultar todos os registros de auditoria ou fazer consultas individuais pelo nome do registro de auditoria. O nome do registro de auditoria inclui o identificador de recurso do projeto, da pasta, da conta de faturamento ou da organização do Google Cloud com as informações de registro de auditoria que você quer consultar. Suas consultas podem especificar campos LogEntry indexados e, se você usar a página Análise de dados de registros, que é compatível com consultas SQL, será possível conferir os resultados da consulta como um gráfico.

Para mais informações sobre como consultar seus registros, consulte as seguintes páginas:

É possível conferir os registros de auditoria no Cloud Logging usando o console do Google Cloud, a CLI do Google Cloud ou a API Logging.

Console

No Console do Google Cloud, é possível usar a Análise de Registros para recuperar as entradas de registro de auditoria do projeto do Google Cloud, da pasta ou da organização:

  1. No painel de navegação do console do Google Cloud, selecione Logging e clique em Análise de registros:

    Acessar a Análise de registros

  2. Selecione um projeto do Google Cloud, uma pasta ou uma organização.

  3. Para exibir todos os registros de auditoria, insira uma das seguintes consultas no campo do editor de consultas e clique em Executar consulta:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Para exibir os registros de auditoria de um recurso e tipo de registro específicos, no painel Criador de consultas, faça o seguinte:

    • Em Tipo de recurso, selecione o recurso do Google Cloud com os registros de auditoria que você quer consultar.

    • Em Nome do registro, selecione o tipo de registro de auditoria que você quer consultar.

      • 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.
      • Em "Registros de auditoria de política negada", selecione policy.
    • Clique em Executar consulta.

    Se você não encontrar essas opções, isso significa que não há registros de auditoria desse tipo disponíveis no projeto do Google Cloud, na pasta ou na organização.

    Se você estiver com problemas para conferir registros na Análise de registros, consulte as informações de solução de problemas.

    Para mais informações sobre como consultar usando a Análise de Registros, consulte Criar consultas na Análise de Registros. Para informações sobre como resumir entradas de registro na Análise de registros usando o Duet AI, consulte Resumir entradas de registro com assistência do Duet AI.

gcloud

A Google Cloud CLI fornece uma interface de linha de comando para a API Logging. Insira um identificador de recurso válido em cada um dos nomes de registro. Por exemplo, se a consulta incluir um PROJECT_ID, o identificador do projeto que você fornecer precisará fazer referência ao projeto do Google Cloud selecionado.

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 este comando:

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

Para ler as entradas de registro de auditoria na conta do Cloud Billing, execute este comando:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Adicione a sinalização --freshness ao comando para ler registros com mais de um dia.

Saiba mais sobre como usar a CLI gcloud em gcloud logging read.

API

Ao criar consultas, informe um identificador de recurso válido em cada um dos nomes de registro. Por exemplo, se a consulta incluir um PROJECT_ID, o identificador do projeto que você fornecer precisará fazer referência ao projeto do Google Cloud selecionado.

Por exemplo, para usar a API Logging para visualizar as entradas de registro de auditoria para envolvidos no projeto:

  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.