Wie verwende ich EventBridge mit einem Amazon-SNS-Thema, um benutzerdefinierte E-Mail-Benachrichtigungen für Security-Hub-Erkenntnisse einzurichten?
Ich möchte Amazon EventBridge mit einem Amazon Simple Notification Service (Amazon SNS)-Thema verwenden, um benutzerdefinierte E-Mail-Benachrichtigungen für AWS Security Hub einzurichten.
Kurzbeschreibung
Die folgende Lösung zeigt dir, wie du Amazon EventBridge mit Amazon SNS für den Empfang von Security-Hub-Benachrichtigungen konfigurierst. Basierend auf der EventBridge-Regel sendet Amazon SNS eine Benachrichtigung an die E-Mail-Adresse, die das Thema abonniert hat, wenn das Ereignis eintritt. Eine AWS-Lambda-Funktion erstellt eine benutzerdefinierte Warnmeldung mit verbesserter Formatierung.
Lösung
Ein SNS-Thema und ein Abonnement erstellen
Gehe wie folgt vor:
- Öffne die Amazon-SNS-Konsole.
- Wähle im Navigationsbereich Themen aus.
- Wähle Thema erstellen aus.
- Wähle im Abschnitt Details für Typ die Option Standard.
- Gib für Name den Namen deines Themas ein.
- Wähle Thema erstellen aus.
- Wähle im erstellten Thema die Option Abonnement erstellen aus.
- Wähle für Themen-ARN den Amazon-Ressourcennamen (ARN) des Themas aus, das du erstellt hast, falls er nicht automatisch ausgefüllt wird.
- Wähle für Protokoll die Option E-Mail.
- Gib für Endpunkt die E-Mail-Adresse ein, an die du die SNS-Benachrichtigungen erhalten möchtest.
- Wähle Abonnement erstellen aus.
Wichtig: Du musst das Abonnement in der Bestätigungs-E-Mail bestätigen, die an den Abonnenten gesendet wird, damit das Abonnement vom Status PendingConfirmation zu Confirmed wechselt. - (Optional) Du kannst auch ein authentifiziertes Abonnement erstellen, das die Abmeldeaktion für dein Thema verhindert.
Eine Lambda-Funktion erstellen
Gehe wie folgt vor:
- Öffne die Lambda-Konsole.
- Wähle im Navigationsbereich Funktionen.
- Wähle Funktion erstellen.
- Wähle Ohne Vorgabe erstellen aus.
- Gib für Funktionsname den Namen der Funktion ein.
- Wähle Laufzeit und dann Python 3.14.
- Wähle für Architektur x86_64 aus.
- Erweitere Standard-Ausführungsrolle ändern.
- Wähle für Ausführungsrolle die Option Erstellen Sie eine neue Rolle anhand der AWS-Richtlinienvorlagen.
- Gib für Name der Rolle einen Namen für die Rolle ein.
- Wähle für Policy template (Richtlinienvorlage) Amazon SNS-Veröffentlichungsrichtlinie aus.
- Wähle Funktion erstellen.
- Gib den folgenden Code in den Abschnitt Quellcode ein:
import json import boto3 sns = boto3.client('sns') def lambda_handler(event, context): #Extract details from JSON event detailType= event["detail-type"] region = event["region"] accountId = event["account"] #Security Hub Insight Results if (detailType == "Security Hub Insight Results"): action = event["detail"]["actionDescription"] message = "Alert: %s in %s for account: %s\n Action description: %s" % (detailType, region,accountId,action) elif ("Security Hub Findings" in detailType): finding = event["detail"]["findings"][0] findingTime = finding["FirstObservedAt"] findingType = finding["Types"][0] findingDescription = finding["Description"] remediation = finding["Remediation"]["Recommendation"]["Text"] #Security Hub Findings - Custom finding if(detailType == "Security Hub Findings - Custom"): complianceStatus = finding["Compliance"]["Status"] severity = finding["Severity"]["Label"] remediationUrl = finding["Remediation"]["Recommendation"]["Url"] message = "Alert: %s in %s for account: %s\n\nFinding regarding: [%s] %s\n Severity: %s\nDescription: %s\nFirst observed at: %s\n%s: %s" % (detailType, region, accountId, complianceStatus, findingType, severity, findingDescription, findingTime, remediation, remediationUrl) #Security Hub Findings - Imported finding else: message = "Alert: %s in %s for account: %s\n\nFinding regarding: %s\nFirst observed at: %s\nRemediation recommendation: %s" % (detailType, region, accountId, findingDescription,findingTime, remediation) #AWS API Call via CloudTrail finding elif (detailType == "AWS API Call via CloudTrail"): time = event["detail"]["eventTime"] eventName = event["detail"]["eventName"] requestParameters = event["detail"]["requestParameters"] message = "Alert: %s in %s for account: %s at time: %s\n\n Event: %s \n Request parameters: %s" % (detailType, region, accountId, time, eventName, requestParameters) #If the event doesn't match any of the above, return the event else: message = str(event) response = sns.publish( TopicArn = "arn:aws:sns:eu-west-1:111122233333:your-arn", Message = message ) return { 'statusCode': 200, 'body': json.dumps('Success!') }
Hinweis: Ersetze arn:aws:sns:eu-west-1:111122233333:your-arn durch deinen Themen-ARN. Wähle Bereitstellen.
Die EventBridge-Regel erstellen und konfigurieren
Gehe wie folgt vor:
- Öffne die EventBridge-Konsole.
- Wähle im Navigationsbereich Regeln und dann Regel erstellen aus.
- Gib einen Namen für deine Regel ein und wähle dann Weiter.
- Wähle für Methode der Erstellung die Option Musterformat verwenden.
- Wähle für Ereignisquelle die Option AWS-Services aus.
- Wähle für AWS-Service Security Hub aus.
- Wähle für Ereignistyp Alle Ereignisse und dann Weiter aus.
Hinweis: Du kannst Benachrichtigungen auch nur für bestimmte Ereignisse anstatt für alle Ereignisse konfigurieren. - Wähle für Zieltypen AWS-Service aus.
- Wähle für Ein Ziel auswählen die Lambda-Funktion aus.
- Wähle für Funktion die Funktion aus, die du zuvor erstellt hast, und dann Weiter.
- Wähle auf der Seite Tags konfigurieren die Option Weiter aus.
- Wähle Regel erstellen aus.
Eine benutzerdefinierte Benachrichtigung erhalten
Wenn die konfigurierten Ereignisse eintreten, erhältst du eine benutzerdefinierte Benachrichtigungs-E-Mail von no-reply@sns.amazonaws.com.
Die standardmäßigen Security-Hub-Ereignisse werden in ein benutzerdefiniertes Format umformatiert, das lesbarer ist.
Beispiel für eine Security-Hub-Insight-Ergebnismeldung
Standard:
{"version": "0", "id": "ac844908-d14e-05b1-4b7b-836d85110e26", "detail-type": "Security Hub Insight Results", "source": "aws.securityhub", "account": "123456789012", "time": "2019-04-11T21:31:57Z", "region": "us-east-1", "resources": ["arn:aws:securityhub:us-east-1:123456789012:action/custom/slackMessaging"], "detail": {"actionName": "SendToSlack", "actionDescription": "Send Findings to Slack", "insightName": "5. AWS users with the most suspicious activity", "insightArn": "arn:aws:securityhub:::insight/securityhub/default/9", "resultType": "ResourceAwsIamAccessKeyUserName", "insightResults": [{"Admin": 7}, {"DenySlr_UI_User": 1}]}}
Benutzerdefiniert:
Warnung: Security-Hub-Insight-Ergebnisse in us-east-1 für Konto: 123456789012
Beschreibung der Aktion: Erkenntnisse an Slack senden
Hinweis: Du kannst die Nachricht für jeden Sicherheitserkenntnistyp für deinen Anwendungsfall bearbeiten.
Ähnliche Informationen
Warum hat meine EventBridge-Regel meine Lambda-Funktion nicht aufgerufen?
- Themen
- Application Integration
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren