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 Cloud de Confiance 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 Cloud de Confiance 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. Cloud de Confiance by S3NS Alguns Cloud de Confiance by S3NS 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 de administrador que regista uma alteração a uma política de Identity and Access Management (IAM) com PROJECT_ID my-gcp-project-id. O campo serviceName identifica o serviço que escreveu o registo de auditoria. 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 Cloud de Confiance 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 Cloud de Confiance by S3NS 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
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 Cloud de Confiance 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

A maioria dos registos de auditoria pode ser vista no Cloud Logging através da Cloud de Confiance 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 Cloud de Confiance consola, pode usar o Explorador de registos para obter as entradas do registo de auditoria do seu Cloud de Confiance projeto, pasta ou organização:

  1. Na Cloud de Confiance 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 Cloud de Confiance 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 Cloud de Confiance 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. Cloud de Confiance

    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 projetoCloud de Confiance atualmente selecionado.

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

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

Para consultar os dados de registo através da API Cloud Logging, use o método entries.list.