Noções básicas sobre registros de auditoria

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

O registro 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 de auditoria do Cloud, consulte Registros de auditoria do Cloud.

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 de atividade 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 denominado 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 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 de 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 registro 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 mais detalhes, acesse Como encontrar entradas de registro rapidamente.

Aqui estão os nomes dos registros de auditoria:

       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
    

Os exemplos abaixo usam consultas para envolvidos no projeto. Se você quiser analisar os registros de auditoria no nível da organização ou da pasta, substitua o nome ou os identificadores apropriados do registro de auditoria de acordo com os nomes listados no registro.

Existem várias opções para visualizar as entradas de registro de auditoria:

Cloud Console

Use o visualizador de registros no Console do Cloud para recuperar as entradas de registro de auditoria para o projeto do Google Cloud. Faça o seguinte:

  1. Vá para a página Geração de registros do conjunto de operações do Google Cloud > Registros (Visualizador de registros) no Console do Cloud:

    Acessar a página "Visualizador de registros"

  2. Selecione um projeto que já exista no Google Cloud na parte superior da página ou crie um novo.

  3. No primeiro menu suspenso, selecione o tipo de recurso que tem os registros de auditoria que você quer ver.

  4. No segundo menu suspenso, selecione o tipo de registro que você quer ver: activity para registros de auditoria de atividade do administrador, data_access para registros de auditoria de acesso a dados e system_events para registros de eventos do sistema.

    Se você não vir nenhuma dessas opções, quer dizer que não há registros de auditoria desse tipo disponíveis no projeto.

Se você quiser limitar uma pesquisa atual apenas para registros de auditoria, faça o seguinte:

  1. Na caixa de filtro de pesquisa, clique na seta suspensa (& blacktriangledown;) e selecione Converter para filtro avançado.

  2. Na caixa de texto exibida, adicione a seguinte consulta abaixo da linha resource.type. Observe que o project-id fornecido precisa fazer referência ao projeto selecionado do Google Cloud. Caso contrário, a consulta não funcionará.

            logName : "projects/project-id/logs/cloudaudit.googleapis.com"
        

    Se você quiser ver todos os registros de auditoria disponíveis para o projeto, inclua somente os itens acima na consulta. Para mais detalhes sobre consultas, acesse Consultas de registros avançados.

API

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. Insira as informações a seguir na seção Corpo da solicitação do formulário Testar esta API. Clicar nesse formulário previamente preenchido faz com que o corpo da solicitação seja completo automaticamente, mas é preciso fornecer 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 Consultas de registros avançados.

GCLOUD

O SDK do Cloud tem um grupo de comandos, gcloud logging, que fornece uma interface de linha de comando para a API do Cloud Logging. Para ler as entradas de registro, execute o comando a seguir. Digite um project-id válido em cada um dos nomes de registro.

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

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

Para ver um exemplo de entrada de registro de auditoria e instruções para 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.