Raccogli i log di flusso VPC AWS

Versione parser: 17.0

Supportato in:

Questo documento spiega come importare i log di flusso VPC di AWS in Google Security Operations utilizzando tre metodi diversi: Amazon S3 (formato di testo), Amazon CloudWatch Logs con Kinesis Data Firehose e formato CSV in Amazon S3. I log di flusso VPC di AWS sono una funzionalità che consente di acquisire informazioni sul traffico IP da e verso le interfacce di rete nel VPC. Questa integrazione ti consente di inviare questi log a Google SecOps per l'analisi e il monitoraggio.

Formati dei log di flusso VPC AWS supportati

Google SecOps supporta l'importazione dei log di flusso VPC di AWS in due formati di testo principali:

  • Formato JSON: il tipo di log AWS_VPC_FLOW analizza i log in formato JSON. In questo formato, ogni voce di log include sia una chiave sia il valore corrispondente, rendendo i dati autodescrittivi.
  • Formato CSV: Google SecOps fornisce anche un parser per i log di flusso VPC di AWS in formato CSV. Questo formato elenca le chiavi dei campi una sola volta nella riga di intestazione, mentre le righe successive contengono solo valori separati da virgole.

Poiché il formato CSV non include le chiavi dei campi in ogni voce di log, il parser AWS_VPC_FLOW_CSV si basa su un ordine rigoroso e predefinito dei valori. Per una corretta analisi, i file CSV devono rispettare il seguente ordine dei campi:

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

Di seguito è riportato un esempio di riga di log CSV:

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

Per i campi in cui non è disponibile alcun valore, deve essere passato un valore vuoto (ad esempio , ,) per mantenere l'ordine posizionale corretto all'interno della riga CSV.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps.
  • Accesso privilegiato ad AWS.

Opzione 1: configura l'esportazione dei log di flusso VPC AWS utilizzando AWS S3 (formato di testo)

La sezione seguente descrive come configurare le autorizzazioni Amazon S3 e Identity and Access Management per consentire l'esportazione dei log di flusso VPC per l'analisi da parte di Google SecOps.

Configura il bucket AWS S3 e IAM per Google SecOps

  1. Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket.
  2. Salva il nome e la regione del bucket per riferimento futuro (ad esempio, aws-vpc-flowlogs).
  3. Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
  4. Seleziona l'utente creato.
  5. Seleziona la scheda Credenziali di sicurezza.
  6. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  7. Seleziona Servizio di terze parti come Caso d'uso.
  8. Fai clic su Avanti.
  9. (Facoltativo) Aggiungi un tag di descrizione.
  10. Fai clic su Crea chiave di accesso.
  11. Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per riferimento futuro.
  12. Fai clic su Fine.
  13. Seleziona la scheda Autorizzazioni.
  14. Fai clic su Aggiungi autorizzazioni nella sezione Criteri per le autorizzazioni.
  15. Seleziona Aggiungi autorizzazioni.
  16. Seleziona Allega direttamente i criteri.
  17. Cerca il criterio AmazonS3FullAccess.
  18. Seleziona la policy.
  19. Fai clic su Avanti.
  20. Fai clic su Aggiungi autorizzazioni.

Crea log di flusso VPC (destinazione: Amazon S3, formato di testo)

  1. Apri la console AWS > VPC > Your VPCs/Subnets/Network interfaces e seleziona l'ambito di cui vuoi registrare i log.
  2. Fai clic su Azioni > Crea log di flusso.
  3. Fornisci i seguenti dettagli di configurazione:
    • Filtro: scegli Tutti (o Accetta / Rifiuta) in base alle tue norme.
    • Intervallo di aggregazione massimo: seleziona 1 minuto (opzione consigliata) o 10 minuti.
    • Destinazione: Invia a un bucket Amazon S3.
    • ARN bucket S3: inserisci il nome del bucket creato nella sezione precedente nel seguente formato: arn:aws:s3:::<your-bucket>.
    • Formato record di log: seleziona Formato predefinito AWS.
    • Formato file di log: seleziona Testo (normale).
    • (Facoltativo) Disattiva i prefissi compatibili con Hive e le partizioni orarie, a meno che non ti servano.
  4. Fai clic su Crea log di flusso.

