AWS Security Hub-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie AWS Security Hub-Protokolle in Google Security Operations aufnehmen. AWS Security Hub bietet eine umfassende Übersicht über Sicherheitswarnungen und -befunde 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

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen erhöhte Zugriffsrechte für AWS.

AWS IAM und S3 konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter Bucket erstellen.
  2. Speichern Sie den Namen und die Region des Buckets für später.
  3. Erstellen Sie einen Nutzer. Folgen Sie dazu der Anleitung unter IAM-Nutzer erstellen.
  4. Wählen Sie den erstellten Nutzer aus.
  5. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  6. Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  7. Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
  8. Klicken Sie auf Weiter.
  9. Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
  10. Klicken Sie auf Zugriffsschlüssel erstellen.
  11. Klicken Sie auf CSV-Datei herunterladen, um den Zugriffsschlüssel und den Secret Access Key zur späteren Verwendung zu speichern.
  12. Klicken Sie auf Fertig.
  13. Wählen Sie den Tab Berechtigungen aus.
  14. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  15. Wählen Sie Berechtigungen hinzufügen aus.
  16. Wählen Sie Richtlinien direkt anhängen aus.
  17. Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
  18. Klicken Sie auf Weiter.
  19. Klicken Sie auf Berechtigungen hinzufügen.

Lambda-Funktion erstellen

  1. Melden Sie sich bei der AWS Management Console an.
  2. Rufen Sie Lambda auf.
  3. Klicken Sie auf Funktion erstellen und wählen Sie Neu erstellen aus.
  4. Geben Sie einen Namen für die Funktion ein, z. B. SecurityHubToS3.
  5. Wählen Sie als Laufzeit Python 3.x aus.
  6. Geben Sie den Lambda-Code ein, der die Ergebnisse aus EventBridge 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, indent=4)
    
       # 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')
       }
    
  7. 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

  1. Melden Sie sich bei der AWS Management Console an.
  2. Geben Sie in die Suchleiste Security Hub ein und wählen Sie diese Option in der Liste der Dienste aus.
  3. Klicken Sie auf Einstellungen.
  4. Suchen Sie im Bereich Integrationen nach EventBridge und klicken Sie auf Aktivieren.
  5. Geben Sie in die Suchleiste EventBridge ein und wählen Sie die Option aus der Liste der Dienste aus.
  6. Klicken Sie in der EventBridge-Konsole auf Regeln > Regel erstellen.
  7. Geben Sie die folgende Regelkonfiguration an:
    1. Regelname: Geben Sie einen aussagekräftigen Namen für die Regel ein, z. B. SendSecurityHubFindingsToS3.
    2. Ereignisquelle: Wählen Sie AWS-Dienste aus.
    3. Dienstname: Wählen Sie Security Hub aus.
    4. Ereignistyp: Wählen Sie Security Hub-Ergebnisse aus.
    5. Ziel festlegen: Wählen Sie Lambda-Funktion aus.
    6. Wählen Sie die Lambda-Funktion aus, die Sie gerade erstellt haben (SecurityHubToS3).
  8. Klicken Sie auf Erstellen.

Feed in Google SecOps für die Aufnahme von AWS Security Hub-Logs konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. AWS Security Hub-Protokolle.
  4. Wählen Sie als Quelltyp Amazon S3 aus.
  5. Wählen Sie als Logtyp AWS Security Hub aus.
  6. Klicken Sie auf Weiter.
  7. 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 des Buckets.
    • URI ist ein: Wählen Sie Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Option aus.

    • Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.

    • Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.

    • Asset-Namespace: der Asset-Namespace.

    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.

  8. Klicken Sie auf Weiter.

  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
account principal.group.product_object_id Die mit dem Befund verknüpfte AWS-Konto-ID.
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 Compliance-Typ des Konfigurationselements.
configurationItem.configuration.configRuleList[].complianceType security_result.summary Compliance-Status für jede Konfigurationsregel.
configurationItem.configuration.configRuleList[].configRuleArn security_result.rule_id Die 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 Der Erfassungszeitpunkt 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 als 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 Aus Tags extrahierte Kontaktdaten, nach E-Mail-Adresse und Nutzername geparst.
configurationItem.tags.OS/configurationItem.tags.Os target.asset.platform_software.platform Das Betriebssystem aus den Tags, der Plattform zugeordnet, wenn es Windows oder Linux ist.
configurationItemDiff.changeType metadata.event_type Der Änderungstyp, der RESOURCE_WRITTEN oder RESOURCE_CREATION zugeordnet ist.
detail.accountId principal.group.product_object_id Die mit dem Befund verknüpfte AWS-Konto-ID.
detail.actionDescription detail.actionName detail.description sec_result.description Die Beschreibung der Abweichung.
detail.findings[].AwsAccountId principal.group.product_object_id Die mit dem Befund verknüpfte AWS-Konto-ID.
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description sec_result.description Beschreibung der Abweichung
detail.findings[].FindingProviderFields.Severity.Label sec_result.severity Das Labels für den Schweregrad des Ergebnisses, in Großbuchstaben.
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, Haupt- 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 mit dem Ergebnis verbundenen Ressourcen.
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 der Erkenntnis.
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 (Parserlogik) metadata.event_timestamp Die Erstellungszeit aus dem ursprünglichen Logeintrag, die als Ereigniszeitstempel verwendet wird.
(Parser Logic) metadata.log_type Legen Sie AWS_SECURITY_HUB fest.
(Parser Logic) metadata.product_name Legen Sie AWS Security Hub fest.
(Parser Logic) metadata.vendor_name Legen Sie AMAZON fest.
(Parser Logic) target.asset.attribute.cloud.environment Legen Sie AMAZON_WEB_SERVICES fest.
(Parser Logic) metadata.event_type Wenn nicht von Resources[].Type oder configurationItemDiff.changeType zugeordnet, wird standardmäßig USER_RESOURCE_ACCESS festgelegt. Legen Sie STATUS_UPDATE fest, wenn configurationItems vorhanden ist und kein anderer Ereignistyp festgelegt ist. Setzen Sie RESOURCE_READ, 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.
(Parser Logic) metadata.description Wird auf guardduty gesetzt, wenn detail.findings[].ProductFields.aws/guardduty/service/serviceName vorhanden ist.
(Parser Logic) target.asset.attribute.cloud.vpc.resource_type Wird auf VPC_NETWORK gesetzt, wenn configurationItems.relationships[].resourceId mit vpc übereinstimmt.
(Parser Logic) target.resource.resource_type Legen Sie VIRTUAL_MACHINE fest, wenn configurationItem oder configurationItems vorhanden ist. Legen Sie UNSPECIFIED fest, wenn kein anderer Ressourcentyp festgelegt ist.
(Parser Logic) target.asset.platform_software.platform Legen Sie WINDOWS oder LINUX fest, je nachdem, ob Windows oder (Linux|LINUX) in der Nachricht für configurationItem enthalten ist. Für configurationItems wird der Wert anhand von configItem.tags.OS oder configItem.tags.Os festgelegt.
(Parser Logic) disambiguation_key Wird hinzugefügt, wenn aus einem einzelnen Logeintrag mehrere Ereignisse generiert werden.

Änderungen

2025-02-18

Optimierung:

  • Unterstützung für ein neues JSON-Logformat hinzugefügt.

2025-01-20

Optimierung:

  • Unterstützung für neues Protokollformat hinzugefügt.

2025-01-16

Optimierung:

  • Unterstützung für ein neues JSON-Logformat hinzugefügt.

2023-06-20

Optimierung:

  • metadata.event_type von GENERIC_EVENT auf USER_RESOURCE_ACCESS geändert

2023-03-24

Optimierung:

  • Wenn detail.findings.0.Resources.0.Type = AwsEcsTaskDefinition:
  • target.resource.resource_type wurde TASK zugeordnet.
  • event_type wurde USER_RESOURCE_ACCESS zugeordnet.
  • detail.findings.0.ProductFields.Resources:0/Id wurde principal.asset_id zugeordnet.
  • Alle anderen fehlgeschlagenen Protokolle wurden als GENERIC_EVENT geparst, da STATUS_UPDATE für sie keine gute Parseoption war.

2022-08-22

Optimierung:

  • „vendor_name“ wurde von „AWS SECURITY HUB“ zu „AMAZON“ geändert.
  • „product_name“ wurde von „AWS SECURITY HUB“ zu „AWS Security Hub“ geändert.
  • Die neuen Protokolle im JSON-Format wurden geparst und enthielten configurationItem oder configurationItems.
  • Die Protokolle, die als Importdatei aufgenommen wurden, wurden mit einer For-Schleife getrennt und als einzelne Ereignisse geparst.

2022-07-01

  • Neu erstellter Parser.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten