Determine os filtros de eventos para os registos de auditoria da nuvem

Um acionador do Eventarc declara o seu interesse num determinado evento ou conjunto de eventos, o que lhe permite captar e agir em função de eventos específicos. Os acionadores do Eventarc type=google.cloud.audit.log.v1.written enviam pedidos para um destino quando é criado um registo de auditoria que corresponde aos critérios de filtro do acionador. As correspondências são feitas nos seguintes valores da entrada do registo de auditoria:

  • serviceName: o serviço que escreveu o registo de auditoria
  • methodName: a operação que está a ser auditada
  • resourceName: o recurso que está a ser auditado

Para ver uma lista dos Google Cloud serviços que fornecem registos de auditoria, consulte os Google Cloud serviços com registos de auditoria. Também pode obter os valores do filtro de eventos que se aplicam ao tipo de evento google.cloud.audit.log.v1.written.

Identifique filtros de eventos

Para identificar os filtros de eventos exatos necessários para criar um acionador, gere o evento que quer capturar e, em seguida, veja a entrada correspondente dos registos de auditoria da nuvem. Tenha em atenção que os dados de uma entrada de registo podem ser divididos e distribuídos por várias entradas.

  1. Certifique-se de que ativou os tipos de registos de auditoria de acesso a dados para o seu serviço.

    Aceder aos registos de auditoria

    Tenha em atenção que não são apresentados os serviços que têm a auditoria ativada por predefinição.

    1. Na tabela principal da página Registos de auditoria, selecione um Google Cloud serviço.

    2. No separador Tipos de registos, selecione as caixas de verificação Leitura de administrador, Leitura de dados e Escrita de dados e, de seguida, clique em Guardar.

  2. Realize a operação para a qual quer criar um filtro de eventos e gere uma entrada do registo de auditoria. Por exemplo, armazene um ficheiro num contentor do Cloud Storage.

  3. Na Google Cloud consola, aceda ao Explorador de registos.

    Aceda ao Explorador de registos

  4. No painel Criador de consultas, crie e execute uma consulta para filtrar as entradas de registo e obter os resultados. Por exemplo:

    resource.type="gcs_bucket" resource.labels.bucket_name="eventarc-bucket"
    

    Para mais detalhes sobre como criar consultas para obter e refinar registos, consulte o artigo Crie consultas usando a linguagem de consulta do Logging.

  5. Para ver os detalhes completos de uma entrada do registo, clique na seta de expansão (▸) no início da entrada.

    O campo protoPayload distingue uma entrada do registo de auditoria de outras entradas do registo. No exemplo seguinte, 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:{},
          requestMetadata:{},
          serviceName:"storage.googleapis.com",
          methodName:"storage.objects.create",
          authorizationInfo:[],
          resourceName:"projects/_/buckets/eventarc-bucket/objects/random.txt",
          resourceLocation:{}
       },
       insertId:"il9evleafpdk",
       resource:{
          type:"gcs_bucket",
          labels:{
             project_id:"cloud-run-test",
             location:"us-central1",
             bucket_name:"eventarc-bucket"
          }
       },
       timestamp:"2021-03-05T15:55:20.754688805Z",
       severity:"INFO",
       logName:"projects/cloud-run-test/logs/cloudaudit.googleapis.com%2Fdata_access",
       receiveTimestamp:"2021-03-05T15:55:20.884984611Z"
    }

    • As seguintes informações podem ser usadas para validar o conteúdo desta entrada do registo de auditoria:

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

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

    • O campo protoPayload.serviceName é o serviço que escreveu o registo de auditoria.

    • O campo protoPayload.methodName é a operação que está a ser auditada.

    • O campo protoPayload.resourceName é o recurso que está a ser auditado.

    Para ver mais detalhes sobre como encontrar informações numa entrada do registo de auditoria, consulte o artigo Compreender os registos de auditoria.

Recupere valores de filtros de eventos

Pode usar o comando gcloud eventarc audit-logs-provider para explorar e listar os valores de serviceName e methodName do fornecedor para o tipo de evento google.cloud.audit.log.v1.written.

Para apresentar uma lista dos nomes dos serviços, execute o seguinte comando:

gcloud eventarc audit-logs-provider service-names list

Isto devolve todos os valores dos atributos serviceName para o tipo de evento google.cloud.audit.log.v1.written.

Para apresentar uma lista de nomes de métodos para um serviço específico, execute o seguinte comando:

gcloud eventarc audit-logs-provider method-names list \
     --service-name=SERVICE_NAME

Substitua SERVICE_NAME por um valor serviceName, por exemplo, bigquery.googleapis.com.

Exemplos de acionadores do Eventarc

O exemplo seguinte cria um acionador denominado cal-workflows-trigger para um destino de fluxos de trabalho. Os filtros de acionadores para registos de auditoria escritos por bigquery.googleapis.com e para a operação identificada como google.cloud.bigquery.v2.JobService.InsertJob:

gcloud eventarc triggers create cal-workflows-trigger \
   --location=us-central1 \
   --destination-workflow=my-workflow \
   --destination-workflow-location=europe-west4 \
   --event-filters="type=google.cloud.audit.log.v1.written" \
   --event-filters="serviceName=bigquery.googleapis.com" \
   --event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \
   --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

O exemplo seguinte cria um acionador denominado cal-run-trigger para um destino do Cloud Run. Os filtros de acionadores para registos de auditoria escritos por workflows.googleapis.com e para a operação identificada como google.cloud.workflows.v1.Workflows.GetWorkflow:

gcloud eventarc triggers create cal-run-trigger \
   --location=us-central1 \
   --destination-run-service=helloworld-events \
   --destination-run-region=us-central1 \
   --event-filters="type=google.cloud.audit.log.v1.written" \
   --event-filters="serviceName=workflows.googleapis.com" \
   --event-filters="methodName=google.cloud.workflows.v1.Workflows.GetWorkflow" \
   --event-filters="resourceName=projects/_/locations/us-central1/workflows/test-workflow" \
   --service-account=${PROJECT_NUMBER}[email protected]

Entradas de registo de auditoria demasiado grandes

O Cloud Logging divide as entradas do registo de auditoria que são superiores ao limite de utilização e distribui os dados contidos na entrada do registo de auditoria original por várias entradas divididas. Se uma entrada do registo contiver um campo split, significa que a entrada é o resultado da divisão de uma entrada do registo original maior. O campo split é um objeto LogSplit que contém as informações necessárias para identificar as entradas divididas relacionadas.

Cada entrada dividida tem um protoPayload que inclui os mesmos valores de serviceName, methodName e resourceName para ajudar a filtrar os eventos dos registos de auditoria do Cloud. Os acionadores do Eventarc enviam um evento para cada entrada dividida.

Quando tem uma entrada do registo de auditoria dividida em várias entradas do registo, pode filtrar qualquer um dos campos no LogEntry. Por exemplo, se precisar da primeira entrada numa série de entradas de registo divididas, pode executar o seguinte comando da CLI gcloud, usando split.index=0 para indicar a posição da primeira entrada:

gcloud logging read "split.index=0"

Para mais informações, incluindo como reconhecer entradas e consultas de exemplo, consulte o artigo Divida as entradas do registo de auditoria.

O que se segue?