Raccogli i log di flusso VPC Google Cloud

Versione parser: 6.0

Supportata in:

Questo documento spiega come importare i log di flusso VPC Google Cloud in Google Security Operations utilizzando Google Cloud Storage.

I log di flusso VPC registrano un campione di flussi di rete inviati e ricevuti dalle istanze VM, incluse quelle utilizzate come nodi Google Kubernetes Engine. Questi log possono essere utilizzati per monitoraggio della rete, analisi forense, analisi della sicurezza in tempo reale e ottimizzazione delle spese. I log di flusso vengono aggregati per connessione a intervalli configurabili ed esportati quasi in tempo reale tramite Cloud Logging. Un sink di Logging indirizza i log di flusso VPC a un bucket Cloud Storage, da cui Google SecOps li importa.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto Google Cloud con le seguenti API abilitate:
    • API Cloud Storage
    • API Cloud Logging
    • API Compute Engine
  • Autorizzazioni per:
    • Abilita i log di flusso VPC sulle subnet
    • Crea e gestisci i bucket Cloud Storage
    • Gestisci le policy IAM sui bucket Cloud Storage
    • Crea e gestisci i sink dell'API Cloud Logging
  • Almeno una subnet VPC in cui vuoi abilitare i log di flusso VPC

Abilita i log di flusso VPC sulle subnet

Prima di configurare la pipeline di importazione, assicurati che i log di flusso VPC siano abilitati nelle subnet di destinazione. Google Cloud supporta due API per la gestione dei log di flusso VPC: l'API Network Management (consigliata) e l'API Compute Engine.

