AWS Lambda-Funktionslogs erfassen
Parserversion:2.0
In diesem Dokument wird beschrieben, wie Sie AWS Lambda-Funktionslogs mit Amazon S3 in Google Security Operations aufnehmen.
AWS Lambda ist ein serverloser Computing-Dienst, der Ihren Code als Reaktion auf Ereignisse ausführt und die zugrunde liegenden Rechenressourcen automatisch verwaltet. Lambda sendet automatisch alle Funktionslogs (Plattformlogs, Erweiterungslogs und Anwendungsausgaben) an Amazon CloudWatch Logs und erstellt pro Funktion eine Loggruppe. Bei dieser Integration wird Amazon Data Firehose verwendet, um Lambda-Logereignisse aus CloudWatch Logs in einen S3-Bucket zu streamen. Google SecOps nimmt die Daten dann über einen Amazon S3 V2-Feed auf.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Privilegierter Zugriff auf die AWS Management Console mit Berechtigungen zum Verwalten von:
- AWS Lambda (Funktionen, Logging-Konfiguration)
- Amazon CloudWatch Logs (Loggruppen, Abonnementfilter)
- Amazon Data Firehose (Übermittlungsstreams)
- Amazon S3 (Buckets)
- AWS IAM (Rollen, Richtlinien, Nutzer)
CloudWatch Logs-Loggruppe für Ihre Lambda-Funktion prüfen
AWS Lambda erstellt automatisch eine CloudWatch Logs-Loggruppe für jede Funktion, wenn sie zum ersten Mal aufgerufen wird. Die Standardbenennungskonvention für Protokollgruppen lautet:
/aws/lambda/<function-name>
So nehmen Sie eine Bestätigung vor:
- Rufen Sie in der AWS Console die Seite CloudWatch > Logs > Log groups auf.
- Suchen Sie nach
/aws/lambda/. Prüfen Sie, ob für jede Lambda-Funktion, deren Logs Sie aufnehmen möchten, eine Loggruppe vorhanden ist.
AWS S3-Bucket konfigurieren
- Erstellen Sie einen Amazon S3-Bucket gemäß diesem Nutzerhandbuch: Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets für die spätere Verwendung (z. B.
lambda-logs-to-secops).
IAM-Rolle für Amazon Data Firehose konfigurieren
Amazon Data Firehose benötigt eine IAM-Rolle, um Protokolle in Ihren S3-Bucket zu schreiben.
IAM-Richtlinie erstellen
- Rufen Sie in der AWS-Konsole IAM > Richtlinien > Richtlinie erstellen auf.
- Wählen Sie den Tab JSON aus.
Fügen Sie die folgende Richtlinie ein und ersetzen Sie
lambda-logs-to-secopsdurch den Namen Ihres tatsächlichen Buckets:{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Delivery", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::lambda-logs-to-secops", "arn:aws:s3:::lambda-logs-to-secops/*" ] }, { "Sid": "CloudWatchLogging", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/lambda-logs-to-secops:log-stream:*" } ] }Klicken Sie auf Weiter.
Geben Sie im Feld Richtlinienname den Namen
LambdaLogsFirehoseS3Policyein.Klicken Sie auf Richtlinie erstellen.
IAM-Rolle erstellen
- Klicken Sie auf IAM > Rollen > Rolle erstellen.
- Wählen Sie Benutzerdefinierte Vertrauensrichtlinie aus.
Fügen Sie die folgende Vertrauensrichtlinie ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Klicken Sie auf Weiter.
Suchen Sie nach LambdaLogsFirehoseS3Policy und wählen Sie die Richtlinie aus.
Klicken Sie auf Weiter.
Geben Sie im Feld Rollenname
LambdaLogsFirehoseToS3Roleein.Klicken Sie auf Rolle erstellen.
Amazon Data Firehose-Stream erstellen
- Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
- Wählen Sie im Navigationsbereich Amazon Data Firehose aus.
- Klicken Sie auf Firehose-Stream erstellen.
- Geben Sie unter Quelle und Ziel auswählen die folgende Konfiguration an:
- Quelle: Wählen Sie Direct PUT aus.
- Ziel: Wählen Sie Amazon S3 aus.
- Geben Sie im Feld Firehose-Streamname
lambda-logs-to-secopsein. Gehen Sie unter Datensätze transformieren im Abschnitt Quelldatensätze aus Amazon CloudWatch-Logs dekomprimieren so vor:
- Wählen Sie Dekomprimierung aktivieren aus.
- Wählen Sie nicht die Option Nachrichtenextraktion aktivieren aus.
Gehen Sie unter Zieleinstellungen so vor:
- S3-Bucket: Wählen Sie den S3-Bucket
lambda-logs-to-secopsaus. - S3-Bucket-Präfix (optional): Geben Sie
lambda-logs/ein. - S3-Bucket-Fehlerausgabepräfix (optional): Geben Sie
firehose-errors/ein.
- S3-Bucket: Wählen Sie den S3-Bucket
Unter Pufferhinweise:
- Puffergröße:
5MiB (Standard). - Pufferintervall:
300Sekunden (Standard).
- Puffergröße:
Unter Erweiterte Einstellungen:
- Serverseitige Verschlüsselung: Optional. Aktivieren Sie diese Option, wenn eine Verschlüsselung erforderlich ist.
- Fehler-Logging: Wählen Sie Aktiviert aus (empfohlen).
- Berechtigungen: Wählen Sie Vorhandene IAM-Rolle auswählen und dann
LambdaLogsFirehoseToS3Roleaus.
Klicken Sie auf Firehose-Stream erstellen.
Warten Sie, bis der Status des Streams Aktiv lautet.
IAM-Rolle für CloudWatch Logs konfigurieren
CloudWatch Logs benötigt eine IAM-Rolle, um Logdaten an den Firehose-Stream zu senden.
IAM-Richtlinie erstellen
- Rufen Sie IAM > Richtlinien > Richtlinie erstellen auf.
- Wählen Sie den Tab JSON aus.
Fügen Sie die folgende Richtlinie 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/lambda-logs-to-secops" } ] }Klicken Sie auf Weiter.
Geben Sie im Feld Richtlinienname den Namen
LambdaLogsCWLtoFirehosePolicyein.Klicken Sie auf Richtlinie erstellen.
IAM-Rolle erstellen
- Klicken Sie auf IAM > Rollen > Rolle erstellen.
- Wählen Sie Benutzerdefinierte Vertrauensrichtlinie aus.
Fügen Sie die folgende Vertrauensrichtlinie ein (ersetzen Sie
<region>durch Ihre AWS-Region):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Klicken Sie auf Weiter.
Suchen Sie nach LambdaLogsCWLtoFirehosePolicy und wählen Sie die Richtlinie aus.
Klicken Sie auf Weiter.
Geben Sie im Feld Rollenname den Wert
LambdaLogsCWLtoFirehoseRoleein.Klicken Sie auf Rolle erstellen.
CloudWatch Logs-Abo-Filter erstellen
- Rufen Sie in der AWS Console die Seite CloudWatch > Logs > Log groups auf.
- Wählen Sie die Loggruppe
/aws/lambda/<function-name>aus. - Wählen Sie den Tab Abofitler aus.
- Klicken Sie auf Erstellen > Amazon Data Firehose-Abo-Filter erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Ziel: Wählen Sie den Firehose-Stream
lambda-logs-to-secopsaus. - Berechtigung erteilen: Wählen Sie die Rolle
LambdaLogsCWLtoFirehoseRoleaus. - Name des Abo-Filters: Geben Sie einen aussagekräftigen Namen ein, z. B.
lambda-logs-to-secops-filter. - Logformat: Wählen Sie Other (Sonstiges) aus.
- Abofiltermuster: Lassen Sie dieses Feld leer, um alle Lambda-Funktions-Logereignisse zu senden.
- Ziel: Wählen Sie den Firehose-Stream
Klicken Sie auf Streaming starten.
IAM-Nutzer für Google SecOps konfigurieren
Google SecOps benötigt einen IAM-Nutzer mit Zugriff auf den S3-Bucket, um die bereitgestellten Logs aufzunehmen.
- Erstellen Sie einen Nutzer gemäß dem Nutzerhandbuch IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Bereich 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 Zugriffsschlüssel und den geheimen 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.
Feed in Google SecOps konfigurieren, um AWS Lambda-Funktionslogs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie einen eindeutigen Feednamen ein.
- Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie AWS Lambda-Funktion als Protokolltyp aus.
- Klicken Sie auf Weiter und dann auf Senden.
- Geben Sie Werte für die folgenden Felder an:
- S3-URI:
s3://lambda-logs-to-secops/lambda-logs/ - Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus.
- Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden (Standardwert: 180 Tage)
- Zugriffsschlüssel-ID: Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket
- Geheimer Zugriffsschlüssel: Geheimer Schlüssel des Nutzers mit Zugriff auf den S3-Bucket
- Asset-Namespace: Der Asset-Namespace
- Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll
- S3-URI:
- Klicken Sie auf Weiter und dann auf Senden.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
Activity_id_label |
additional.fields |
Zusammengeführt |
Arrays_label |
additional.fields |
Zusammengeführt |
Name_label |
additional.fields |
Zusammengeführt |
Type_1_label |
additional.fields |
Zusammengeführt |
Type_id_label |
additional.fields |
Zusammengeführt |
Type_label |
additional.fields |
Zusammengeführt |
Uid_label |
additional.fields |
Zusammengeführt |
Uid_label_1 |
additional.fields |
Zusammengeführt |
Value_label |
additional.fields |
Zusammengeführt |
__type_label |
additional.fields |
Zusammengeführt |
attempts_label |
additional.fields |
Zusammengeführt |
class_name_label |
additional.fields |
Zusammengeführt |
contentType_label |
additional.fields |
Zusammengeführt |
env_label |
additional.fields |
Zusammengeführt |
extendedRequestId_label |
additional.fields |
Zusammengeführt |
feature_name_label |
additional.fields |
Zusammengeführt |
line_number_label |
additional.fields |
Zusammengeführt |
logType_label |
additional.fields |
Zusammengeführt |
product_name_label |
additional.fields |
Zusammengeführt |
requestid_label |
additional.fields |
Zusammengeführt |
sourceAccount_label |
additional.fields |
Zusammengeführt |
stack_label |
additional.fields |
Zusammengeführt |
totalRetryDelay_label |
additional.fields |
Zusammengeführt |
vendor_name_label |
additional.fields |
Zusammengeführt |
version_label |
additional.fields |
Zusammengeführt |
has_principal |
extensions.auth.type |
Zugeordnet: true → AUTHTYPE_UNSPECIFIED |
description |
metadata.description |
Direkt zugeordnet |
file_desc |
metadata.description |
Direkt zugeordnet |
Time |
metadata.event_timestamp |
Als UNIX geparst |
time |
metadata.event_timestamp |
Als yyyy-MM-ddTHH:mm:ss.SSSZ geparst |
has_principal |
metadata.event_type |
Zugeordnet: true → USER_LOGIN, true → NETWORK_HTTP, true → NETWORK_CONNECTION, `true... |
has_principal_user |
metadata.event_type |
Zugeordnet: true → USER_RESOURCE_ACCESS |
Api.Operation |
metadata.product_event_type |
Direkt zugeordnet |
name |
metadata.product_event_type |
Direkt zugeordnet |
Api.Request.Uid |
metadata.product_log_id |
Direkt zugeordnet |
id |
metadata.product_log_id |
Direkt zugeordnet |
meta_data.requestId |
metadata.product_log_id |
Direkt zugeordnet |
Metadata.Version |
metadata.product_version |
Direkt zugeordnet |
version |
metadata.product_version |
Direkt zugeordnet |
meta_data.httpStatusCode |
network.http.response_code |
Direkt zugeordnet |
Http_request.User_agent |
network.http.user_agent |
Direkt zugeordnet |
Actor.Invoked_by |
principal.administrative_domain |
Direkt zugeordnet |
Src_endpoint.Domain |
principal.asset.hostname |
Direkt zugeordnet |
Src_endpoint.Domain |
principal.hostname |
Direkt zugeordnet |
Cloud.Region |
principal.resource.attribute.cloud.availability_zone |
Direkt zugeordnet |
Actor.User.Name |
principal.user.userid |
Direkt zugeordnet |
Status |
security_result.action_details |
Direkt zugeordnet |
Category_name |
security_result.category_details |
Zusammengeführt |
error |
security_result.description |
Direkt zugeordnet |
errorMessage |
security_result.description |
Direkt zugeordnet |
Metadata_uid_label |
security_result.detection_fields |
Zusammengeführt |
category_uid_label |
security_result.detection_fields |
Zusammengeführt |
class_uid_label |
security_result.detection_fields |
Zusammengeführt |
errorType_label |
security_result.detection_fields |
Zusammengeführt |
event_code_label |
security_result.detection_fields |
Zusammengeführt |
fault_label |
security_result.detection_fields |
Zusammengeführt |
functionName_label |
security_result.detection_fields |
Zusammengeführt |
severity_id_label |
security_result.detection_fields |
Zusammengeführt |
sourceArn_label |
security_result.detection_fields |
Zusammengeführt |
type_name_label |
security_result.detection_fields |
Zusammengeführt |
type_uid_label |
security_result.detection_fields |
Zusammengeführt |
user_type_label |
security_result.detection_fields |
Zusammengeführt |
Severity |
security_result.severity |
Zugeordnet: Informational → INFORMATIONAL |
severity |
security_result.severity |
Zugeordnet: INFO → INFORMATIONAL |
msg |
security_result.summary |
Direkt zugeordnet |
Api.Service.Name |
target.application |
Direkt zugeordnet |
service |
target.application |
Direkt zugeordnet |
size |
target.file.size |
Direkt zugeordnet |
filename |
target.process.file.full_path |
Direkt zugeordnet |
Activity_name |
target.resource.name |
Direkt zugeordnet |
targetVar |
target.resource.name |
Direkt zugeordnet |
| – | extensions.auth.type |
Konstante: AUTHTYPE_UNSPECIFIED |
| – | metadata.event_type |
Konstante: USER_UNCATEGORIZED |
| – | metadata.product_name |
Konstante: AWS_Lambda_Function |
| – | metadata.vendor_name |
Konstante: AWS_Lambda_Function |
| – | principal.resource.attribute.cloud.environment |
Konstante: AMAZON_WEB_SERVICES |
| – | security_result.severity |
Konstante: INFORMATIONAL |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten