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 auditoriamethodName
: a operação que está sendo auditadaresourceName
: 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.
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.
Na tabela principal da página Registros de auditoria, selecione um serviço do Google Cloud.
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.
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.
No Console do Google Cloud, acesse a página do Explorador de registros.
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.
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íniocloudaudit.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.