Configura un feed in Google SecOps per importare i log di flusso VPC di AWS (testo S3)

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su + Aggiungi nuovo feed.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, AWS VPC Flow Logs - S3 (Text)).
  4. Seleziona Amazon S3 V2 come Tipo di origine.
  5. Seleziona AWS VPC Flow come tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • URI S3: inserisci l'indirizzo del bucket S3 (ad esempio, s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/).
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
    • Durata massima del file: 180 giorni per impostazione predefinita.
    • ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.
    • Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Opzione 2: configura l'esportazione dei log di flusso VPC di AWS utilizzando Amazon CloudWatch Logs e Kinesis Data Firehose

Dopo aver configurato i log di flusso in modo che vengano inviati a CloudWatch, questa opzione fornisce un ulteriore livello di esportazione dei dati trasmettendo in streaming i dati di log a una destinazione a tua scelta utilizzando Kinesis Data Firehose.

Crea log di flusso VPC (destinazione: Amazon CloudWatch Logs)

  1. Apri la console AWS > VPC > Le tue VPC/subnet/interfacce di rete.
  2. Fai clic su Azioni > Crea log di flusso.
  3. Fornisci i seguenti dettagli di configurazione:
    • Filtro: scegli Tutti (o Accetta/Rifiuta) in base alle tue norme.
    • Intervallo di aggregazione massimo: seleziona 1 minuto (opzione consigliata) o 10 minuti.
    • Destinazione: seleziona Invia a CloudWatch Logs.
    • Gruppo di log di destinazione: seleziona o crea un gruppo di log (ad esempio /aws/vpc/flowlogs).
    • Ruolo IAM: seleziona un ruolo che possa scrivere in CloudWatch Logs.
    • Formato record di log: seleziona Predefinito AWS (versione 2) o Personalizzato (include campi aggiuntivi).
  4. Fai clic su Crea log di flusso.

Crea un feed in Google SecOps per ottenere l'URL endpoint e la chiave segreta

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su + Aggiungi nuovo feed.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, AWS VPC Flow Logs - CloudWatch via Firehose).
  4. Seleziona Amazon Data Firehose come Tipo di origine.
  5. Seleziona AWS VPC Flow come tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • Delimitatore di divisione: n facoltativo.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset (ad esempio, aws.vpc.flowlogs.cwl).
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed (ad esempio, source=vpc_flow_firehose).
  8. Fai clic su Avanti.
  9. Rivedi la configurazione del feed e fai clic su Invia.
  10. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  11. Copia e salva la chiave segreta, perché non potrai più visualizzarla.
  12. Vai alla scheda Dettagli.
  13. Copia l'URL dell'endpoint del feed dal campo Endpoint Information (Informazioni sull'endpoint).
  14. Fai clic su Fine.

Crea una chiave API per il feed Amazon Data Firehose

  1. Vai alla pagina Credenziali della console Google Cloud.
  2. Fai clic su Crea credenziali e poi seleziona Chiave API.
  3. Copia e salva la chiave in un luogo sicuro.
  4. Limita l'accesso della chiave API all'API Google SecOps.

Configura le autorizzazioni IAM per CloudWatch Logs in Firehose

  1. Nella console AWS, vai a IAM > Policy > Crea policy > JSON.
  2. Incolla il seguente JSON della policy, sostituendo <region> e <account-id> con la tua regione AWS e il tuo ID account:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Action": [
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
       }
    ]
    }
    
  3. Assegna un nome alla policy CWLtoFirehoseWrite e fai clic su Crea policy.

  4. Vai a IAM > Ruoli > Crea ruolo.

  5. Seleziona Norme di attendibilità personalizzate e incolla:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Principal": {
          "Service": "logs.<region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
       }
    ]
    }
    
  6. Collega la policy CWLtoFirehoseWrite al ruolo.

  7. Assegna al ruolo il nome CWLtoFirehoseRole e fai clic su Crea ruolo.

