View a markdown version of this page

Szenario 2: Echtzeitnahe Daten für Sicherheitsteams - Streamen von Datenlösungen in AWS mit Amazon Kinesis

Szenario 2: Echtzeitnahe Daten für Sicherheitsteams

Das Unternehmen ABC2Badge liefert Sensoren und digitale Ausweise für Firmen- oder Großveranstaltungen wie AWS re:Invent. Benutzer melden sich für die Veranstaltung an und erhalten eigene digitale Ausweise, die von den Sensoren auf dem gesamten Campus erfasst werden. Sobald Benutzer an einem Sensor vorbeigehen, werden ihre anonymisierten Informationen in einer relationalen Datenbank gespeichert.

Bei einer bevorstehenden Veranstaltung wurde ABC2Badge aufgrund der hohen Teilnehmerzahl vom Sicherheitsteam der Veranstaltung gebeten, alle 15 Minuten Daten für die Bereiche mit der höchsten Konzentration auf dem Campus zu sammeln. Dadurch hat das Sicherheitsteam genügend Zeit, um zu reagieren und das Sicherheitspersonal proportional zu den konzentrierten Bereichen zu verteilen. Vor dem Hintergrund dieser neuen Anforderung für das Sicherheitsteam und der Unerfahrenheit beim Aufbau einer Streaming-Lösung, die Daten nahezu in Echtzeit verarbeiten soll, sucht ABC2Badge nach einer einfachen, aber skalierbaren und zuverlässigen Lösung.

Die derzeitige Data-Warehouse-Lösung ist Amazon Redshift. Bei der Überprüfung der Funktionen der Amazon-Kinesis-Services erkannten sie, dass Amazon Kinesis Data Firehose einen Stream von Datensätzen empfangen, die Datensätze basierend auf Puffergröße und/oder Zeitintervall stapeln und in Amazon Redshift einfügen kann. Sie erstellten einen Kinesis-Data-Firehose-Bereitstellungsdatenstrom und konfigurierten ihn so, dass er alle fünf Minuten Daten in ihre Amazon-Redshift-Tabellen kopiert. Als Teil dieser neuen Lösung verwendeten sie den Amazon Kinesis Agent auf ihren Servern. Alle fünf Minuten lädt Kinesis Data Firehose Daten in Amazon Redshift, wo das Business-Intelligence-(BI)-Team seine Analysen durchführen und die Daten alle 15 Minuten an das Sicherheitsteam senden kann.

Neue Lösung mit Amazon Kinesis Data Firehose

Neue Lösung mit Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose

Die einfachste Methode, um Streaming-Daten in AWS zu laden, bietet Amazon Kinesis Data Firehose. Amazon Kinesis Data Firehose kann Streaming-Daten erfassen, umwandeln und in Amazon Kinesis Data Analytics, Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) und Splunk laden. Darüber hinaus kann Kinesis Data Firehose Streaming-Daten in jeden benutzerdefinierten HTTP-Endpunkt oder HTTP-Endpunkte von unterstützten Drittanbietern laden.

Kinesis Data Firehose ermöglicht echtzeitnahe Analysen mit vorhandenen Business-Intelligence-Tools und Dashboards, die Sie bereits heute verwenden. Es handelt sich hier um einen vollständig verwalteten Serverless-Service, der automatisch dem Durchsatz Ihrer Daten entsprechend skaliert wird und keine weitere Verwaltung erfordert. Kinesis Data Firehose kann die Daten vor dem Laden in Batches unterteilen, komprimieren und verschlüsseln, um den am Zielort verwendeten Speicherplatz zu minimieren und die Sicherheit zu erhöhen. Es kann auch die Quelldaten mithilfe von AWS Lambda umwandeln und die umgewandelten Daten an Ziele liefern. Sie konfigurieren Ihre Datenproduzenten so, dass die Daten an Amazon Kinesis Data Firehose gesendet werden, das die Daten automatisch an dem von Ihnen angegebenen Ziel bereitstellt.

Senden von Daten an einen Firehose-Bereitstellungsdatenstrom

Um Daten an Ihren Bereitstellungsdatenstrom zu senden, gibt es mehrere Möglichkeiten. AWS bietet SDKs für viele gängige Programmiersprachen, von denen jede APIs für Amazon Kinesis Data Firehose bereitstellt. AWS verfügt über ein Dienstprogramm, mit dem Sie Daten an Ihren Bereitstellungsdatenstrom senden können. Kinesis Data Firehose wurde in andere AWS-Services integriert, um Daten direkt von diesen Services in Ihren Bereitstellungsdatenstrom zu senden.

Verwenden des Amazon Kinesis Agent

