Determinazione dei filtri eventi per Cloud Audit Logs

Un trigger Eventarc dichiara il tuo interesse per un determinato evento o insieme di eventi, consentendoti di acquisire e intervenire su eventi specifici. I trigger Eventarc con type=google.cloud.audit.log.v1.written inviano richieste a una destinazione quando viene creato un log di controllo che corrisponde ai criteri di filtro del trigger. Le corrispondenze vengono effettuate in base ai seguenti valori della voce di log di controllo:

  • serviceName: il servizio che ha scritto l'audit log
  • methodName: l'operazione sottoposta ad audit
  • resourceName: la risorsa sottoposta a controllo

Per un elenco dei servizi che forniscono audit log, vedi Google Cloud Servizi con audit log. Google Cloud Puoi anche recuperare i valori del filtro eventi che si applicano al tipo di evento google.cloud.audit.log.v1.written.

Identificare i filtri eventi

Per identificare i filtri eventi esatti necessari per creare un trigger, genera l'evento che vuoi acquisire e poi visualizza la voce di Cloud Audit Logs corrispondente. Tieni presente che i dati di una voce di log potrebbero essere divisi e distribuiti su più voci.

  1. Assicurati di aver abilitato i tipi di audit log di accesso ai dati per il tuo servizio.

    Vai agli audit log

    Tieni presente che i servizi per i quali il controllo è attivato per impostazione predefinita non sono elencati.

    1. Nella tabella principale della pagina Audit log, seleziona un servizio Google Cloud.

    2. Nella scheda Tipi di log, seleziona le caselle di controllo Lettura amministratore, Lettura dati e Scrittura dati, poi fai clic su Salva.

  2. Esegui l'operazione per cui vuoi creare un filtro eventi e genera una voce di audit log. Ad esempio, archivia un file in un bucket Cloud Storage.

  3. Nella console Google Cloud , vai a Esplora log.

    Vai a Esplora log

  4. Nel riquadro Query Builder, crea ed esegui una query per filtrare le voci di log e recuperare i risultati. Ad esempio:

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

    Per maggiori dettagli su come creare query per recuperare e perfezionare i log, vedi Creare query utilizzando il linguaggio di query di Logging.

  5. Per visualizzare i dettagli completi di una voce di log, fai clic sulla freccia di espansione (▸) all'inizio della voce.

    Il campo protoPayload distingue una voce di audit log dalle altre voci di log. Nell'esempio seguente, alcune parti della voce di log sono omesse e alcuni campi sono evidenziati:

    {
       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"
    }

    • Le seguenti informazioni possono essere utilizzate per verificare i contenuti di questa voce di log di controllo:

      • Il campo protoPayload.@type è type.googleapis.com/google.cloud.audit.AuditLog.

      • Il campo logName include il dominio cloudaudit.googleapis.com.

    • Il campo protoPayload.serviceName è il servizio che ha scritto l'audit log.

    • Il campo protoPayload.methodName è l'operazione sottoposta ad audit.

    • Il campo protoPayload.resourceName è la risorsa sottoposta ad audit.

    Per maggiori dettagli su come trovare informazioni in una voce del log di controllo, vedi Comprendere i log di controllo.

Recuperare i valori dei filtri degli eventi

Puoi utilizzare il comando gcloud eventarc audit-logs-provider per esplorare ed elencare i valori di serviceName e methodName del fornitore per il tipo di evento google.cloud.audit.log.v1.written.

Per elencare i nomi dei servizi, esegui questo comando:

gcloud eventarc audit-logs-provider service-names list

Restituisce tutti i valori degli attributi serviceName per il tipo di evento google.cloud.audit.log.v1.written.

Per elencare i nomi dei metodi per un servizio specifico, esegui questo comando:

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

Sostituisci SERVICE_NAME con un valore serviceName, ad esempio bigquery.googleapis.com.

Esempi di trigger Eventarc

L'esempio seguente crea un trigger denominato cal-workflows-trigger per una destinazione di Workflows. I filtri di attivazione per i log di controllo scritti da bigquery.googleapis.com e per l'operazione identificata come 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

L'esempio seguente crea un trigger denominato cal-run-trigger per una destinazione Cloud Run. I filtri di attivazione per i log di controllo scritti da workflows.googleapis.com e per l'operazione identificata come 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

Voci del log di controllo sovradimensionate

Cloud Logging suddivide le voci di audit log più grandi del limite di utilizzo e distribuisce i dati contenuti nella voce di audit log originale in diverse voci suddivise. Se una voce di log contiene un campo split, la voce è il risultato della suddivisione di una voce di log originale più grande. Il campo split è un oggetto LogSplit che contiene le informazioni necessarie per identificare le voci di suddivisione correlate.

Ogni voce suddivisa ha un protoPayload che include gli stessi valori serviceName, methodName e resourceName per filtrare gli eventi di Cloud Audit Logs. I trigger Eventarc forniscono un evento per ogni voce suddivisa.

Quando una voce di log di controllo è suddivisa in più voci, puoi filtrare in base a uno qualsiasi dei campi in LogEntry. Ad esempio, se hai bisogno della prima voce di una serie di voci di log suddivise, puoi eseguire il seguente comando gcloud CLI, utilizzando split.index=0 per indicare la posizione della prima voce:

gcloud logging read "split.index=0"

Per ulteriori informazioni, incluso come riconoscere le voci e le query di esempio, vedi Dividere le voci del log di controllo.

Passaggi successivi