Configura Amazon Kinesis Data Firehose per Google SecOps

  1. Nella console AWS, vai a Kinesis > Data Firehose > Crea flusso di distribuzione.
  2. Fornisci i seguenti dettagli di configurazione:
    • Origine: seleziona Inserimento diretto o altre origini.
    • Destinazione: scegli Endpoint HTTP.
    • Nome: cwlogs-to-secops
    • URL endpoint HTTP: inserisci l'URL endpoint HTTPS del feed di Google SecOps con la chiave API aggiunta: <ENDPOINT_URL>?key=<API_KEY>
    • Metodo HTTP: seleziona POST.
  3. In Chiave di accesso:
    • Inserisci la chiave segreta generata nel feed Google SecOps (che diventa l'intestazione X-Amz-Firehose-Access-Key).
    • Suggerimenti per il buffering: imposta Dimensione del buffer = 1 MiB, Intervallo buffer = 60 secondi.
    • Compressione: seleziona Disattivata.
    • Backup S3: seleziona Disattivato.
    • Lascia le impostazioni di riprova e registrazione come predefinite.
  4. Fai clic su Crea stream di pubblicazione.

Iscrivi il gruppo di log CloudWatch al flusso Firehose

  1. Vai a CloudWatch > Log > Gruppi di log.
  2. Seleziona il gruppo di log di destinazione (ad esempio /aws/vpc/flowlogs).
  3. Apri la scheda Filtri sottoscrizione e fai clic su Crea.
  4. Scegli Crea filtro di iscrizione ad Amazon Kinesis Data Firehose.
  5. Fornisci i seguenti dettagli di configurazione:
    • Destinazione: seleziona lo stream di distribuzione cwlogs-to-secops.
    • Concedi autorizzazione: scegli il ruolo CWLtoFirehoseRole.
    • Nome filtro: inserisci all-events.
    • Pattern di filtro: lascia vuoto per inviare tutti gli eventi.
  6. Fai clic su Avvia streaming.

Opzione 3: configura i log di flusso VPC di AWS in formato CSV utilizzando Amazon S3

(Facoltativo) Trasformare i log in formato CSV

  1. Assicurati che le righe CSV seguano un ordine delle colonne rigoroso e coerente che corrisponda ai campi selezionati nel formato personalizzato dei log di flusso VPC (ad esempio, il set di campi canonico v2 o il set v5/v7). Non includere una riga di intestazione nei file di produzione, a meno che l'opzione del parser non ne preveda una.
  2. Scrivi i file CSV in un prefisso stabile, ad esempio s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/.

Configura un feed in Google SecOps per importare i log di flusso VPC AWS (CSV)

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su + Aggiungi nuovo feed.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, AWS VPC Flow Logs - S3 (CSV)).
  4. Seleziona Amazon S3 V2 come Tipo di origine.
  5. Seleziona AWS VPC Flow (CSV) come Tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • URI S3: inserisci l'indirizzo del bucket S3 (ad esempio, s3://<your-bucket>/vpcflowlogs-csv/<region>/).
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
    • Durata massima del file: 180 giorni per impostazione predefinita.
    • ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.
    • Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Tabella di mappatura UDM