Amazon Kinesis Agent ist eine eigenständige Softwareanwendung, die kontinuierlich eine Reihe von Protokolldateien auf neue Daten überwacht, die an den Bereitstellungsdatenstrom gesendet werden sollen. Der Agent kümmert sich automatisch um die Dateirotation, Prüfpunkte, Wiederholungsversuche bei Fehlern und gibt Amazon CloudWatch-Metriken zur Überwachung und Fehlerbehebung des Bereitstellungsdatenstroms aus. Zusätzliche Konfigurationen, wie z. B. die Vorverarbeitung von Daten, die Überwachung mehrerer Dateiverzeichnisse und das Schreiben in mehrere Bereitstellungsdatenströme, können auf den Agent angewendet werden.

Der Agent kann auf Linux- oder Windows-basierten Servern wie Webservern, Protokollservern und Datenbankservern installiert werden. Nach der Installation des Agent geben Sie einfach an, welche Protokolldateien er überwachen und an welchen Bereitstellungsdatenstrom er senden soll. Der Agent sendet dauerhaft und zuverlässig neue Daten an den Bereitstellungsdatenstrom.

Verwenden der API mit AWS SDK und AWS-Services als Quelle

Die Kinesis-Data-Firehose-API bietet zwei Operationen zum Senden von Daten an Ihren Bereitstellungsdatenstrom. PutRecord sendet einen einzelnen Datensatz innerhalb eines Aufrufs. PutRecordBatch kann mehrere Datensätze innerhalb eines Aufrufs senden und einen höheren Durchsatz pro Produzent erreichen. Bei jeder Methode müssen Sie den Namen des Bereitstellungsdatenstroms und den Datensatz oder das Array von Datensätzen angeben, wenn Sie diese Methode verwenden. Weitere Informationen und Beispielcode für die Kinesis-Data Firehose-API-Operationen finden Sie unter Schreiben in einen Firehose-Bereitstellungsdatenstrom mit dem AWS SDK.

Kinesis Data Firehose läuft auch mit Kinesis Data Firehose, CloudWatch Logs, CloudWatch Events, Amazon Simple Notification Service (Amazon SNS), Amazon API Gateway und AWS IoT. Sie können Ihre Datenströme, Protokolle, Ereignisse und IoT-Daten skalierbar und zuverlässig direkt an ein Kinesis-Data-Firehose-Ziel senden.

Verarbeiten von Daten vor der Bereitstellung am Ziel

In manchen Szenarien möchten Sie möglicherweise Ihre Streaming-Daten umwandeln oder optimieren, bevor sie an ihrem Ziel bereitgestellt werden. Datenproduzenten könnten zum Beispiel unstrukturierten Text in jedem Datensatz senden, und Sie müssen ihn in JSON umwandeln, bevor Sie ihn an OpenSearch Service übermitteln. Oder Sie möchten die JSON-Daten in ein spaltenförmiges Dateiformat wie Apache Parquet oder Apache ORC konvertieren, bevor Sie die Daten in Amazon S3 speichern.

Kinesis Data Firehose verfügt über eine integrierte Konvertierungsfunktion für Datenformate. Damit können Sie Ihre JSON-Datenströme problemlos in Apache-Parquet- oder Apache-ORC-Dateiformate konvertieren.

Datentransformationsfluss

Um Streaming-Datentransformationen zu ermöglichen, verwendet Kinesis Data Firehose eine Lambda-Funktion, die Sie zur Transformation Ihrer Daten erstellen. Kinesis Data Firehose puffert eingehende Daten auf eine für die Funktion angegebene Puffergröße und ruft dann die angegebene Lambda-Funktion asynchron auf. Die transformierten Daten werden von Lambda an Kinesis Data Firehose gesendet, und Kinesis Data Firehose liefert die Daten an das Ziel.

Konvertierung von Datenformaten

Sie können auch die Datenformatkonvertierung von Kinesis Data Firehose aktivieren, die den JSON-Datenstrom in das Apache-Parquet- oder Apache-ORC-Datenformat konvertiert. Diese Funktion kann nur JSON in das Apache-Parquet- oder Apache-ORC-Datenformat konvertieren. Wenn Ihre Daten im CSV-Format vorliegen, können Sie diese Daten über eine Lambda-Funktion in JSON umwandeln und dann die Datenformatkonvertierung anwenden.

Datenbereitstellung

