AWS Security Hub-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie AWS Security Hub-Logs in Google Security Operations aufnehmen. AWS Security Hub bietet eine umfassende Übersicht über Sicherheitswarnungen und ‑ergebnisse in allen AWS-Konten. Wenn Sie diese Ergebnisse an Google SecOps senden, können Sie die Funktionen von Google SecOps nutzen, um die Überwachung und Bedrohungserkennung zu verbessern.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Privilegierter Zugriff auf AWS
AWS IAM und S3 konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets für die spätere Verwendung.
- 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 als Anwendungsfall Drittanbieterdienst 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 spätere 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 und wählen Sie sie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
Lambda-Funktion erstellen
- Melden Sie sich bei der AWS Management Console an.
- Rufen Sie Lambda auf.
- Klicken Sie auf Funktion erstellen und wählen Sie Von Grund auf erstellen aus.
- Geben Sie einen Namen für die Funktion ein, z. B.
SecurityHubToS3
. - Wählen Sie als Laufzeit Python 3.x aus.
Geben Sie den Lambda-Code ein, der die Ergebnisse von EventBridge übernimmt und in Ihren S3-Bucket schreibt:
import json import boto3 from datetime import datetime # Initialize the S3 client s3_client = boto3.client('s3') # S3 bucket where findings will be stored bucket_name = 'aws-security-hub-findings-stream' def lambda_handler(event, context): # Extract Security Hub findings from the event findings = event['detail']['findings'] # Generate a timestamp for the file name to avoid overwriting timestamp = datetime.now().strftime('%Y-%m-%dT%H-%M-%S') # Generate the S3 object key (file name) based on the timestamp object_key = f"security_hub_findings_{timestamp}.json" # Convert findings to JSON format findings_json = json.dumps(findings) # Upload the findings to S3 try: response = s3_client.put_object( Bucket=bucket_name, Key=object_key, Body=findings_json, ContentType='application/json' ) print(f"Successfully uploaded findings to S3: {response}") except Exception as e: print(f"Error uploading findings to S3: {e}") raise e return { 'statusCode': 200, 'body': json.dumps('Successfully processed findings') }
Legen Sie Berechtigungen für Lambda fest, indem Sie der Lambda-Funktion eine IAM-Rolle mit der folgenden Richtlinie hinzufügen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::aws-security-hub-findings-stream/*" } ] }
AWS Security Hub so konfigurieren, dass Ergebnisse mit EventBridge weitergeleitet werden
- Melden Sie sich bei der AWS Management Console an.
- Geben Sie in der Suchleiste Security Hub ein und wählen Sie den Dienst aus der Liste aus.
- Klicken Sie auf Einstellungen.
- Suchen Sie im Bereich Integrationen nach EventBridge und klicken Sie auf Aktivieren.
- Geben Sie in der Suchleiste EventBridge ein und wählen Sie den Dienst aus der Liste aus.
- Klicken Sie in der EventBridge-Konsole auf Regeln> Regel erstellen.
- Geben Sie die folgende Regelkonfiguration an:
- Regelname: Geben Sie einen beschreibenden Namen für die Regel an, z. B. SendSecurityHubFindingsToS3.
- Event Source (Ereignisquelle): Wählen Sie AWS services (AWS-Dienste) aus.
- Service Name (Dienstname): Wählen Sie Security Hub aus.
- Event Type (Ereignistyp): Wählen Sie Security Hub Findings (Security Hub-Ergebnisse) aus.
- Ziel festlegen: Wählen Sie Lambda-Funktion aus.
- Wählen Sie die gerade erstellte Lambda-Funktion aus (
SecurityHubToS3
).
- Klicken Sie auf Erstellen.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über die SIEM-Einstellungen > „Feeds“ einrichten
Informationen zum Konfigurieren mehrerer Feeds für verschiedene Logtypen in dieser Produktfamilie finden Sie unter Mehrere Feeds konfigurieren.
So konfigurieren Sie einen einzelnen Feed:
- 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 im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. AWS Security Hub Logs (AWS Security Hub-Logs).
- Wählen Sie Amazon S3 als Quelltyp aus.
- Wählen Sie AWS Security Hub als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Region: Die Region, in der sich der Amazon S3-Bucket befindet.
- S3-URI: Der Bucket-URI.
s3://your-log-bucket-name/
- Ersetzen Sie
your-log-bucket-name
durch den tatsächlichen Namen Ihres S3-Buckets.
- Ersetzen Sie
- URI ist ein: Wählen Sie je nach Bucket-Struktur entweder Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.
Access Key ID (Zugriffsschlüssel-ID): Der Zugriffsschlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.
Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- Region: Die Region, in der sich der Amazon S3-Bucket befindet.
- S3-URI: Der Bucket-URI.
s3://your-log-bucket-name/
- Ersetzen Sie
your-log-bucket-name
durch den tatsächlichen Namen Ihres S3-Buckets.
- Ersetzen Sie
- URI ist ein: Wählen Sie je nach Bucket-Struktur entweder Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
- Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.
Access Key ID (Zugriffsschlüssel-ID): Der Zugriffsschlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.
Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Namespace, der dem Feed zugeordnet ist.
- Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
account |
principal.group.product_object_id |
Die AWS-Konto-ID, die mit dem Ergebnis verknüpft ist. |
configurationItem.ARN |
target.resource.id |
Der Amazon Resource Name (ARN) des Konfigurationselements. |
configurationItem.awsAccountId |
principal.user.userid |
Die AWS-Konto-ID des Konfigurationselements. |
configurationItem.awsRegion |
target.asset.location.country_or_region |
Die AWS-Region des Konfigurationselements. |
configurationItem.configuration.complianceType |
security_result.summary |
Der Compliancetyp des Konfigurationselements. |
configurationItem.configuration.configRuleList[].complianceType |
security_result.summary |
Compliancestatus für jede Konfigurationsregel. |
configurationItem.configuration.configRuleList[].configRuleArn |
security_result.rule_id |
Der ARN der AWS Config-Regel. |
configurationItem.configuration.configRuleList[].configRuleId |
security_result.about.labels.configRuleId |
Die ID der AWS Config-Regel. |
configurationItem.configuration.configRuleList[].configRuleName |
security_result.rule_name |
Der Name der AWS Config-Regel. |
configurationItem.configuration.privateIpAddress |
target.ip |
Die private IP-Adresse des Konfigurationselements. |
configurationItem.configuration.publicIpAddress |
target.ip |
Die öffentliche IP-Adresse des Konfigurationselements. |
configurationItem.configurationItemCaptureTime |
target.asset.attribute.creation_time |
Die Erfassungszeit des Konfigurationselements, in einen Zeitstempel umgewandelt. |
configurationItem.configurationItemStatus |
target.asset.attribute.labels.Configuration Item Status |
Der Status des Konfigurationselements. |
configurationItem.relationships[].resourceId |
target.asset.attribute.cloud.vpc.id |
Die Ressourcen-ID der zugehörigen Ressource, die für die VPC-ID verwendet wird, wenn sie mit vpc übereinstimmt. |
configurationItem.resourceId |
target.resource.id |
Die Ressourcen-ID des Konfigurationselements. |
configurationItem.resourceName |
target.resource.name |
Name der Ressource. |
configurationItem.resourceType |
target.resource.resource_subtype |
Der Ressourcentyp des Konfigurationselements. |
configurationItem.tags.Contact |
principal.user.user_display_name ODER principal.user.email_addresses |
Kontaktdaten, die aus Tags extrahiert und nach E-Mail-Adresse und Nutzername geparst wurden. |
configurationItem.tags.OS /configurationItem.tags.Os |
target.asset.platform_software.platform |
Das Betriebssystem aus Tags, das der Plattform zugeordnet wird, wenn es Windows oder Linux ist. |
configurationItemDiff.changeType |
metadata.event_type |
Die Art der Änderung, die RESOURCE_WRITTEN oder RESOURCE_CREATION zugeordnet ist. |
detail.accountId |
principal.group.product_object_id |
Die AWS-Konto-ID, die mit dem Ergebnis verknüpft ist. |
detail.actionDescription detail.actionName detail.description |
sec_result.description |
Die Beschreibung des Ergebnisses. |
detail.findings[].AwsAccountId |
principal.group.product_object_id |
Die AWS-Konto-ID, die mit dem Ergebnis verknüpft ist. |
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description |
sec_result.description |
Die Beschreibung des Ergebnisses. |
detail.findings[].FindingProviderFields.Severity.Label |
sec_result.severity |
Das Schweregradlabel des Ergebnisses, in Großbuchstaben umgewandelt. |
detail.findings[].FindingProviderFields.Types[] detail.findings[].FirstObservedAt detail.findings[].GeneratorId detail.findings[].Id detail.findings[].LastObservedAt detail.findings[].ProductArn detail.findings[].ProductFields. |
Siehe unten. | Verschiedene Felder für zusätzliche Felder, Prinzipal- und Zielinformationen. |
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region |
target.location.name |
Die AWS-Region des Ergebnisses. |
detail.findings[].Resources[].Details. |
Siehe unten. | Details zu den Ressourcen, die an der Suche beteiligt sind. |
detail.findings[].Resources[].Id |
target.resource.product_object_id |
Die ID der Ressource. |
detail.findings[].Resources[].Partition detail.findings[].Resources[].Region |
target.location.name |
Die AWS-Region der Ressource. |
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type |
target.resource.resource_type , target.resource.resource_subtype , metadata.event_type |
Der Ressourcentyp, der für die Zuordnung von Ressourcentyp, ‑untertyp und Ereignistyp verwendet wird. |
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title |
sec_result.summary |
Der Titel des Ergebnisses. |
detail.findings[].Types[] detail.findings[].UpdatedAt detail.findings[].Workflow.Status detail.findings[].WorkflowState detail-type |
metadata.product_event_type |
Der Detailtyp des Ereignisses. |
id |
metadata.product_log_id |
Die ID des Ereignisses. |
region |
target.location.name |
Die AWS-Region des Ereignisses. |
resources[] source time version (Parser-Logik) |
metadata.event_timestamp |
Die Erstellungszeit aus dem ursprünglichen Logeintrag, die als Ereigniszeitstempel verwendet wird. |
(Parserlogik) | metadata.log_type |
Legen Sie AWS_SECURITY_HUB fest. |
(Parserlogik) | metadata.product_name |
Legen Sie AWS Security Hub fest. |
(Parserlogik) | metadata.vendor_name |
Legen Sie AMAZON fest. |
(Parserlogik) | target.asset.attribute.cloud.environment |
Legen Sie AMAZON_WEB_SERVICES fest. |
(Parserlogik) | metadata.event_type |
Wird standardmäßig auf USER_RESOURCE_ACCESS gesetzt, wenn keine Zuordnung von Resources[].Type oder configurationItemDiff.changeType erfolgt. Wird auf STATUS_UPDATE festgelegt, wenn configurationItems vorhanden ist und kein anderer Ereignistyp festgelegt ist. Wird auf RESOURCE_READ gesetzt, wenn configurationItem oder configurationItems vorhanden ist und der Status OK oder ResourceDiscovered ist. Wird auf RESOURCE_DELETION gesetzt, wenn configurationItem oder configurationItems vorhanden ist und der Status ResourceDeleted lautet. |
(Parserlogik) | metadata.description |
Wird auf guardduty gesetzt, wenn detail.findings[].ProductFields.aws/guardduty/service/serviceName vorhanden ist. |
(Parserlogik) | target.asset.attribute.cloud.vpc.resource_type |
Wird auf VPC_NETWORK gesetzt, wenn configurationItems.relationships[].resourceId mit vpc übereinstimmt. |
(Parserlogik) | target.resource.resource_type |
Wird auf VIRTUAL_MACHINE gesetzt, wenn configurationItem oder configurationItems vorhanden ist. Wird auf UNSPECIFIED gesetzt, wenn kein anderer Ressourcentyp festgelegt ist. |
(Parserlogik) | target.asset.platform_software.platform |
Legen Sie den Wert auf WINDOWS oder LINUX fest, je nachdem, ob Windows oder (Linux|LINUX) in der Nachricht für configurationItem vorhanden ist. Für configurationItems wird der Wert basierend auf configItem.tags.OS oder configItem.tags.Os festgelegt. |
(Parserlogik) | disambiguation_key |
Wird hinzugefügt, wenn mehrere Ereignisse aus einem einzelnen Logeintrag generiert werden. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten