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 auditoriamethodName
: a operação que está a ser auditadaresourceName
: 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.
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.
Na tabela principal da página Registos de auditoria, selecione um Google Cloud serviço.
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.
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.
Na Google Cloud consola, aceda ao Explorador de registos.
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.
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íniocloudaudit.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.