Kinesis Data Firehose stellt eingehende Daten nahezu in Echtzeit bereit und puffert diese. Nachdem die Schwellenwerte für die Pufferung Ihres Datenstroms erreicht wurden, werden Ihre Daten an das von Ihnen konfigurierte Ziel übermittelt. Es gibt einige Unterschiede in der Art und Weise, wie Kinesis Data Firehose Daten an die einzelnen Ziele liefert, die in diesem Dokument in den folgenden Abschnitten erläutert werden.

Amazon S3

Amazon S3 ist ein Objektspeicher mit einer einfachen Webservice-Schnittstelle. Sie können darüber von überall im Internet beliebige Datenmengen abrufen und speichern. Er wurde für eine Datenbeständigkeit von 99,999999999 % entwickelt und kann weltweit auf Billionen von Objekten skaliert werden.

Datenbereitstellung in Amazon S3

Für die Datenbereitstellung in Amazon S3 verkettet Kinesis Data Firehose mehrere eingehende Datensätze basierend auf der Pufferkonfiguration Ihres Bereitstellungsdatenstroms und stellt sie dann als S3-Objekt in Amazon S3 bereit. Die Häufigkeit der Datenbereitstellung in S3 wird durch die S3-Puffergröße (1 MB bis 128 MB) oder das Pufferintervall (60 Sekunden bis 900 Sekunden) bestimmt, je nachdem, was zuerst eintritt.

Die Datenbereitstellung in Ihrem S3-Bucket kann aus verschiedenen Gründen fehlschlagen. Zum Beispiel könnte der Bucket nicht mehr existieren, oder die AWS Identity and Access Management-(IAM-)Rolle, die Kinesis Data Firehose übernimmt, könnte keinen Zugriff auf den Bucket haben. Unter diesen Umständen wiederholt Kinesis Data Firehose den Vorgang bis zu 24 Stunden, bis die Bereitstellung erfolgreich ist. Die maximale Datenspeicherzeit von Kinesis Data Firehose beträgt 24 Stunden. Falls die Datenbereitstellung länger als 24 Stunden fehlschlägt, gehen die Daten verloren.

Amazon Redshift

Amazon Redshift ist ein schnelles, vollständig verwaltetes Data Warehouse, mit dem Sie im Zusammenspiel mit Ihren vorhandenen BI-Tools und mithilfe von Standard-SQL alle Ihre Daten einfach und kostengünstig analysieren können. Es ermöglicht Ihnen die Ausführung komplexer Analyseabfragen für mehrere Petabyte strukturierter Daten mithilfe einer durchdachten Abfrageoptimierung, Spaltenspeicherung auf lokalen Hochleistungsdatenträgern und einer umfangreichen parallel laufenden Abfrage.

Datenbereitstellung in Amazon Redshift

Für die Datenbereitstellung in Amazon Redshift stellt Kinesis Data Firehose zunächst die eingehenden Daten in Ihrem S3-Bucket in dem zuvor beschriebenen Format bereit. Kinesis Data Firehose gibt dann einen Amazon-Redshift-COPY-Befehl aus, um die Daten aus Ihrem S3-Bucket in Ihren Amazon-Redshift-Cluster zu laden.

Die Häufigkeit der COPY-Vorgänge für Daten von S3 nach Amazon Redshift wird davon bestimmt, wie schnell Ihr Amazon-Redshift-Cluster den COPY-Befehl abschließen kann. Für ein Amazon-Redshift-Ziel können Sie beim Erstellen eines Bereitstellungsdatenstroms eine Wiederholungsdauer (0–7200 Sekunden) angeben, um Fehler bei der Datenbereitstellung zu beheben. Bei nicht erfolgreicher Ausführung wiederholt Kinesis Data Firehose den Vorgang für den festgelegten Zeitraum und überspringt den jeweiligen Batch von S3-Objekten. Die Informationen zu den übersprungenen Objekten werden Ihrem S3-Bucket als Manifestdatei im Ordner „Errors/“ (Fehler) bereitgestellt. Sie können diesen für manuelle Backfill-Vorgänge verwenden.

Nachstehend finden Sie ein Architekturdiagramm des Datenflusses von Kinesis Data Firehose zu Amazon Redshift. Obwohl dieser Datenfluss nur für Amazon Redshift gilt, folgt Kinesis Data Firehose ähnlichen Mustern für die anderen Zielspeicherorte.

Datenfluss von Kinesis Data Firehose zu Amazon Redshift

Datenfluss von Kinesis Data Firehose zu Amazon Redshift

Amazon OpenSearch Service (OpenSearch Service)

OpenSearch Service ist ein vollständig verwalteter Service, der die benutzerfreundlichen OpenSearch-APIs und Echtzeitfunktionen zusammen mit der Verfügbarkeit, Skalierbarkeit und Sicherheit bereitstellt, die für Produktionsworkloads erforderlich sind. OpenSearch Service erleichtert die Bereitstellung, den Betrieb und die Skalierung von OpenSearch für Protokollanalysen, Volltextsuche und Anwendungsüberwachung.

