AWS-VPC-Flusslogs erfassen
In diesem Dokument wird beschrieben, wie AWS VPC-Flusslogs mit drei verschiedenen Methoden in Google Security Operations aufgenommen werden: Amazon S3 (Textformat), Amazon CloudWatch Logs mit Kinesis Data Firehose und CSV-Format in Amazon S3. AWS VPC Flow Logs ist eine Funktion, mit der Sie Informationen über den IP-Traffic erfassen können, der in Ihrer VPC an Netzwerkschnittstellen ein- oder ausgeht. Mit dieser Integration können Sie diese Logs zur Analyse und zum Monitoring an Google SecOps senden.
Unterstützte AWS-VPC-Flusslogformate
Google SecOps unterstützt die Aufnahme von AWS VPC Flow Logs in zwei primären Textformaten:
- JSON-Format: Beim Logtyp
AWS_VPC_FLOW
werden Logs im JSON-Format geparst. In diesem Format enthält jeder Logeintrag sowohl einen Schlüssel als auch den entsprechenden Wert, sodass die Daten selbsterklärend sind. - CSV-Format: Google SecOps bietet auch einen Parser für AWS VPC-Flusslogs im CSV-Format. In diesem Format werden Feldschlüssel nur einmal in der Kopfzeile aufgeführt. Die nachfolgenden Zeilen enthalten nur durch Kommas getrennte Werte.
Da das CSV-Format keine Feldschlüssel in den einzelnen Logeinträgen enthält, ist für den AWS_VPC_FLOW_CSV-Parser eine strenge, vordefinierte Reihenfolge der Werte erforderlich. Ihre CSV-Dateien müssen die folgende Feldreihenfolge für das korrekte Parsen einhalten:
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
Hier ein Beispiel für eine CSV-Logzeile:
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,,-,-,-,-,-,-,-,-,-,-
Für Felder, für die kein Wert verfügbar ist, sollte ein leerer Wert (z. B. ,,) übergeben werden, um die richtige Position in der CSV-Zeile beizubehalten.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- Privilegierter Zugriff auf AWS.
Option 1: AWS VPC-Flusslogexport mit AWS S3 konfigurieren (Textformat)
Im folgenden Abschnitt wird beschrieben, wie Sie Amazon S3- und IAM-Berechtigungen (Identity and Access Management) konfigurieren, um den Export von VPC-Flusslogs für die Analyse durch Google SecOps zu ermöglichen.
AWS S3-Bucket und IAM für Google SecOps konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets zur späteren Verwendung (z. B.
aws-vpc-flowlogs
). - Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie Drittanbieterdienst als Anwendungsfall aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungstag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die zukünftige Verwendung zu speichern.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess.
- Wählen Sie die Richtlinie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
VPC-Flusslogs erstellen (Ziel: Amazon S3, Textformat)
- Öffnen Sie die AWS Console > VPC > Ihre VPCs/Subnetze/Netzwerkschnittstellen und wählen Sie den Bereich aus, den Sie protokollieren möchten.
- Klicken Sie auf Aktionen > Flow-Log erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Filter: Wählen Sie gemäß Ihrer Richtlinie Alle (oder Annehmen / Ablehnen) aus.
- Maximales Aggregationsintervall: Wählen Sie 1 Minute (empfohlen) oder 10 Minuten aus.
- Ziel: An einen Amazon S3-Bucket senden.
- S3-Bucket-ARN: Geben Sie den im vorherigen Abschnitt erstellten Bucket-Namen im folgenden Format ein:
arn:aws:s3:::<your-bucket>
. - Format für Logeinträge: Wählen Sie AWS-Standardformat aus.
- Log file format (Logdateiformat): Wählen Sie Text (Plain) (Text (einfach)) aus.
- Optional: Deaktivieren Sie Hive-kompatible Präfixe und Stündliche Partitionen, sofern Sie sie nicht benötigen.
- Klicken Sie auf Flow-Log erstellen.
Feed in Google SecOps konfigurieren, um AWS VPC-Flusslogs (S3-Text) aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf + Neuen Feed hinzufügen.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B.
AWS VPC Flow Logs - S3 (Text)
. - Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie AWS VPC Flow als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- S3-URI: Geben Sie die Adresse des S3-Buckets ein, z. B.
s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/
. - Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
- Maximales Dateialter: Standardmäßig 180 Tage.
- Zugriffsschlüssel-ID: Zugriffsschlüssel des Nutzers mit Zugriff auf den S3-Bucket.
- Secret Access Key (Geheimer Zugriffsschlüssel): Geheimer Nutzersicherheitsschlüssel mit Zugriff auf den S3-Bucket.
- Asset-Namespace: Der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- S3-URI: Geben Sie die Adresse des S3-Buckets ein, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Option 2: AWS VPC Flow Logs-Export mit Amazon CloudWatch Logs und Kinesis Data Firehose konfigurieren
Nachdem Sie die Flow-Logs für CloudWatch eingerichtet haben, bietet diese Option eine zusätzliche Ebene für den Datenexport, indem diese Logdaten mit Kinesis Data Firehose an ein Ziel Ihrer Wahl gestreamt werden.
VPC-Flusslogs erstellen (Ziel: Amazon CloudWatch Logs)
- Öffnen Sie die AWS Console> VPC > Ihre VPCs/Subnetze/Netzwerkschnittstellen.
- Klicken Sie auf Aktionen > Flow-Log erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Filter: Wählen Sie gemäß Ihrer Richtlinie Alle (oder Akzeptieren/Ablehnen) aus.
- Maximales Aggregationsintervall: Wählen Sie 1 Minute (empfohlen) oder 10 Minuten aus.
- Ziel: Wählen Sie An CloudWatch Logs senden aus.
- Ziel-Loggruppe: Wählen Sie eine Loggruppe aus oder erstellen Sie eine (z. B.
/aws/vpc/flowlogs
). - IAM-Rolle: Wählen Sie eine Rolle aus, die in CloudWatch Logs schreiben kann.
- Logeintragformat: Wählen Sie AWS-Standard (Version 2) oder Benutzerdefiniert (mit zusätzlichen Feldern) aus.
- Klicken Sie auf Flow-Log erstellen.
Feed in Google SecOps erstellen, um Endpunkt-URL und Secret Key zu erhalten
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf + Neuen Feed hinzufügen.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B.
AWS VPC Flow Logs - CloudWatch via Firehose
. - Wählen Sie Amazon Data Firehose als Quelltyp aus.
- Wählen Sie AWS VPC Flow als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung: Optional
n
. - Asset-Namespace: Der Asset-Namespace, z. B.
aws.vpc.flowlogs.cwl
. - Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll (z. B.
source=vpc_flow_firehose
).
- Trennzeichen für Aufteilung: Optional
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration und klicken Sie auf Senden.
- Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren Sie den geheimen Schlüssel und speichern Sie ihn, da Sie ihn nicht noch einmal aufrufen können.
- Wechseln Sie zum Tab Details.
- Kopieren Sie die Feed-Endpunkt-URL aus dem Feld Endpoint Information (Endpunktinformationen).
- Klicken Sie auf Fertig.
API-Schlüssel für den Amazon Data Firehose-Feed erstellen
- Rufen Sie in der Google Cloud Console die Seite Anmeldedaten auf.
- Klicken Sie auf Anmeldedaten erstellen und wählen Sie dann API-Schlüssel aus.
- Kopieren Sie den Schlüssel und speichern Sie ihn an einem sicheren Ort.
- Schränken Sie den Zugriff des API-Schlüssels auf die Google SecOps API ein.
IAM-Berechtigungen für CloudWatch Logs zu Firehose konfigurieren
- Rufen Sie in der AWS Console IAM > Richtlinien > Richtlinie erstellen > JSON auf.
Fügen Sie die folgende Richtlinien-JSON ein und ersetzen Sie
<region>
und<account-id>
durch Ihre AWS-Region und Konto-ID:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops" } ] }
Geben Sie der Richtlinie den Namen
CWLtoFirehoseWrite
und klicken Sie auf Richtlinie erstellen.Klicken Sie auf IAM > Rollen > Rolle erstellen.
Wählen Sie Benutzerdefinierte Vertrauensrichtlinie aus und fügen Sie Folgendes ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Hängen Sie die Richtlinie
CWLtoFirehoseWrite
an die Rolle an.Geben Sie der Rolle den Namen
CWLtoFirehoseRole
und klicken Sie auf Rolle erstellen.
Amazon Kinesis Data Firehose für Google SecOps konfigurieren
- Rufen Sie in der AWS Console Kinesis > Data Firehose > Create delivery stream auf.
- Geben Sie die folgenden Konfigurationsdetails an:
- Quelle: Wählen Sie Direkter PUT oder andere Quellen aus.
- Ziel: Wählen Sie HTTP-Endpunkt aus.
- Name:
cwlogs-to-secops
- HTTP-Endpunkt-URL: Geben Sie die Feed-HTTPS-Endpunkt-URL aus Google SecOps mit angehängtem API-Schlüssel ein:
<ENDPOINT_URL>?key=<API_KEY>
. - HTTP-Methode: Wählen Sie POST aus.
- Unter Zugriffsschlüssel:
- Geben Sie den Secret key ein, der im Google SecOps-Feed generiert wurde (dies wird zum
X-Amz-Firehose-Access-Key
-Header). - Pufferungshinweise: Legen Sie Puffergröße auf 1 MiB und Pufferintervall auf 60 Sekunden fest.
- Komprimierung: Wählen Sie Deaktiviert aus.
- S3-Sicherung: Wählen Sie Deaktiviert aus.
- Behalten Sie für die Einstellungen retry und logging die Standardwerte bei.
- Geben Sie den Secret key ein, der im Google SecOps-Feed generiert wurde (dies wird zum
- Klicken Sie auf Lieferstream erstellen.
CloudWatch Logs-Gruppe für den Firehose-Stream abonnieren
- Rufen Sie CloudWatch > Logs > Log groups auf.
- Wählen Sie die Zielloggruppe aus, z. B.
/aws/vpc/flowlogs
. - Öffnen Sie den Tab Abo-Filter und klicken Sie auf Erstellen.
- Wählen Sie Amazon Kinesis Data Firehose-Abo-Filter erstellen aus.
- Geben Sie die folgenden Konfigurationsdetails an:
- Ziel: Wählen Sie den Auslieferungsstream
cwlogs-to-secops
aus. - Berechtigung erteilen: Wählen Sie die Rolle
CWLtoFirehoseRole
aus. - Filtername: Geben Sie
all-events
ein. - Filtermuster: Lassen Sie das Feld leer, um alle Ereignisse zu senden.
- Ziel: Wählen Sie den Auslieferungsstream
- Klicken Sie auf Streaming starten.
Option 3: AWS VPC-Flusslogs im CSV-Format mit Amazon S3 konfigurieren
Protokolle in das CSV-Format umwandeln (optional)
- Achten Sie darauf, dass die CSV-Zeilen einer strengen, einheitlichen Spaltenreihenfolge entsprechen, die mit den Feldern übereinstimmt, die Sie im benutzerdefinierten Format für VPC-Flow-Logs ausgewählt haben (z. B. der kanonische v2-Feldsatz oder Ihr v5-/v7-Satz). Fügen Sie in Produktionsdateien keine Kopfzeile ein, es sei denn, dies ist für Ihre Parseroption erforderlich.
- Schreiben Sie CSV-Dateien in ein stabiles Präfix, z. B.
s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/
.
Feed in Google SecOps konfigurieren, um AWS VPC-Flusslogs (CSV) aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf + Neuen Feed hinzufügen.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B.
AWS VPC Flow Logs - S3 (CSV)
. - Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie AWS VPC Flow (CSV) als Log type (Logtyp) aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- S3-URI: Geben Sie die Adresse des S3-Buckets ein, z. B.
s3://<your-bucket>/vpcflowlogs-csv/<region>/
. - Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
- Maximales Dateialter: Standardmäßig 180 Tage.
- Zugriffsschlüssel-ID: Zugriffsschlüssel des Nutzers mit Zugriff auf den S3-Bucket.
- Secret Access Key (Geheimer Zugriffsschlüssel): Geheimer Nutzersicherheitsschlüssel mit Zugriff auf den S3-Bucket.
- Asset-Namespace: Der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- S3-URI: Geben Sie die Adresse des S3-Buckets ein, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
accountId | read_only_udm.metadata.product_log_id | Wert, der aus dem Rohlogfeld accountId extrahiert wurde. |
Aktion | read_only_udm.security_result.action_details | Wert, der aus dem Rohlogfeld action extrahiert wurde. |
Aktion | read_only_udm.security_result.action | Wird ALLOW zugeordnet, wenn action ACCEPT ist, und BLOCK, wenn action REJECT ist. |
az_id | read_only_udm.principal.cloud.availability_zone | Wert, der aus dem Rohlogfeld az_id extrahiert wurde. |
Byte | read_only_udm.network.received_bytes | Wert, der aus dem Rohlogfeld bytes extrahiert wurde. |
dstaddr | read_only_udm.target.ip | Wert, der aus dem Rohlogfeld dstaddr extrahiert wurde. |
dstport | read_only_udm.target.port | Wert, der aus dem Rohlogfeld dstport extrahiert wurde. |
end_time | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld end_time extrahiert wurde. |
end_time | read_only_udm.metadata.ingested_timestamp | Wert, der aus dem Rohlogfeld end_time extrahiert wurde. |
flow_direction | read_only_udm.network.direction | Wird INBOUND zugeordnet, wenn flow_direction gleich ingress ist, und OUTBOUND, wenn flow_direction gleich egress ist. |
InstanceID | read_only_udm.principal.cloud.project.id | Wert, der aus dem Rohlogfeld InstanceID extrahiert wurde. |
interfaceId | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld interfaceId extrahiert wurde. |
logStatus | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld logStatus extrahiert wurde. |
Pakete | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld packets extrahiert wurde. |
pkt_dst_aws_service | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld pkt_dst_aws_service extrahiert wurde. |
pkt_dstaddr | read_only_udm.intermediary.ip | Wert, der aus dem Rohlogfeld pkt_dstaddr extrahiert wurde. |
pkt_srcaddr | read_only_udm.intermediary.ip | Wert, der aus dem Rohlogfeld pkt_srcaddr extrahiert wurde. |
pkt_src_aws_service | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld pkt_src_aws_service extrahiert wurde. |
Protokoll | read_only_udm.network.ip_protocol | Wird TCP zugeordnet, wenn protocol = 6, UDP, wenn protocol = 17, andernfalls UNKNOWN_IP_PROTOCOL. |
Region | read_only_udm.principal.location.country_or_region | Wert, der aus dem Rohlogfeld Region extrahiert wurde. |
srcaddr | read_only_udm.principal.ip | Wert, der aus dem Rohlogfeld srcaddr extrahiert wurde. |
srcport | read_only_udm.principal.port | Wert, der aus dem Rohlogfeld srcport extrahiert wurde. |
start_time | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld start_time extrahiert wurde. |
start_time | read_only_udm.metadata.event_timestamp | Wert, der aus dem Rohlogfeld start_time extrahiert wurde. |
SubnetID | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld SubnetID extrahiert wurde. |
tcp_flags | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld tcp_flags extrahiert wurde. |
traffic_path | read_only_udm.about.resource.attribute.labels.value | Wert, der aus dem Rohlogfeld traffic_path extrahiert wurde. |
Version | read_only_udm.metadata.product_version | Wert, der aus dem Rohlogfeld version extrahiert wurde. |
vpcID | read_only_udm.principal.cloud.vpc.id | Wert, der aus dem Rohlogfeld vpcID extrahiert wurde. |
read_only_udm.metadata.vendor_name | Hartcodiert auf AMAZON . |
|
read_only_udm.metadata.product_name | Hartcodiert auf AWS VPC Flow . |
|
read_only_udm.metadata.log_type | Hartcodiert auf AWS_VPC_FLOW . |
|
read_only_udm.metadata.event_type | Wird NETWORK_CONNECTION zugeordnet, wenn dstaddr nicht leer ist, andernfalls GENERIC_EVENT . |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten