Sammeln von Daten aus benutzerdefinierten Quellen - Amazon Security Lake

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sammeln von Daten aus benutzerdefinierten Quellen

Amazon Security Lake kann Protokolle und Ereignisse aus benutzerdefinierten Quellen von Drittanbietern sammeln. Für jede benutzerdefinierte Quelle verarbeitet Security Lake Folgendes:

  • Stellt ein eindeutiges Präfix für die Quelle in Ihrem Amazon S3 S3-Bucket bereit.

  • Erstellt eine Rolle in AWS Identity and Access Management (IAM), die es einer benutzerdefinierten Quelle ermöglicht, Daten in den Data Lake zu schreiben. Die Berechtigungsgrenze für diese Rolle wird durch eine AWS verwaltete Richtlinie mit dem Namen AmazonSecurityLakePermissionsBoundaryfestgelegt.

  • Erstellt eine AWS Lake Formation Tabelle zur Organisation von Objekten, die die Quelle in Security Lake schreibt.

  • Richtet einen AWS Glue Crawler ein, um Ihre Quelldaten zu partitionieren. Der Crawler füllt die AWS Glue Data Catalog mit der Tabelle. Außerdem erkennt er automatisch neue Quelldaten und extrahiert Schemadefinitionen.

Um Security Lake eine benutzerdefinierte Quelle hinzuzufügen, muss sie die folgenden Anforderungen erfüllen:

  1. Ziel — Die benutzerdefinierte Quelle muss in der Lage sein, Daten als Gruppe von S3-Objekten unter dem der Quelle zugewiesenen Präfix in Security Lake zu schreiben. Bei Quellen, die mehrere Datenkategorien enthalten, sollten Sie jede eindeutige Open Cybersecurity Schema Framework (OCSF) -Ereignisklasse als separate Quelle bereitstellen. Security Lake erstellt eine IAM-Rolle, die es der benutzerdefinierten Quelle ermöglicht, an den angegebenen Speicherort in Ihrem S3-Bucket zu schreiben.

    Anmerkung

    Verwenden Sie das OCSF-Validierungstool, um zu überprüfen, ob die benutzerdefinierte Quelle kompatibel ist mit. OCSF Schema 1.1

  2. Format — Jedes S3-Objekt, das aus der benutzerdefinierten Quelle gesammelt wurde, sollte als Apache Parquet-Datei formatiert werden.

  3. Schema — Dieselbe OCSF-Ereignisklasse sollte für jeden Datensatz innerhalb eines Parquet-formatierten Objekts gelten.

Bewährte Methoden für die Aufnahme benutzerdefinierter Quellen

Um eine effiziente Datenverarbeitung und Abfrage zu ermöglichen, empfehlen wir, beim Hinzufügen einer benutzerdefinierten Quelle zu Security Lake die folgenden bewährten Methoden zu befolgen:

Partitionierung

Objekte sollten nach Quellort,, AWS-Region und Datum partitioniert werden. AWS-Konto Der Datenpfad der Partition ist formatiert als. bucket-name/source-location/region=region/accountId=accountID/eventDay=YYYYMMDD

Eine Beispielpartition istaws-security-data-lake-us-west-2-lake-uid/source-location/region=us-west-2/accountId=123456789012/eventDay=20230428/.

  • bucket-name— Der Name des Amazon S3 S3-Buckets, in dem Security Lake Ihre benutzerdefinierten Quelldaten speichert.

  • source-location— Präfix für die benutzerdefinierte Quelle in Ihrem S3-Bucket. Security Lake speichert alle S3-Objekte für eine bestimmte Quelle unter diesem Präfix, und das Präfix ist für die angegebene Quelle eindeutig.

  • region— AWS-Region in die die Daten geschrieben werden.

  • accountId— AWS-Konto ID, auf die sich die Datensätze in der Quellpartition beziehen.

  • eventDay— Datum, an dem das Ereignis eingetreten ist, formatiert als achtstellige Zeichenfolge ()YYYYMMDD.

Größe und Geschwindigkeit des Objekts

In Security Lake geschriebene Objekte sollten Datensätze für 5 Minuten zwischenspeichern. Wenn die Pufferzeit zu viele Daten enthält, um effizient abgefragt werden zu können, können benutzerdefinierte Quellen mehrere Datensätze innerhalb des 5-Minuten-Fensters schreiben, sofern die durchschnittliche Größe dieser Dateien unter 256 MB bleibt. Benutzerdefinierte Quellen mit geringem Durchsatz können kleinere Objekte alle 5 Minuten schreiben, um eine Aufnahmelatenz von 5 Minuten aufrechtzuerhalten, und können Datensätze für längere Zeiträume zwischenspeichern.

