Determinar filtros de evento para registros de auditoria do Cloud.

Um gatilho do Eventarc declara seu interesse em um determinado evento ou conjunto de eventos, permitindo capturá-los e realizar ações específicas sobre eles. Os gatilhos do Eventarc com type=google.cloud.audit.log.v1.written enviam solicitações para um destino quando um registro de auditoria é criado e corresponde aos critérios de filtro do gatilho. As correspondências são feitas com base nos seguintes valores da entrada de registro de auditoria:

  • serviceName: o serviço que gravou o registro de auditoria
  • methodName: a operação que está sendo auditada
  • resourceName: o recurso que está sendo auditado

Para ver uma lista de serviços do Google Cloud que fornecem registros de auditoria, consulte Serviços do Google Cloud com registros de auditoria. Também é possível recuperar os valores de filtro de evento que se aplicam ao tipo de evento google.cloud.audit.log.v1.written.

Identificar filtros de evento

Para identificar os filtros de evento necessários para criar um gatilho, gere o evento que você quer capturar e, depois, visualize a entrada correspondente dos registros de auditoria do Cloud. Os dados de uma entrada de registro podem ser divididos e distribuídos em várias entradas.

  1. Verifique se ativou os tipos de registro de auditoria de acesso a dados para seu serviço.

    Vá para "Registros de Auditoria"

    Repare que os serviços com auditoria ativada por padrão não estão listados.

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

    2. Na guia Tipos de registro, marque as caixas de seleção Leitura do administrador, Leitura de dados e Gravação de dados e clique em Salvar.

  2. Execute a operação para a qual você quer criar um filtro de evento e gere uma entrada de registro de auditoria. Por exemplo, armazene um arquivo em um bucket do Cloud Storage.

  3. No Console do Google Cloud, acesse a página do Explorador de registros.

    Acessar o Explorador de registros

  4. No painel criador de consultas, crie e execute uma consulta para filtrar as entradas de registro e recuperar os resultados. Exemplo:

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

    Para mais detalhes sobre como criar consultas para recuperar e refinar registros, consulte Criar consultas usando a linguagem de consulta do Logging.

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

    O campo protoPayload distingue uma entrada de registro de auditoria de outras entradas de registro. No exemplo a seguir, algumas partes da entrada de registro são omitidas e alguns campos são destacados:

    {
       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 informações a seguir podem ser usadas para verificar o conteúdo dessa entrada de registro 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 gravou o registro de auditoria.

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

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

    Para mais detalhes sobre como encontrar informações em uma entrada de registro de auditoria, consulte Noções básicas de registros de auditoria.

Recuperar valores de filtro de evento

Use o comando gcloud eventarc audit-logs-provider para analisar e listar os valores serviceName e methodName do provedor para o tipo de evento google.cloud.audit.log.v1.written.

Para listar nomes de serviços, execute o seguinte comando:

gcloud eventarc audit-logs-provider service-names list

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

Para listar nomes de métodos de 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 gatilhos do Eventarc

O exemplo a seguir cria um gatilho chamado cal-workflows-trigger para um destino do Workflows. O gatilho filtra os registros de auditoria gravados 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

No exemplo a seguir, criamos um gatilho chamado cal-run-trigger para um destino do Cloud Run. O gatilho filtra os registros de auditoria gravados 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}-compute@developer.gserviceaccount.com

Entradas de registro de auditoria grandes

O Cloud Logging divide as entradas de registro de auditoria maiores que o limite de uso e distribui os dados contidos na entrada de registro de auditoria original em várias entradas divididas. Se uma entrada de registro tiver um campo split, ela será o resultado da divisão de uma entrada de registro original maior. O campo split é um objeto LogSplit que contém as informações necessárias para identificar entradas divididas relacionadas.

Cada entrada dividida tem um protoPayload que contém os mesmos valores serviceName, methodName e resourceName para ajudar a filtrar os eventos dos Registros de auditoria do Cloud. Os gatilhos do Eventarc entregam um evento para cada entrada dividida.

Quando você tem uma entrada de registro de auditoria dividida em várias entradas de registro, é possível filtrar por qualquer um dos campos no LogEntry. Por exemplo, se você precisar da primeira entrada em uma série de entradas de registro divididas, execute o seguinte comando da gcloud CLI, 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 exemplos de consultas, consulte Dividir entradas de registro de auditoria.

A seguir