Determina i filtri di eventi per Cloud Audit Logs

Un trigger Eventarc dichiara il tuo interesse per un determinato evento o set di eventi, consentendoti di acquisire e agire su eventi specifici. Gli eventi Eventarc con type=google.cloud.audit.log.v1.written inviano richieste al tuo flusso di lavoro o servizio quando viene creato un audit log che corrisponde ai criteri di filtro dell'attivatore. Le corrispondenze vengono effettuate sui seguenti valori dalla voce di log di controllo:

  • serviceName: il servizio che ha scritto l'audit log
  • methodName: l'operazione in fase di controllo
  • resourceName: risorsa oggetto di controllo

Per un elenco dei servizi Google Cloud che forniscono audit log, consulta Servizi Google con audit log.

Per un elenco degli eventi dei log di controllo supportati da Eventarc, inclusi i valori serviceName e methodName, consulta Eventi supportati da Eventarc.

Identifica i filtri degli eventi

Per identificare i filtri eventi esatti necessari per creare un trigger, genera l'evento che vuoi acquisire, quindi visualizza la voce Cloud Audit Logs corrispondente. Tieni presente che i dati di una voce di log possono essere suddivisi e distribuiti tra 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 tutti i servizi per cui è abilitato il controllo per impostazione predefinita non sono elencati.

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

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

  2. Esegui l'operazione per cui vuoi creare un filtro eventi e genera una voce di log di controllo. 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, consulta Creazione di query di log.

  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 log di controllo da altre voci di log. Nell'esempio seguente, alcune parti della voce di log vengono omesse e alcuni campi vengono 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"
    }

    • Per verificare i contenuti di questa voce di log di controllo possono essere utilizzate le seguenti informazioni:

      • 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 che viene controllata.

    • Il campo protoPayload.resourceName è la risorsa che viene controllata.

    Per maggiori dettagli su come trovare le informazioni in una voce del log di controllo, vedi Informazioni sui log di controllo.

Esempi di trigger Eventarc

L'esempio seguente crea un trigger denominato cal-workflows-trigger per una destinazione di Workflows. I filtri trigger per gli audit log scritti da bigquery.googleapis.com e per l'operazione identificati come jobservice.jobcompleted:

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=jobservice.jobcompleted" \
   --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 trigger per gli audit log scritti da workflows.googleapis.com e per l'operazione identificati 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

Audit log di Cloud divisi

Cloud Logging suddivide singole voci di audit log più grandi di un limite di dimensione di 512 kB e distribuisce i dati contenuti nella voce di log di controllo originale in più voci di log split. Il campo split è un oggetto LogSplit che contiene le informazioni necessarie per identificare le voci del log diviso correlate.

Ogni protoPayload delle voci suddivise includerà gli stessi valori serviceName, methodName e resourceName per contribuire a filtrare gli eventi di Cloud Audit Logs. I trigger Eventarc distribuiranno un evento per ogni voce di log divisa.

Se disponi di una voce di log di controllo suddivisa in più voci, puoi filtrare in base a qualsiasi campo in LogEntry. Ad esempio, se hai bisogno della prima voce di una voce di log divisa, puoi eseguire il comando dell'interfaccia a riga di comando gcloud seguente, utilizzando split.index per indicare la posizione della voce nella serie di voci divisi. (La prima voce della suddivisione ha indice 0):

gcloud logging read "split.index=0"

Per ulteriori informazioni sulle voci dei log suddivise, incluse le istruzioni su come riconoscere le voci e le query di esempio, consulta Suddividi le voci del log di controllo.

Passaggi successivi