Datenbereitstellung in OpenSearch Service

Für die Datenbereitstellung in OpenSearch Service puffert Kinesis Data Firehose eingehende Datensätze basierend auf der Pufferkonfiguration Ihres Bereitstellungsdatenstroms und generiert dann eine OpenSearch-Massenanfrage, um mehrere Datensätze in Ihrem OpenSearch-Cluster zu indizieren. Die Häufigkeit der Datenbereitstellung in OpenSearch Service wird durch die Werte für die OpenSearch-Puffergröße (1 MB bis 100 MB) und das Pufferintervall (60 Sekunden bis 900 Sekunden) bestimmt, je nachdem, was zuerst eintritt.

Sie können beim Erstellen eines Bereitstellungsdatenstroms für das OpenSearch Service-Ziel eine Wiederholungsdauer angeben (0–7200 Sekunden). Kinesis Data Firehose wiederholt den Vorgang für den festgelegten Zeitraum und überspringt anschließend die jeweilige Indexanfrage. Die übersprungenen Dokumente werden Ihrem S3-Bucket im Ordner elasticsearch_failed/ bereitgestellt. Sie können diesen für manuelle Backfill-Vorgänge verwenden.

Amazon Kinesis Data Firehose kann Ihren OpenSearch Service-Index basierend auf einer Zeitdauer rotieren. Je nach gewählter Rotationsoption (NoRotation, OneHour, OneDay, OneWeek oder OneMonth) fügt Kinesis Data Firehose einen Abschnitt des UTC-Ankunftszeitstempels (Coordinated Universal Time, UTC) an den angegebenen Indexnamen an.

Benutzerdefinierter HTTP-Endpunkt oder unterstützter externer Dienstanbieter

Kinesis Data Firehose kann Daten entweder an benutzerdefinierte HTTP-Endpunkte oder an unterstützte Drittanbieter wie Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Splunk und Sumo Logic senden.

Benutzerdefinierter HTTP-Endpunkt oder unterstützter externer Dienstanbieter

Damit Kinesis Data Firehose erfolgreich Daten an benutzerdefinierte HTTP-Endpunkte liefern kann, müssen diese Endpunkte Anfragen akzeptieren und Antworten unter Verwendung bestimmter Kinesis-Data-Firehose-Anfrage- und Antwortformate senden.

Wenn Sie Daten an einem HTTP-Endpunkt bereitstellen, der zu einem unterstützten externen Dienstanbieter gehört, können Sie den integrierten AWS Lambda-Service verwenden, um eine Funktion zu erstellen, die den eingehenden Datensatz/die eingehenden Datensätze in das Format transformiert, das dem Format entspricht, das die Integration des Dienstanbieters erwartet.

Für die Häufigkeit der Datenbereitstellung gibt jeder Dienstanbieter eine empfohlene Puffergröße an. Wenden Sie sich an Ihren Dienstanbieter, um weitere Informationen über die empfohlene Puffergröße zu erhalten. Für die Behandlung von Datenbereitstellungsfehlern stellt Kinesis Data Firehose zunächst eine Verbindung mit dem HTTP-Endpunkt her, indem es auf eine Antwort vom Ziel wartet. Kinesis Data Firehose versucht so lange eine Verbindung herzustellen, bis die Wiederholungsdauer abgelaufen ist. Danach betrachtet Kinesis Data Firehose den Vorgang als Datenbereitstellungsfehler und sichert die Daten in Ihrem S3 Bucket.

Übersicht

Kinesis Data Firehose kann Ihre Streaming-Daten dauerhaft an ein unterstütztes Ziel liefern. Es handelt sich um eine vollständig verwaltete Lösung, die wenig oder gar keine Entwicklung erfordert. Für das Unternehmen ABC2Badge war die Verwendung von Kinesis Data Firehose eine logische Wahl. Es verwendete bereits Amazon Redshift als Data-Warehouse-Lösung. Da seine Datenquellen kontinuierlich in Transaktionsprotokolle schrieben, konnte das Unternehmen den Amazon Kinesis Agent nutzen, um diese Daten zu streamen, ohne zusätzlichen Code schreiben zu müssen. Nachdem das Unternehmen ABC2Badge einen Stream von Sensoraufzeichnungen erstellt hat und diese Aufzeichnungen über Kinesis Data Firehose empfängt, kann es diese als Grundlage für den Anwendungsfall des Sicherheitsteams verwenden.