Während der AWS re:Invent 2016 hat Splunk verschiedene AWS Lambda-Blueprints veröffentlicht, die euch helfen sollen Protokolle, Ereignisse und Alarme von mehr als 15 AWS-Services in Splunk zu streamen, um bessere kritische Sicherheits- und Betriebseinblicke in eurer AWS-Infrastruktur und euren AWS-Anwendungen zu erhalten. In diesem Blog-Beitrag zeigen wir euch Schritt für Schritt, wie ihr einen dieser AWS Lambda-Blueprints, den Lambda-Blueprint für die CloudWatch Logs, verwenden könnt, um AWS CloudWatch Logs über AWS Lambda und in Splunk zu streamen, um sie nahezu in Echtzeit zu analysieren und zu visualisieren – wie im Diagramm unten dargestellt. Im folgenden Beispiel setzen wir uns mit dem Streamen von VPC Flow-Protokollen auseinander, die in CloudWatch Logs gespeichert werden. VPC-Flow-Protokolle speichern Informationen über den gesamten IP-Verkehr, der zu und von Netzwerkschnittstellen geht, und sind daher für die Sicherheitsanalyse und Fehlerbehebung von großer Bedeutung. Der folgende Mechanismus gilt für alle in CloudWatch Logs gespeicherten Protokolle.
Inhalt dieses Leitfadens:
Splunk unterstützt zahlreiche Methoden zur Erfassung von Daten; von der Überwachung lokaler Dateien oder vom Streamen von Übertragungsdaten über das Abrufen von Daten von Remote-Drittanbieter-APIs bis hin zum Empfangen von Daten über syslog, tcp/udp oder http.
Ein Beispiel für das Abrufen von Daten aus Remote-Quellen im Pull-Verfahren ist das weithin bekannte Splunk Add-on für AWS, mit dem Daten aus verschiedenen AWS-Diensten zuverlässig erfasst werden.
Ein Beispiel für das Übertragen von Daten im Push-Verfahren ist die AWS Lambda-Funktion, die zum Streamen von Ereignissen über HTTPS an den Splunk HTTP Event Collector (HEC) eingesetzt wird.
Diese Pull- und Push-Modelle werden für unterschiedliche Anwendungsfälle eingesetzt und setzen unterschiedliche Überlegungen voraus. Dieser Blog-Artikel bezieht sich auf das Push-Modell, das insbesondere bei Microservice-Architekturen und ereignisgestützten Berechnungen wie AWS Lambda Anwendung findet. Da es keine bestimmten Poller gibt, die verwaltet und orchestriert werden müssen, bietet das Push-Modell in der Regel folgende Vorteile:
In der folgenden Anleitung dienen VPC Flow-Protokolle als Beispiel für den CloudWatch Log-Stream. Wenn ihr bereits einen CloudWatch Log-Stream aus VPC Flow-Protokollen oder aus anderen Quellen habt, könnt ihr direkt zu Schritt 2 springen und die Referenzen auf VPC Flow-Protokolle durch euren eigenen Datentyp ersetzen.
1a. Erstellt eine Flow-Protokoll-Rolle (Flow Log Role), um dem VPC Flow Log Service die Erlaubnis zu erteilen, Protokolle in CloudWatch Logs zu veröffentlichen. Fahrt fort und erstellt eine neue IAM-Rolle (IAM Role), an die ihr die folgende IAM-Policy anhängt:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Notiert euch den Rollennamen, z. B. vpcFlowLogsRole, da ihr ihn in einem nächsten Schritt benötigen.
Ferner müsst ihr eine Trust-Beziehung zu dieser Rolle festlegen, damit der Flow Log Service zur Übernahme dieser Rolle berechtigt ist. Klickt auf "Edit Trust Relationship“ (Trust-Beziehung bearbeiten) auf der Registerkarte "Trust Relationships" (Trust-Beziehungen) der neu erstellten Rolle, löscht etwaige vorhandene Policies und fügt Folgendes ein:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "vpc-flow-logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
1b. Aktiviert Flow-Protokolle auf euren VPCs() auf der AWS VPC-Konsole, wie in in der AWS VPC-Dokumentation beschrieben. Ab jetzt gehen wir in diesem Leitfaden davon aus, dass ihr vpcFlowLogs als Ziel-CloudWatch Logs-Gruppe festgelegt habt, auf die wir in einem der nächsten Schritte Bezug nehmen. Innerhalb weniger Minuten solltet ihr Flow-Protokolldatensätze in der CloudWatch Logs-Konsole unter dieser Protokollgruppe sehen können.
Jetzt, da Flow-Protokolle erfasst werden, beginnen wir mit der Einrichtung der Daten-Pipeline, und zwar vom Ende aus, d. h. ausgehend von Splunk, und arbeiten uns rückwärts vor.
2a. Installiert das Splunk Add-on für AWS. Bitte beachtet, dass wir uns, da wir Splunk HEC verwenden werden, *nicht* auf modulare Eingaben aus dem Add-on verlassen, um Daten aus CloudWatch Logs oder VPC Flow-Protokollen zu erfassen. Allerdings werden wir die Daten-Parsing-Logik (d.h. Sourcetypen) die bereits in dem Add-on vorhanden ist, verwenden, um die VPC Flow-Protokolldatensätze automatisch zu analysieren und die Felder zu extrahieren.
2b. Erstellt ein HEC-Token aus Splunk Enterprise. Detaillierte Anweisungen findet ihr in der Splunk HEC-Dokumentation.
Wenn ihr die Eingabeeinstellungen konfiguriert, gebt als Sourcetype unbedingt "aws:cloudwatchlogs:vpcflow" an. Dies ist wichtig, damit ihr die automatischen Feldextraktionen aktivieren könnt. Notiert euch unbedingt euren neuen HEC-Token-Wert.
Hinweis: Für Splunk Cloud-Bereitstellungen muss HEC vom Splunk-Support aktiviert worden sein.
Und so sehen die Data Input Settings aus:
Die Pipeline-Phase vor Splunk HEC ist AWS Lambda. Diese wird von CloudWatch Logs immer dann ausgeführt, wenn in einer Gruppe Protokolle vorhanden sind. Diese Datensätze werden an Splunk gestreamt. Zum Glück hat Splunk bereits genau zu diesem Zweck einen Lambda-Blueprint veröffentlicht.
3a. Erstellt die Lambda-Funktion mithilfe des "CloudWatch Logs to Splunk"-Lambda-Blueprints auf der AWS-Konsole, indem ihr hier klickt. Alternativ könnt ihr zur AWS Lambda-Konsole navigieren, auf "Create a Lambda function" (Lambda-Funktion erstellen) klicken und dann unter "Select blueprint“ (Blueprint auswählen) nach "Splunk" suchen. An diesem Punkt könnt ihr den Lambda-Blueprint splunk-cloudwatch-logs-processor auswählen.
3b. Konfiguriert den Lambda-Funktionsauslöser (Function Trigger). Wählt, sofern noch nicht erfolgt, "CloudWatch Logs" als Auslöser aus. Gebt dann als Protokollgruppe vpcFlowLogs ein. Gebt einen Namen unter "Filter Name" (Filtername) ein, wie z. B. vpcFlowLogsFilter. Ihr könnt wahlweise einen Wert unter "Filter pattern“ (Filtermuster) eingeben, wenn ihr einschränken möchtet, was an Lambda geliefert wird. Bevor ihr auf "Next" (Weiter) klickt, vergewissert euch, dass "Enable trigger" (Auslöser aktivieren) aktiviert ist. Hier seht ihr ein Beispiel dafür, wie dieses Formular aussieht:
Dies wird auch als CloudWatch Logs-Abonnementfilter bezeichnet, der aus der ausgewählten Protokollgruppe auf effektive Art und Weise einen Echtzeit-Feed mit Protokollereignissen erstellt, in diesem Fall vpcFlowLogs.
Bitte beachtet, dass Lambda beim Hinzufügen dieses Lambda-Auslösers auf der AWS-Konsole die erforderlichen Berechtigungen für den CloudWatch Logs-Service hinzufügt, um diese spezielle Lambda-Funktion aufzurufen.
3c. Lambda-Funktion konfigurieren. Die Funktion implementiert bereits die erforderliche Logik, um die CloudWatch Logs-Daten zu verarbeiten, also zu decodieren und zu dekomprimieren und die Ereignisse vor dem Versenden an Splunk HEC zu unterbrechen. Folgende Parameter müssen festgelegt werden:
Bitte beachtet, dass AWS Lambda die Umgebungsvariablen im Archiv standardmäßig mit einem Lambda-Serviceschlüssel verschlüsselt. Die Umgebungsvariablen werden automatisch von AWS Lambda entschlüsselt, wenn die Funktion aufgerufen wird. Obwohl es für diese Einrichtung nicht erforderlich ist, könnt ihr die Umgebungsvariablen verschlüsseln, bevor ihr die Lambda-Funktion einsetzt. Weitere Informationen findet ihr hier.
An dieser Stelle könnt ihr auf "Next" (Weiter) klicken, nachdem ihr eure Lambda-Konfiguration überprüft habt, die wie folgt aussehen sollte:
Nach einigen Minuten solltet ihr die ersten Ereignisse in Splunk Enterprise sehen.
Ihr könnte nach sourcetype suchen.
sourcetype="aws:cloudwatchlogs:vpcflow"
Oder ihr sucht nach der Source, die von der Lambda-Funktion auf den Standardwert "lambda:" gesetzt wird: source="lambda:vpcFlowLogsProcessor"
Splunk Search flow logs
Mit einer Lambda-basierten Datenaufnahme könnt ihr nicht nur von der oben beschriebenen einfachen Einrichtung profitieren, sondern auch die erweiterten Dashboards und den anspruchsvollen Datenverkehr und die Sicherheitsanalyse der VPC Flow-Protokolle nutzen, die in Splunks App für AWS vordefiniert sind. Wenn ihr den richtigen Sourcetype einrichtet, wie z.B. "aws:cloudwatchlogs:vpcflow" bei den oben beschriebenen VPC Flow-Protokollen, werden in die relevanten Dashboards automatisch Daten eingegeben. Geht nach der Installation zur Splunk App für AWS und zeigt das Dashboard "VPC Flow Logs: Traffic Analysis" im Dropdown-Menü "Traffic & Access" (Datenverkehr und Zugriff) und das Dashboard "VPC Flow Logs: Security Analysis" im Dropdown-Menü "Security" (Sicherheit) an:
VPC Traffic Analysis
VPC Security Analysis
Wenn ihr keine Ereignisse in Splunk seht, könnt ihr die Fehlersuche für eine Phase der Pipeline nach der anderen in Richtung des Datenflusses durchführen:
Vergewissert euch, dass die VPC Flow-Protokolle in der angegebenen CloudWatch Log-Gruppe erfasst werden. Wenn ihr keine Protokolle seht, sind dies die möglichen Ursachen:
Wir haben gezeigt, wie ihr eine hoch-skalierbare Daten-Pipeline mit geringem Overhead zum Streamen eurer wichtigen CloudWatch Logs in euer bestehendes Splunk Enterprise konfigurieren könnt, indem ihr AWS Lambda und Splunk HEC gemeinsam nutzt. Mit dieser Daten-Pipeline lassen sich Daten mit Splunk Enterprise nahezu in Echtzeit verarbeiten und analysieren.
Als Beispiel für CloudWatch Logs haben wir VPC Flow-Protokolle verwendet, die in CloudWatch gespeichert sind. Diese Daten sind von entscheidender Bedeutung, wenn es darum geht, den Datenverkehr in einer VPC sowie jegliche Sicherheitsaspekte zu verstehen. Bitte beachtet jedoch, dass VPC Flow-Protokolle selber alle paar Minuten erfasst werden, sodass die Analyse der VPC Flow-Protokolle nur in Batches erfolgen kann.
Klickt hier, um die ersten Schritte mit Lambda-Blueprints für Splunk direkt über eure AWS-Konsole durchzuführen. Wir freuen uns darauf zu sehen, wie ihr die Leistungsstärke von AWS Lambda und Splunk HEC nutzt, um eure eigenen serverlosen Architekturen und Daten-Pipelines zu erstellen. Hinterlasst uns unten eine Nachricht mit eurem Feedback oder euren Kommentaren, oder stellt uns eure Fragen auf Splunk Answers.
----------------------------------------------------
Vielen Dank!
Roy Arsan
*Dieser Artikel wurde aus dem Englischen übersetzt und editiert. Den Originalblogpost findet ihr hier: How to stream AWS CloudWatch Logs to Splunk (Hint: it’s easier than you think).
Die Splunk-Plattform beseitigt die Hürden zwischen Daten und Handlungen, damit Observability-, IT- und Security-Teams in ihren Unternehmen für Sicherheit, Resilienz und Innovation sorgen können.
Splunk wurde 2003 gegründet und ist ein globales Unternehmen – mit mehr als 7.500 Mitarbeitern, derzeit über 1.020 Patenten und einer Verfügbarkeit in 21 Regionen rund um den Globus. Mit seiner offenen, erweiterbaren Datenplattform, die die gemeinsame Nutzung von Daten in beliebigen Umgebungen unterstützt, bietet Splunk allen Teams im Unternehmen für jede Interaktion und jeden Geschäftsprozess End-to-End-Transparenz mit Kontext. Bauen auch Sie eine starke Datenbasis auf – mit Splunk.