AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Come posso configurare notifiche e-mail personalizzate per gli esiti di Security Hub utilizzando EventBridge con un topic Amazon SNS?
Desidero configurare notifiche e-mail personalizzate per AWS Security Hub utilizzando Amazon EventBridge con un topic Amazon Simple Notification Service (Amazon SNS).
Breve descrizione
La seguente risoluzione mostra come configurare Amazon EventBridge con Amazon SNS per ricevere notifiche relative a Security Hub. In base alla regola di EventBridge, Amazon SNS invia una notifica all'indirizzo e-mail che ha sottoscritto il topic quando si verifica l'evento. Una funzione AWS Lambda crea un avviso personalizzato con una formattazione migliorata.
Risoluzione
Crea un topic SNS e una sottoscrizione
Completa i seguenti passaggi:
- Apri la console Amazon SNS.
- Nel pannello di navigazione, scegli Argomenti.
- Scegli Crea argomento.
- Nella sezione Dettagli, per Tipo, scegli Standard.
- In Nome, inserisci il nome del topic.
- Scegli Crea argomento.
- Dal topic creato, scegli Crea sottoscrizione.
- Per ARN argomento, seleziona il nome della risorsa Amazon (ARN) del topic che hai creato se non è stato compilato automaticamente.
- Per Protocollo, seleziona E-mail.
- In Endpoint, inserisci l'indirizzo e-mail su cui desideri ricevere le notifiche di SNS.
- Scegli Crea sottoscrizione.
Importante: devi confermare la sottoscrizione nell'e-mail di conferma inviata al sottoscrittore affinché la sottoscrizione passi dallo stato In attesa di conferma allo stato Confermata. - (Facoltativo) Puoi anche creare una sottoscrizione autenticata che impedisce di eseguire l'azione di annullamento della sottoscrizione sul topic.
Crea una funzione Lambda
Completa i seguenti passaggi:
- Apri la console Lambda.
- Nel pannello di navigazione, scegli Funzioni.
- Scegli Crea funzione.
- Scegli Crea da zero.
- In Nome funzione, inserisci un nome per la funzione.
- Scegli Runtime, quindi seleziona Python 3.14.
- Per Architettura, seleziona x86_64.
- Espandi Modifica del ruolo di esecuzione predefinito.
- Per Ruolo di esecuzione, seleziona Crea un nuovo ruolo dalla policy AWS templates.
- In Nome ruolo, inserisci un nome per il ruolo.
- Per Modello di policy, scegli Policy di pubblicazione di Amazon SNS.
- Scegli Crea funzione.
- Inserisci il seguente codice nella sezione Origine del codice:
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!') }
Nota: sostituisci arn:aws:sns:eu-west-1:111122233333:your-arn con l'ARN del tuo topic. Scegli Distribuisci.
Crea e configura la regola di EventBridge
Completa i seguenti passaggi:
- Apri la console EventBridge.
- Nel pannello di navigazione, scegli Regole, quindi seleziona Crea regola.
- Inserisci un Nome per la regola, quindi scegli Avanti.
- Per Metodo di creazione, scegli Utilizza modulo del modello.
- Per Origine dell'evento, seleziona Servizi AWS.
- Per Servizio AWS, seleziona Security Hub.
- Per Tipo di evento, seleziona Tutti gli eventi, quindi scegli Avanti.
Nota: puoi anche configurare avvisi per eventi specifici anziché per tutti gli eventi. - Per Tipi di destinazione, scegli Servizio AWS.
- Per Seleziona una destinazione, scegli Funzione Lambda.
- Per Funzione, scegli la funzione che hai creato in precedenza, quindi seleziona Avanti.
- Nella pagina Configura i tag, scegli Avanti.
- Scegli Crea regola.
Ricevi una notifica personalizzata
Quando si verificano gli eventi configurati, ricevi un'e-mail di notifica personalizzata da no-reply@sns.amazonaws.com.
Gli eventi di Security Hub predefiniti vengono riformulati in un formato personalizzato più leggibile.
Esempio di messaggio di esito di Security Hub Insight
Predefinito:
{"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}]}}
Personalizzato:
Alert: Security Hub Insight Results in us-east-1 for account: 123456789012
Action description: Send Findings to Slack
Nota: puoi modificare il messaggio per ogni tipo di esito di sicurezza in funzione del caso d'uso.
Informazioni correlate
Tutorial: usa i trasformatori di input per trasformare gli eventi in EventBridge
Perché la mia regola di EventBridge non ha invocato la mia funzione Lambda?
- Argomenti
- Application Integration
- Lingua
- Italiano
Video correlati

