Compreender os registos de auditoria

Esta página descreve as entradas do registo dos registos de auditoria da nuvem em detalhe: a respetiva estrutura, como as ler e como as interpretar.

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

  • Registos de auditoria de atividade do administrador
  • Registos de auditoria de acesso a dados
  • Registos de auditoria de eventos do sistema
  • Registos de auditoria de políticas recusadas

Para uma vista geral dos registos de auditoria do Cloud, consulte o artigo Registos de auditoria do Cloud.

Formato das entradas do registo de auditoria

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

Em resumo, cada entrada do registo de auditoria é caraterizada pelas seguintes informações:

  • O projeto, a pasta ou a organização proprietária da entrada de registo.
  • O recurso ao qual a entrada do registo se aplica. Estas informações consistem num tipo de recurso da lista de recursos monitorizados e valores adicionais que denotam uma instância específica. Por exemplo, pode ver entradas do registo de auditoria de uma única instância de VM do Compute Engine ou de todas as instâncias de VM.
  • Uma indicação de tempo.
  • Um serviço: os serviços são Google Cloud produtos individuais, como o Compute Engine, o Cloud SQL ou o Pub/Sub. Cada serviço é identificado pelo nome: o Compute Engine é compute.googleapis.com, o Cloud SQL é cloudsql.googleapis.com e assim sucessivamente. Estas informações estão listadas no campo protoPayload.serviceName da entrada do registo 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, aceda ao artigo Mapeamento de serviços para recursos.

  • Uma carga útil, que é do tipo protoPayload. A carga útil de cada entrada do registo de auditoria é um objeto do tipo AuditLog, que define um conjunto de campos específicos dos registos de auditoria do Cloud, como serviceName e authenticationInfo. Também tem um campo opcional, metadata, que os serviços usam para listar informações específicas do serviço na entrada do registo de auditoria. Google Cloud Alguns Google Cloud serviços continuam a usar o campo serviceData mais antigo para apresentar informações específicas do serviço. Para ver uma lista dos serviços que usam o campo serviceData, consulte os dados de auditoria específicos do serviço.

  • Um nome de registo: as entradas do registo de auditoria pertencem a registos em contas de faturação, projetos, pastas e organizações. A tabela seguinte apresenta os nomes dos registos:

   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

Numa conta de faturação, num projeto, numa pasta ou numa organização, estes nomes de registos são normalmente abreviados como activity, data_access, system_event e policy.

Exemplo de entrada do registo de auditoria

Esta secção usa uma entrada de registo de auditoria de exemplo para explicar como encontrar as informações mais importantes nas entradas de registo de auditoria.

O exemplo seguinte é uma entrada do registo de auditoria da atividade do administrador escrita pelo App Engine para registar uma alteração a uma política de Identity and Access Management (IAM) com PROJECT_ID my-gcp-project-id. Por uma questão de brevidade, algumas partes da entrada do registo são omitidas e alguns campos são realçados:

    {
      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",
    }

Segue-se a consulta que foi usada para selecionar o exemplo de entrada do registo de auditoria anterior. A consulta pode ser usada no Explorador de registos, na API Logging ou na CLI Google Cloud. O identificador do projeto está no nome do registo:

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

Se estiver à procura de registos de auditoria de uma única instância de um tipo de recurso, como gce_instance, adicione um qualificador de instância:

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

Interpretar a entrada do registo de auditoria de exemplo

No exemplo de entrada do registo de auditoria anterior, os campos protoPayload, insertId, resource, timestamp, severity e logName apresentados fazem parte do objeto LogEntry. O valor do campo protoPayload é um objeto AuditLog. Encapsula os dados de registo de auditoria.

Ao analisar o exemplo de entrada do registo de auditoria, pode ter algumas dúvidas:

  • Trata-se de uma entrada do registo de auditoria? Sim, pode confirmá-lo de duas formas:

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

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

  • Que serviço escreveu o registo de auditoria? O registo foi escrito pelo App Engine. Estas informações estão listadas no campo protoPayload.serviceName da entrada do registo de auditoria.

  • Que operação está a ser auditada? SetIamPolicy, conforme especificado no campo protoPayload.methodName, está a ser auditado. Pode encontrar mais informações sobre a operação auditada no objeto AuditData em protoPayload.serviceData.

  • Que recurso está a ser auditado? Uma aplicação em execução no App Engine, associada a um Google Cloud projetomy-gcp-project-id, está a ser auditada. Pode determiná-lo a partir do campo resource, que especifica o tipo de recurso gae_app e o identificador do projeto my-gcp-project-id. Neste exemplo, encontraria detalhes sobre o tipo de recurso na lista de tipos de recursos monitorizados.

Para mais informações, consulte o tipo LogEntry, o tipo AuditLog e o tipo IAM AuditData.

Registos de auditoria para operações de longa duração

As APIs que são operações de longa duração emitem dois registos de auditoria: um quando a API é chamada e a operação é iniciada, e outro quando a operação é concluída.

Neste caso, o objeto LogEntry contém um campo operation. As entradas de registo para a mesma operação têm o mesmo valor para LogEntry.operation.id e LogEntry.operation.producer. A primeira entrada de registo escrita tem LogEntry.operation.first=true e a entrada de registo de conclusão tem LogEntry.operation.last=true.

Nos casos em que a operação é concluída imediatamente ou falha, existe apenas uma entrada no registo com LogEntry.operation.first=true e LogEntry.operation.last=true.

Alguns serviços não preenchem o campo LogEntry.operation quando a operação falha. No entanto, pode determinar que operações são operações de longa duração consultando a documentação de registo de auditoria do serviço.