Esempio di log Campo log mapping UDM
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,1.1.1.1,2.2.2.2,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-1aa1a1a1a1aa1aa,subnet-1aa1a1a1a1aa1a1,i-1aa1a1a1a1aa1a,0,IPv4,1.1.1.1,2.2.2.2,ap-northeast-1,masked_zone,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-"" collection_time: { seconds: 1741159282 nanos: 254633949 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a principal.user.product_object_id
1.1.1.1 principal.ip
2.2.2.2 target.ip
51256 principal.port
16020 target.port
6 network.ip_protocol
14 network.sent_packets
3881 network.received_bytes
1723542839 metadata.event_timestamp about.resource.attribute.labels(start_time)
1723542871 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-a1a1a1a1a1 principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 about.resource.attribute.labels (type)
IPv4 additional.fields (pkt-srcaddr-ip)
1.1.1.1 intermediary.ip
2.2.2.2 additional.fields (tcp_flags)
ap-northeast-1 not getting mapped
masked_zone not getting mapped
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
ingress network.direction
additional.fields (traffic_path)
- not getting mapped
- not getting mapped-
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,5.5.5.5,2.2.2.2,53102,16020,6,8,2112,1723542839,1723542871,ACCEPT,OK,vpc-1aa1a1a1a1aa1a,subnet-1aa1a1a1a1aa1a,i-1aa1a1a1a1aa1a,0,IPv4,5.5.5.5,2.2.2.2,ap-northeast-1,masked_zone,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-"" collection_time: { seconds: 1741159390 nanos: 374934225 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a principal.user.product_object_id
5.5.5.5 principal.ip
2.2.2.2 target.ip
53102 principal.port
16020 target.port
6 network.ip_protocol
8 network.sent_packets
2112 network.received_bytes
1723542839 metadata.event_timestamp about.resource.attribute.labels(start_time)
1723542871 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-1aa1a1a1a1aa1a principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 about.resource.attribute.labels (type)
IPv4 additional.fields (pkt-srcaddr-ip)
5.5.5.5 intermediary.ip
2.2.2.2 additional.fields (tcp_flags)
ap-northeast-1 not getting mapped
masked_zone not getting mapped
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
ingress network.direction
additional.fields (traffic_path)
- not getting mapped
- not getting mapped1
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,1.1.2.2,1.1.2.1,36358,42659,6,1091,3.754327e+06,1747981553,1747981582,ACCEPT,OK,vpc-1aa1a1a1a1aa1a,subnet-1aa1a1a1a1aa1a,i-1aa1a1a1a1aa1a,0,IPv4,1.1.2.2,1.1.2.1,ap-northeast-1,apne1-az1,-,-,-,-,egress,1,-,-,-,-,-,-,-,-,-,-,604249"" collection_time: { seconds: 1748238552 nanos: 479960397 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a about.resource.attribute.labels
1.1.2.2 principal.ip
1.1.2.1 target.ip
36358 principal.port
42659 target.port
6 network.ip_protocol
1091 network.sent_packets
3.75E+06 network.sent_bytes
1747981553 metadata.event_timestamp about.resource.attribute.labels(start_time)
1747981582 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-1aa1a1a1a1aa1a principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 additional.fields (tcp_flags)
IPv4 about.resource.attribute.labels(type)
1.1.2.2 "additional.fields (pkt-srcaddr-ip)
Condizione:
if [pkt_dstaddr_ip] != [dstaddr] will map to intermediary.ip"
1.1.2.1 "additional.fields (pkt-dstaddr-ip)
Condizione:
if [pkt_srcaddr_ip] != [srcaddr] will map to intermediary.ip"
ap-northeast-1 principal.location.country_or_region
apne1-az1 principal.location.name
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
egress network.direction
1 additional.fields (traffic_path)
- not getting mapped
604249 not getting mapped
Connection_info.Tcp_flags additional.fields
connection_info.tcp_flags additional.fields
Dst_endpoint.Interface_uid target.user.product_object_id
Log_status additional.fields
Src_endpoint.Instance_uid principal.user.product_object_id
Tcp_flags additional.fields
tcp_flags additional.fields
tgw_dst_az_id target.resource.attribute.cloud.availability_zone
tgw_id target.resource.product_object_id
tgw_src_az_id principal.location.name
Traffic_Bytes network.sent_bytes
Traffic_Packets network.sent_packets

Delta release

Google SecOps ha rilasciato la versione 16.0 del parser dei log dei flussi VPC di AWS, che include modifiche significative al mapping dei campi di log Parser_Name ai campi UDM e modifiche al mapping dei tipi di eventi.

Differenza tra le mappature dei campi dei log

Campo log Mappatura precedente Mappatura attuale
bytes network.sent_bytes Removed
Connection_info.Tcp_flags network.dhcp.flags additional.fields
connection_info.tcp_flags network.dhcp.flags additional.fields
Dst_endpoint.Interface_uid additional.fields target.user.product_object_id
flow_direction about.resource.attribute.labels Removed
Log_status about.resource.attribute.labels additional.fields
Src_endpoint.Instance_uid additional.fields principal.user.product_object_id
Tcp_flags network.dhcp.flags additional.fields
tcp_flags network.dhcp.flags additional.fields
tgw_dst_az_id target.resource.attribute.labels target.resource.attribute.cloud.availability_zone
tgw_id additional.fields target.resource.product_object_id
tgw_src_az_id principal.resource.attribute.labels principal.location.name
Traffic_Bytes additional.fields network.sent_bytes
Traffic_Packets additional.fields network.sent_packets

Differenza tra le mappature dei tipi di eventi

Più eventi classificati in modo generico ora sono classificati correttamente con tipi di eventi significativi.

Tipo di evento Campi del log Motivo
FILE_UNCATEGORIZED Bytes Viene gestito di recente in questa PR mappata a un tipo di evento specifico appropriato
NETWORK_CONNECTION protocol Viene gestito di recente in questa PR mappata a un tipo di evento specifico appropriato
NETWORK_UNCATEGORIZED Class_name Viene gestito di recente in questa PR mappata a un tipo di evento specifico appropriato
NETWORK_UNCATEGORIZED flow_direction Viene gestito di recente in questa PR mappata a un tipo di evento specifico appropriato
STATUS_UPDATE [src_endpoint][ip] Viene gestito di recente in questa PR mappata a un tipo di evento specifico appropriato

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.