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 ed eseguire azioni su eventi specifici. Gli attivatori Eventarc con type=google.cloud.audit.log.v1.written invia richieste a una destinazione quando viene creato un log di controllo che corrisponde ai criteri di filtro dell'attivatore. Le corrispondenze vengono effettuate in base ai seguenti valori della voce del log di controllo:

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

Per un elenco dei Google Cloud servizi che forniscono audit log, consulta Google Cloud servizi con audit log. Puoi anche recuperare i valori dei filtri evento che si applicano al tipo di eventogoogle.cloud.audit.log.v1.written.

Identificare i filtri eventi

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

  1. Assicurati di aver attivato 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 è attivato il controllo per impostazione predefinita non sono elencati.

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

    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 la quale vuoi creare un filtro eventi e genera una voce del 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 del log e recuperare i risultati. Ad esempio:

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

    Per ulteriori dettagli su come creare query per recuperare e perfezionare i log, consulta 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 del log di controllo dalle altre voci del 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 del 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 indica 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 Informazioni sui log di controllo.

Recuperare i valori del filtro degli eventi

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

Per elencare i nomi dei servizi, esegui il seguente comando:

gcloud eventarc audit-logs-provider service-names list

Restituisce tutti i valori dell'attributo serviceName per il tipo di evento google.cloud.audit.log.v1.written.

Per elencare i nomi dei metodi per un servizio specifico, esegui il seguente 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

Elementi di log di controllo di dimensioni eccessive

Cloud Logging suddivide le voci dei log di controllo più grandi del limite di utilizzo e distribuisce i dati contenuti nella voce del log di controllo originale in più voci split. 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 divisa ha un protoPayload che include gli stessi valori serviceName, methodName e resourceName per filtrare gli eventi di Cloud Audit Logs. Gli attivatori Eventarc generano un evento per ogni voce divisa.

Quando una voce del 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, consulta Suddividere le voci dei log di controllo.

Passaggi successivi