Estas APIs implementam o serviço Operations. Geralmente, este serviço emite entradas de registo de auditoria quando é chamado. Consoante as APIs que são chamadas, protoPayload.methodName é uma das seguintes opções:

  • google.longrunning.Operations.ListOperations
  • google.longrunning.Operations.GetOperation
  • google.longrunning.Operations.CancelOperation
  • google.longrunning.Operations.WaitOperation
  • google.longrunning.Operations.DeleteOperation

LogEntry.operation não é especificado neste caso, uma vez que esta API devolve metadados sobre operações de longa duração, mas não é uma operação de longa duração em si.

Consulte os Google Cloud serviços com registos de auditoria para ver detalhes sobre as APIs auditadas, uma vez que podem variar por serviço.

Registos de auditoria para APIs de streaming

Semelhante às operações de longa duração, as APIs de streaming emitem duas entradas de registo de auditoria: uma quando a API é chamada pela primeira vez e outra quando a ligação de streaming termina.

Neste caso, o objeto LogEntry contém um campo operation e as entradas do registo para a mesma operação têm o mesmo valor para LogEntry.operation.id e LogEntry.operation.producer. O primeiro registo escrito tem LogEntry.operation.first=true, e o registo de conclusão tem LogEntry.operation.last=true.

Esta API também pode emitir entradas de registo de continuação sem LogEntry.operation.first nem LogEntry.operation.last definidos para indicar que a stream permanece aberta.

Dados de auditoria específicos do serviço

Alguns serviços expandem as informações armazenadas nos respetivos AuditLog ao colocar uma estrutura de dados suplementar no campo serviceData da entrada do registo de auditoria. A tabela seguinte apresenta os serviços que usam o campo serviceData e fornece um link para o respetivo AuditData tipo.

ServiçoTipo de dados de serviço
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (antigo) 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

Ver registos de auditoria

Pode consultar todos os registos de auditoria ou consultar os registos pelo respetivo nome do registo de auditoria. O nome do registo de auditoria inclui o identificador do recurso do Google Cloud projeto, da pasta, da conta de faturação ou da organização para a qual quer ver as informações de registo de auditoria. As suas consultas podem especificar campos LogEntry indexados. Para mais informações sobre como consultar os seus registos, consulte o artigo Crie consultas no Explorador de registos

O Explorador de registos permite-lhe ver entradas de registo individuais filtradas. Se quiser usar SQL para analisar grupos de entradas de registo, use a página Log Analytics. Para mais informações, consulte:

A maioria dos registos de auditoria pode ser vista no Cloud Logging através da Google Cloud consola, da CLI do Google Cloud ou da API Logging. No entanto, para registos de auditoria relacionados com a faturação, só pode usar a CLI do Google Cloud ou a API Logging.

Consola

Na Google Cloud consola, pode usar o Explorador de registos para obter as entradas do registo de auditoria do seu Google Cloud projeto, pasta ou organização:

  1. Na Google Cloud consola, aceda à página Explorador de registos:

    Aceda ao Explorador de registos

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda é Registo.

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

  3. Para apresentar todos os registos de auditoria, introduza uma das seguintes consultas no campo do editor de consultas e, de seguida, clique em Executar consulta:

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

    • Em Tipo de recurso, selecione o Google Cloud recurso cujos registos de auditoria quer ver.

    • Em Nome do registo, selecione o tipo de registo de auditoria que quer ver:

      • Para os registos de auditoria da atividade do administrador, selecione atividade.
      • Para os registos de auditoria de acesso a dados, selecione data_access.
      • Para os registos de auditoria de eventos do sistema, selecione system_event.
      • Para registos de auditoria de recusa de políticas, selecione política.
    • Clique em Executar consulta.

    Se não vir estas opções, significa que não existem registos de auditoria desse tipo disponíveis no projeto, na pasta ou na organização. Google Cloud

    Se estiver a ter problemas ao tentar ver registos no Explorador de registos, consulte as informações de resolução de problemas.

    Para mais informações sobre como consultar através do Explorador de registos, consulte o artigo Crie consultas no Explorador de registos.

gcloud

A CLI do Google Cloud fornece uma interface de linhas de comando para a API Logging. Forneça um identificador de recurso válido em cada um dos nomes dos registos. Por exemplo, se a sua consulta incluir um PROJECT_ID, o identificador do projeto que fornecer tem de se referir ao projetoGoogle Cloud atualmente selecionado.

Para ler as entradas do registo de auditoria ao nível do projeto, execute o seguinte comando: Google Cloud

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

Para ler as entradas do registo de auditoria ao nível da pasta, execute o seguinte comando:

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

Para ler as entradas do registo de auditoria ao nível da organização, execute o seguinte comando:

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

Para ler as entradas do registo de auditoria ao nível da conta do Cloud Billing, execute o seguinte comando:

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

Adicione a flag --freshness ao seu comando para ler registos com mais de 1 dia.

Para mais informações sobre a utilização da CLI gcloud, consulte gcloud logging read.

REST

Quando criar as consultas, forneça um identificador de recurso válido em cada um dos nomes dos registos. Por exemplo, se a sua consulta incluir um PROJECT_ID, o identificador do projeto que fornecer tem de se referir ao projetoGoogle Cloud atualmente selecionado.

Por exemplo, para usar a API Logging para ver as entradas do registo de auditoria ao nível do projeto, faça o seguinte:

  1. Aceda à secção Experimentar esta API na documentação do método entries.list.

  2. Coloque o seguinte na parte Corpo do pedido do formulário Experimentar esta API. Se clicar neste formulário pré-preenchido, o corpo do pedido é preenchido automaticamente, mas tem de fornecer um PROJECT_ID válido em cada um dos nomes dos registos.

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