Parquet-Einstellungen

Security Lake unterstützt die Versionen 1.x und 2.x von Parquet. Die Größe der Datenseite sollte auf 1 MB (unkomprimiert) begrenzt sein. Die Zeilengruppengröße sollte nicht größer als 256 MB (komprimiert) sein. Für die Komprimierung innerhalb des Parquet-Objekts wird Standard bevorzugt.

Sortieren

In jedem Objekt im Parquet-Format sollten die Datensätze nach Zeit sortiert werden, um die Kosten für das Abfragen von Daten zu reduzieren.

Voraussetzungen für das Hinzufügen einer benutzerdefinierten Quelle

Beim Hinzufügen einer benutzerdefinierten Quelle erstellt Security Lake eine IAM-Rolle, die es der Quelle ermöglicht, Daten an den richtigen Ort im Data Lake zu schreiben. Der Name der Rolle folgt dem FormatAmazonSecurityLake-Provider-{name of the custom source}-{region}, AWS-Region in dem Sie die benutzerdefinierte Quelle hinzufügen. region Security Lake fügt der Rolle eine Richtlinie hinzu, die den Zugriff auf den Data Lake ermöglicht. Wenn Sie den Data Lake mit einem vom Kunden verwalteten AWS KMS Schlüssel verschlüsselt haben, fügt Security Lake der Rolle auch eine Richtlinie kms:Decrypt und kms:GenerateDataKey Berechtigungen hinzu. Die Berechtigungsgrenze für diese Rolle wird durch eine AWS verwaltete Richtlinie mit dem Namen AmazonSecurityLakePermissionsBoundaryfestgelegt.

Überprüfen der Berechtigungen

Stellen Sie vor dem Hinzufügen einer benutzerdefinierten Quelle sicher, dass Sie über die erforderlichen Berechtigungen verfügen, um die folgenden Aktionen auszuführen.

Um Ihre Berechtigungen zu überprüfen, verwenden Sie IAM, um die IAM-Richtlinien zu überprüfen, die mit Ihrer IAM-Identität verknüpft sind. Vergleichen Sie dann die Informationen in diesen Richtlinien mit der folgenden Liste von Aktionen, die Sie ausführen dürfen müssen, um eine benutzerdefinierte Quelle hinzuzufügen.

  • glue:CreateCrawler

  • glue:CreateDatabase

  • glue:CreateTable

  • glue:StopCrawlerSchedule

  • iam:GetRole

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:PassRole

  • lakeformation:RegisterResource

  • lakeformation:GrantPermissions

  • s3:ListBucket

  • s3:PutObject

Diese Aktionen ermöglichen es Ihnen, Protokolle und Ereignisse aus einer benutzerdefinierten Quelle zu sammeln, sie an die richtige AWS Glue Datenbank und Tabelle zu senden und sie in Amazon S3 zu speichern.

Wenn Sie einen AWS KMS Schlüssel für die serverseitige Verschlüsselung Ihres Data Lakes verwenden, benötigen Sie auch die Erlaubnis für kms:CreateGrantkms:DescribeKey, undkms:GenerateDataKey.

Wichtig

Wenn Sie die Security Lake-Konsole verwenden möchten, um eine benutzerdefinierte Quelle hinzuzufügen, können Sie den nächsten Schritt überspringen und mit fortfahrenEine benutzerdefinierte Quelle hinzufügen. Die Security Lake-Konsole bietet einen optimierten Prozess für den Einstieg und erstellt alle erforderlichen IAM-Rollen oder verwendet bestehende Rollen in Ihrem Namen.

Wenn Sie die Security Lake-API verwenden oder eine benutzerdefinierte Quelle hinzufügen AWS CLI möchten, fahren Sie mit dem nächsten Schritt fort, um eine IAM-Rolle zu erstellen, die Schreibzugriff auf den Security Lake-Bucket-Speicherort ermöglicht.

Erstellen Sie eine IAM-Rolle, um Schreibzugriff auf den Security Lake-Bucket-Speicherort zu gewähren (API und nur Schritt AWS CLI)

Wenn Sie die Security Lake-API verwenden oder eine benutzerdefinierte Quelle hinzufügen AWS CLI möchten, fügen Sie diese IAM-Rolle hinzu, um die AWS Glue Erlaubnis zu erteilen, Ihre benutzerdefinierten Quelldaten zu crawlen und Partitionen in den Daten zu identifizieren. Diese Partitionen sind erforderlich, um Ihre Daten zu organisieren und Tabellen im Datenkatalog zu erstellen und zu aktualisieren.