Utilizzo della console Google Cloud (API Network Management)

  1. Nella consoleGoogle Cloud , vai a Rete VPC > Reti VPC.
  2. Fai clic sulla scheda Subnet nel progetto attuale.
  3. Seleziona la subnet in cui vuoi abilitare i log di flusso.
  4. Fai clic su Gestisci log di flusso.
  5. Fai clic su Aggiungi nuova configurazione.
  6. Assegna un nome alla configurazione.
  7. Configura le seguenti impostazioni facoltative:
    • Intervallo di aggregazione: seleziona l'intervallo di aggregazione (valore predefinito: 5 secondi). Intervalli più brevi forniscono dati più granulari, ma aumentano il volume dei log.
    • Includi metadati: seleziona Includi tutti i metadati per includere i dettagli dell'istanza VM e del VPC.
    • Frequenza di campionamento secondaria: imposta la frequenza di campionamento (valore predefinito: 100% per l'API di gestione della rete). Frequenze più elevate acquisiscono più flussi, ma aumentano il volume dei log.
    • Espressione di filtro: espressione di filtro CEL facoltativa per includere o escludere flussi specifici (massimo 2048 caratteri).
  8. Fai clic su Salva.

Utilizzo dello strumento a riga di comando gcloud (API Network Management)

  • Utilizza la seguente sintassi:

    gcloud network-management vpc-flow-logs-configs create <CONFIG_NAME> \
            --location=global \
            --subnet=projects/<PROJECT_ID>/regions/<REGION>/subnetworks/<SUBNET_NAME> \
            --aggregation-interval=INTERVAL_5_SEC \
            --metadata=INCLUDE_ALL_METADATA \
            --flow-sampling=1.0
    

Sostituisci:

  • <CONFIG_NAME>: un nome descrittivo della configurazione (ad esempio vpc-flow-logs-config)
  • <PROJECT_ID>: l'ID progetto Google Cloud
  • <REGION>: la regione della subnet (ad esempio us-central1)
  • <SUBNET_NAME>: il nome della tua subnet

Utilizzo dello strumento a riga di comando gcloud (API Compute Engine)

  • Utilizza la seguente sintassi:

    gcloud compute networks subnets update <SUBNET_NAME> \
            --region=<REGION> \
            --enable-flow-logs \
            --logging-aggregation-interval=interval-5-sec \
            --logging-metadata=include-all \
            --logging-flow-sampling=0.5 \
            --project=<PROJECT_ID>
    

Sostituisci:

  • <SUBNET_NAME>: il nome della tua subnet
  • <REGION>: la regione della subnet (ad esempio us-central1)
  • <PROJECT_ID>: l'ID progetto Google Cloud

Crea un bucket Google Cloud Storage

  1. Vai alla consoleGoogle Cloud .
  2. Seleziona il progetto.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome globalmente univoco (ad esempio vpc-flow-logs-bucket)
    Tipo di località Scegli in base alle tue esigenze (Regione, a due regioni, multiregionale)
    Località Seleziona la località (ad esempio us-central1)
    Classe di archiviazione Standard (consigliato per i log ad accesso frequente)
    Controllo degli accessi Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o una policy di conservazione
  6. Fai clic su Crea.

Crea un sink di Logging per esportare i log di flusso VPC in GCS

Un sink di Logging instrada i log di flusso VPC da Logging al bucket Cloud Storage. Google SecOps importa quindi gli oggetti esportati dal bucket.

Crea il sink di log

  1. Nella consoleGoogle Cloud , vai a Logging > Router dei log.
  2. Fai clic su Crea sink.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome sink: inserisci un nome descrittivo (ad esempio vpc-flow-to-gcs).
    • Descrizione sink: inserisci Route VPC Flow Logs to Cloud Storage for Google SecOps ingestion.
  4. Fai clic su Avanti.
  5. Nella sezione Seleziona il servizio sink:
    • Servizio sink: seleziona Bucket Cloud Storage.
    • Seleziona un bucket Cloud Storage: seleziona il bucket vpc-flow-logs-bucket.
  6. Fai clic su Avanti.
  7. Nella sezione Scegli i log da includere nel sink, inserisci il seguente filtro per acquisire i log di flusso VPC:

    resource.type="gce_subnetwork" AND log_id("compute.googleapis.com/vpc_flows")
    
    resource.type="gce_subnetwork" AND log_id("compute.googleapis.com/vpc_flows") AND resource.labels.subnetwork_name="<SUBNET_NAME>"
    
    • Sostituisci <SUBNET_NAME> con il nome della subnet di destinazione.
  8. Fai clic su Avanti.

  9. Rivedi la configurazione e fai clic su Crea sink.

Concedi al writer del sink l'autorizzazione in scrittura per il bucket

Dopo aver creato il sink, Logging gli assegna un account di servizio writer (l'identità writer). Concedi a questa identità l'autorizzazione per scrivere oggetti nel bucket.

  1. Vai a Logging > Router dei log.
  2. Individua il sink vpc-flow-to-gcs, fai clic sul menu con tre puntini e seleziona Visualizza dettagli sink.
  3. Copia il valore Identità writer (nel formato serviceAccount:p<PROJECT_NUMBER>-<ID>@gcp-sa-logging.iam.gserviceaccount.com).
  4. Vai a Cloud Storage > Bucket.
  5. Fai clic sul bucket vpc-flow-logs-bucket.
  6. Vai alla scheda Autorizzazioni.
  7. Fai clic su Concedi l'accesso.
  8. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'identità writer del sink (senza il prefisso serviceAccount:).
    • Assegna i ruoli: seleziona Storage Object Creator (roles/storage.objectCreator).
  9. Fai clic su Salva.

Verifica che i log vengano esportati

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul bucket vpc-flow-logs-bucket.
  3. Attendi qualche minuto affinché il sink scriva i primi oggetti.
  4. Verifica che sia stata creata una cartella denominata compute.googleapis.com/vpc_flows/ (o un percorso con data) e che contenga i file di log esportati.

Configura un feed in Google SecOps per importare i log di flusso VPC

  1. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad es. GCP VPC Flow Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona GCP VPC Flow come Log type (Tipo di log).
  7. Fai clic su Ottieni service account. Verrà visualizzato un indirizzo email univoco del account di servizio, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia l'indirizzo email. Lo utilizzerai nel prossimo passaggio.

  9. Fai clic su Avanti.

  10. Specifica i valori per i seguenti parametri di input:

    • URI bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://vpc-flow-logs-bucket/compute.googleapis.com/vpc_flows/
      
      • Sostituisci:
        • vpc-flow-logs-bucket: il nome del tuo bucket GCS.
        • compute.googleapis.com/vpc_flows: prefisso/percorso della cartella facoltativo in cui il sink scrive i log (lascia vuoto per la directory principale).
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina i file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina i file trasferiti e le directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file (giorni): includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  11. Fai clic su Avanti.

  12. Controlla la nuova configurazione del feed di notizie nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

Il account di servizio Google SecOps deve avere il ruolo Storage Object Viewer nel bucket Cloud Storage.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul bucket vpc-flow-logs-bucket.
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'indirizzo email del account di servizio Google SecOps.
    • Assegna ruoli: seleziona Storage Object Viewer (roles/storage.objectViewer).
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
_field additional.fields Unita
textpayload_label additional.fields Unita
tunnel_id_label additional.fields Unita
description metadata.description Mappatura diretta
timestamp metadata.event_timestamp Analizzato come ISO8601
ts metadata.event_timestamp Analizzato come ISO8601
event_type metadata.event_type Mappatura diretta
product_event_type metadata.product_event_type Mappatura diretta
product_log_id metadata.product_log_id Mappatura diretta
product_name metadata.product_name Mappatura diretta
product_version metadata.product_version Mappatura diretta
vendor_name metadata.vendor_name Mappatura diretta
ip_protocol_out network.ip_protocol Mappatura diretta
jsonPayload.bytes_sent network.sent_bytes Rinominato/mappato
jsonPayload.packets_sent network.sent_packets Rinominato/mappato
principal.ip principal.asset.ip Unita
target.ip principal.asset.ip Unita
jsonPayload.src_instance.vm_name principal.hostname Mappatura diretta
target.hostname principal.hostname Rinominato/mappato
jsonPayload.connection.src_ip principal.ip Mappatura diretta
target.ip principal.ip Unita
jsonPayload.src_location.city principal.location.city Mappatura diretta
target.location.city principal.location.city Rinominato/mappato
jsonPayload.src_location.country principal.location.country_or_region Mappatura diretta
target.location.country_or_region principal.location.country_or_region Rinominato/mappato
jsonPayload.src_instance.region principal.location.name Mappatura diretta
resource.labels.location principal.location.name Mappatura diretta
target.location.name principal.location.name Rinominato/mappato
jsonPayload.src_location.region principal.location.state Mappatura diretta
target.location.state principal.location.state Rinominato/mappato
jsonPayload.src_vpc.project_id principal.namespace Mappatura diretta
jsonPayload.src_vpc.vpc_name principal.namespace Mappatura diretta
target.namespace principal.namespace Rinominato/mappato
jsonPayload.connection.src_port principal.port Mappatura diretta
_field principal.resource.attribute.labels Unita
key principal.resource.attribute.labels Mappatura: jsonPayload_src_google_service_type → _field
src_gke_cluster_location principal.resource.attribute.labels Unita
src_gke_cluster_name principal.resource.attribute.labels Unita
src_gke_namespace principal.resource.attribute.labels Unita
src_gke_pod_name principal.resource.attribute.labels Unita
logName security_result.category_details Unita
severity security_result.severity Mappatura: DEBUG → LOW
principal.ip target.asset.ip Unita
target.ip target.asset.ip Unita
jsonPayload.dest_instance.vm_name target.hostname Mappatura diretta
principal.hostname target.hostname Rinominato/mappato
jsonPayload.connection.dest_ip target.ip Mappatura diretta
principal.ip target.ip Unita
jsonPayload.dest_location.city target.location.city Mappatura diretta
principal.location.city target.location.city Rinominato/mappato
jsonPayload.dest_location.country target.location.country_or_region Mappatura diretta
principal.location.country_or_region target.location.country_or_region Rinominato/mappato
jsonPayload.dest_instance.region target.location.name Mappatura diretta
principal.location.name target.location.name Rinominato/mappato
jsonPayload.dest_location.region target.location.state Mappatura diretta
principal.location.state target.location.state Rinominato/mappato
jsonPayload.dest_vpc.project_id target.namespace Mappatura diretta
jsonPayload.dest_vpc.vpc_name target.namespace Mappatura diretta
principal.namespace target.namespace Rinominato/mappato
jsonPayload.connection.dest_port target.port Rinominato/mappato
dest_gke_cluster_location target.resource.attribute.labels Unita
dest_gke_cluster_name target.resource.attribute.labels Unita
dest_gke_namespace target.resource.attribute.labels Unita
dest_gke_pod_name target.resource.attribute.labels Unita
service_name_label target.resource.attribute.labels Unita
service_namespace_label target.resource.attribute.labels Unita
subnetwork_id_field target.user.attribute.labels Unita
N/D network.direction Costante: OUTBOUND
N/D network.ip_protocol Costante: network.ip_protocol
N/D network.sent_bytes Costante: network.sent_bytes
N/D principal.hostname Costante: target.hostname
N/D principal.location.city Costante: target.location.city
N/D principal.location.country_or_region Costante: target.location.country_or_region
N/D principal.location.name Costante: target.location.name
N/D principal.location.state Costante: target.location.state
N/D principal.namespace Costante: target.namespace
N/D principal.port Costante: principal.port
N/D security_result.severity Costante: LOW
N/D target.hostname Costante: principal.hostname
N/D target.location.city Costante: principal.location.city
N/D target.location.country_or_region Costante: principal.location.country_or_re...
N/D target.location.name Costante: principal.location.name
N/D target.location.state Costante: principal.location.state
N/D target.namespace Costante: principal.namespace
N/D target.port Costante: -99
resource.labels.subnetwork_id target.user.attribute.labels Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.