Nachdem Sie diese IAM-Rolle erstellt haben, benötigen Sie den Amazon-Ressourcennamen (ARN) der Rolle, um eine benutzerdefinierte Quelle hinzuzufügen.

Sie müssen die arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole AWS verwaltete Richtlinie anhängen.

Um die erforderlichen Berechtigungen zu gewähren, müssen Sie außerdem die folgende Inline-Richtlinie erstellen und in Ihre Rolle einbetten, um das Lesen von Datendateien aus der benutzerdefinierten Quelle und das Erstellen/Aktualisieren der Tabellen im AWS Glue Datenkatalog AWS-Glue-Crawler zu ermöglichen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3WriteRead", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{bucketName}}/*" ] } ] }

Fügen Sie die folgende Vertrauensrichtlinie hinzu, um zuzulassen und AWS-Konto anhand derer es die Rolle auf der Grundlage der externen ID übernehmen kann:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Wenn der S3-Bucket in der Region, in der Sie die benutzerdefinierte Quelle hinzufügen, mit einem vom Kunden verwalteten Bucket verschlüsselt ist AWS KMS key, müssen Sie der Rolle und Ihrer KMS-Schlüsselrichtlinie auch die folgende Richtlinie hinzufügen:

{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey" "kms:Decrypt" ], "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::{{name of S3 bucket created by Security Lake}" ] } }, "Resource": [ "{{ARN of customer managed key}}" ] }

Eine benutzerdefinierte Quelle hinzufügen

Nachdem Sie die IAM-Rolle zum Aufrufen des AWS Glue Crawlers erstellt haben, gehen Sie wie folgt vor, um eine benutzerdefinierte Quelle in Security Lake hinzuzufügen.

Console
  1. Öffnen Sie die Security Lake-Konsole unter https://console.aws.amazon.com/securitylake/.

  2. Wählen Sie mithilfe der AWS-Region Auswahl in der oberen rechten Ecke der Seite die Region aus, in der Sie die benutzerdefinierte Quelle erstellen möchten.

  3. Wählen Sie im Navigationsbereich Benutzerdefinierte Quellen und dann Benutzerdefinierte Quelle erstellen aus.

  4. Geben Sie im Abschnitt Benutzerdefinierte Quelldetails einen weltweit eindeutigen Namen für Ihre benutzerdefinierte Quelle ein. Wählen Sie dann eine OCSF-Ereignisklasse aus, die den Datentyp beschreibt, den die benutzerdefinierte Quelle an Security Lake sendet.

  5. Geben Sie für AWS-Konto mit der Berechtigung zum Schreiben von Daten die AWS-Konto ID und die externe ID der benutzerdefinierten Quelle ein, die Protokolle und Ereignisse in den Data Lake schreiben soll.

  6. Erstellen und verwenden Sie für Service Access eine neue Servicerolle oder verwenden Sie eine vorhandene Servicerolle, die Security Lake die Berechtigung zum Aufrufen AWS Glue erteilt.

  7. Wählen Sie Erstellen.

API

Verwenden Sie den CreateCustomLogSourceBetrieb der Security Lake-API, um programmgesteuert eine benutzerdefinierte Quelle hinzuzufügen. Verwenden Sie den Vorgang AWS-Region dort, wo Sie die benutzerdefinierte Quelle erstellen möchten. Wenn Sie AWS Command Line Interface (AWS CLI) verwenden, führen Sie den Befehl create-custom-log-source aus.

Verwenden Sie in Ihrer Anfrage die unterstützten Parameter, um die Konfigurationseinstellungen für die benutzerdefinierte Quelle anzugeben:

  • sourceName— Geben Sie einen Namen für die Quelle an. Der Name muss ein regional eindeutiger Wert sein.

  • eventClasses— Geben Sie eine oder mehrere OCSF-Ereignisklassen an, um den Datentyp zu beschreiben, den die Quelle an Security Lake sendet. Eine Liste der OCSF-Ereignisklassen, die in Security Lake als Quelle unterstützt werden, finden Sie unter Open Cybersecurity Schema Framework (OCSF).

  • sourceVersion— Geben Sie optional einen Wert an, um die Protokollerfassung auf eine bestimmte Version von benutzerdefinierten Quelldaten zu beschränken.

  • crawlerConfiguration— Geben Sie den Amazon-Ressourcennamen (ARN) der IAM-Rolle an, die Sie zum Aufrufen des AWS Glue Crawlers erstellt haben. Die detaillierten Schritte zum Erstellen einer IAM-Rolle finden Sie unter Voraussetzungen für das Hinzufügen einer benutzerdefinierten Quelle

  • providerIdentity— Geben Sie die AWS Identität und die externe ID an, die die Quelle zum Schreiben von Protokollen und Ereignissen in den Data Lake verwenden soll.

Im folgenden Beispiel wird dem angegebenen Protokollanbieter-Konto in bestimmten Regionen eine benutzerdefinierte Quelle als Protokollquelle hinzugefügt. Dieses Beispiel ist für Linux, macOS oder Unix formatiert und verwendet den umgekehrten Schrägstrich (\) zur Verbesserung der Lesbarkeit.

$ aws securitylake create-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE \ --event-classes '["DNS_ACTIVITY", "NETWORK_ACTIVITY"]' \ --configuration crawlerConfiguration={"roleArn=arn:aws:iam::XXX:role/service-role/RoleName"},providerIdentity={"externalId=ExternalId,principal=principal"} \ --region=[“ap-southeast-2”]

Halten Sie die benutzerdefinierten Quelldaten auf dem neuesten Stand in AWS Glue

Nachdem Sie eine benutzerdefinierte Quelle in Security Lake hinzugefügt haben, erstellt Security Lake einen AWS Glue Crawler. Der Crawler stellt eine Verbindung zu Ihrer benutzerdefinierten Quelle her, bestimmt die Datenstrukturen und füllt den AWS Glue Datenkatalog mit Tabellen.

Wir empfehlen, den Crawler manuell auszuführen, um Ihr benutzerdefiniertes Quellschema auf dem neuesten Stand zu halten und die Abfragefunktionen in Athena und anderen Abfragediensten aufrechtzuerhalten. Insbesondere sollten Sie den Crawler ausführen, wenn eine der folgenden Änderungen in Ihrem Eingabedatensatz für eine benutzerdefinierte Quelle eintritt:

  • Der Datensatz hat eine oder mehrere neue Spalten auf oberster Ebene.

  • Der Datensatz enthält ein oder mehrere neue Felder in einer Spalte mit einem struct Datentyp.

Anweisungen zum Ausführen eines Crawlers finden Sie unter Planung eines AWS Glue Crawlers im Entwicklerhandbuch.AWS Glue

Security Lake kann bestehende Crawler in Ihrem Konto nicht löschen oder aktualisieren. Wenn Sie eine benutzerdefinierte Quelle löschen, empfehlen wir, den zugehörigen Crawler zu löschen, wenn Sie in future eine benutzerdefinierte Quelle mit demselben Namen erstellen möchten.

Löschen einer benutzerdefinierten Quelle

Löschen Sie eine benutzerdefinierte Quelle, um das Senden von Daten von der Quelle an Security Lake zu beenden.

Console
  1. Öffnen Sie die Security Lake-Konsole unter https://console.aws.amazon.com/securitylake/.

  2. Wählen Sie mithilfe der AWS-Region Auswahl in der oberen rechten Ecke der Seite die Region aus, aus der Sie die benutzerdefinierte Quelle entfernen möchten.

  3. Wählen Sie im Navigationsbereich Benutzerdefinierte Quellen aus.

  4. Wählen Sie die benutzerdefinierte Quelle aus, die Sie entfernen möchten.

  5. Wählen Sie „Benutzerdefinierte Quelle abmelden“ und anschließend „Löschen“, um die Aktion zu bestätigen.

API

Um eine benutzerdefinierte Quelle programmgesteuert zu löschen, verwenden Sie den DeleteCustomLogSourceBetrieb der Security Lake-API. Wenn Sie AWS Command Line Interface (AWS CLI) verwenden, führen Sie den Befehl delete-custom-log-source aus. Verwenden Sie den Vorgang an der AWS-Region Stelle, an der Sie die benutzerdefinierte Quelle löschen möchten.

Verwenden Sie in Ihrer Anfrage den sourceName Parameter, um den Namen der benutzerdefinierten Quelle anzugeben, die gelöscht werden soll. Oder geben Sie den Namen der benutzerdefinierten Quelle an und verwenden Sie den sourceVersion Parameter, um den Umfang des Löschvorgangs auf eine bestimmte Version von Daten aus der benutzerdefinierten Quelle zu beschränken.

Im folgenden Beispiel wird eine benutzerdefinierte Protokollquelle aus Security Lake gelöscht.

Dieses Beispiel ist für Linux, macOS oder Unix formatiert und verwendet den umgekehrten Schrägstrich (\) zur Verbesserung der Lesbarkeit.

$ aws securitylake delete-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE