Raccogli i log di AWS Security Hub
Questo documento spiega come importare i log di AWS Security Hub in Google Security Operations. AWS Security Hub fornisce una visione completa degli avvisi e dei risultati relativi alla sicurezza negli account AWS. Inviando questi risultati a Google SecOps, puoi utilizzare le funzionalità di Google SecOps per migliorare il monitoraggio e il rilevamento delle minacce.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi ad AWS.
Configura AWS IAM e S3
- Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creare un bucket.
- Salva Nome e Regione del bucket per utilizzarli in un secondo momento.
- Crea un utente seguendo questa guida dell'utente: Creare un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per utilizzarle in un secondo momento.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Collega direttamente i criteri.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Creare una funzione Lambda
- Accedi alla AWS Management Console.
- Vai a Lambda.
- Fai clic su Crea funzione e seleziona Autore da zero.
- Assegna un nome alla funzione, ad esempio
SecurityHubToS3
. - Scegli Python 3.x per il runtime.
Inserisci il codice Lambda che acquisisce i risultati da EventBridge e li scrive nel bucket S3:
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') }
Imposta le autorizzazioni per Lambda aggiungendo un ruolo IAM alla funzione Lambda con il seguente criterio:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::aws-security-hub-findings-stream/*" } ] }
Configurare AWS Security Hub per inoltrare i risultati con EventBridge
- Accedi alla AWS Management Console.
- Nella barra di ricerca, digita e seleziona Security Hub dall'elenco dei servizi.
- Fai clic su Impostazioni.
- Nella sezione Integrazioni, individua EventBridge e fai clic su Attiva.
- Nella barra di ricerca, digita e seleziona EventBridge dall'elenco dei servizi.
- Nella console EventBridge, fai clic su Regole > Crea regola.
- Specifica la seguente configurazione della regola:
- Nome regola: fornisci un nome descrittivo per la regola, ad esempio SendSecurityHubFindingsToS3.
- Origine evento: seleziona Servizi AWS.
- Nome servizio: scegli Security Hub.
- Tipo di evento: seleziona Risultati di Security Hub.
- Imposta il target: scegli Funzione Lambda.
- Seleziona la funzione Lambda appena creata (
SecurityHubToS3
).
- Fai clic su Crea.
Configura un feed in Google SecOps per importare i log di AWS Security Hub
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed, ad esempio Log di AWS Security Hub.
- Seleziona Amazon S3 come Tipo di origine.
- Seleziona AWS Security Hub come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- Regione: la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket.
s3://your-log-bucket-name/
- Sostituisci
your-log-bucket-name
con il nome effettivo del bucket.
- Sostituisci
- L'URI è una: seleziona Directory o Directory che include sottodirectory.
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Avanti.
Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
account |
principal.group.product_object_id |
L'ID account AWS associato al rilevamento. |
configurationItem.ARN |
target.resource.id |
Il nome risorsa Amazon (ARN) dell'elemento di configurazione. |
configurationItem.awsAccountId |
principal.user.userid |
L'ID account AWS dell'elemento di configurazione. |
configurationItem.awsRegion |
target.asset.location.country_or_region |
La regione AWS dell'elemento di configurazione. |
configurationItem.configuration.complianceType |
security_result.summary |
Il tipo di conformità dell'elemento di configurazione. |
configurationItem.configuration.configRuleList[].complianceType |
security_result.summary |
Stato di conformità per ogni regola di configurazione. |
configurationItem.configuration.configRuleList[].configRuleArn |
security_result.rule_id |
L'ARN della regola AWS Config. |
configurationItem.configuration.configRuleList[].configRuleId |
security_result.about.labels.configRuleId |
L'ID della regola AWS Config. |
configurationItem.configuration.configRuleList[].configRuleName |
security_result.rule_name |
Il nome della regola AWS Config. |
configurationItem.configuration.privateIpAddress |
target.ip |
L'indirizzo IP privato dell'elemento di configurazione. |
configurationItem.configuration.publicIpAddress |
target.ip |
L'indirizzo IP pubblico dell'elemento di configurazione. |
configurationItem.configurationItemCaptureTime |
target.asset.attribute.creation_time |
L'ora di acquisizione dell'elemento di configurazione, convertita in un timestamp. |
configurationItem.configurationItemStatus |
target.asset.attribute.labels.Configuration Item Status |
Lo stato dell'elemento di configurazione. |
configurationItem.relationships[].resourceId |
target.asset.attribute.cloud.vpc.id |
L'ID della risorsa correlata, utilizzato per l'ID VPC se corrisponde a vpc . |
configurationItem.resourceId |
target.resource.id |
L'ID risorsa dell'elemento di configurazione. |
configurationItem.resourceName |
target.resource.name |
Nome della risorsa. |
configurationItem.resourceType |
target.resource.resource_subtype |
Il tipo di risorsa dell'elemento di configurazione. |
configurationItem.tags.Contact |
principal.user.user_display_name OPPURE principal.user.email_addresses |
Dati di contatto estratti dai tag, analizzati per email e nome utente. |
configurationItem.tags.OS /configurationItem.tags.Os |
target.asset.platform_software.platform |
Il sistema operativo dai tag, mappato alla piattaforma se è Windows o Linux . |
configurationItemDiff.changeType |
metadata.event_type |
Il tipo di modifica, mappato a RESOURCE_WRITTEN o RESOURCE_CREATION. |
detail.accountId |
principal.group.product_object_id |
L'ID account AWS associato al rilevamento. |
detail.actionDescription detail.actionName detail.description |
sec_result.description |
La descrizione del risultato. |
detail.findings[].AwsAccountId |
principal.group.product_object_id |
L'ID account AWS associato al rilevamento. |
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description |
sec_result.description |
La descrizione del risultato. |
detail.findings[].FindingProviderFields.Severity.Label |
sec_result.severity |
L'etichetta della gravità del risultato, convertita in maiuscolo. |
detail.findings[].FindingProviderFields.Types[] detail.findings[].FirstObservedAt detail.findings[].GeneratorId detail.findings[].Id detail.findings[].LastObservedAt detail.findings[].ProductArn detail.findings[].ProductFields. |
Vedi di seguito | Vari campi utilizzati per campi aggiuntivi, informazioni principali e target. |
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region |
target.location.name |
La regione AWS del rilevamento. |
detail.findings[].Resources[].Details. |
Vedi di seguito | Dettagli sulle risorse coinvolte nel rilevamento. |
detail.findings[].Resources[].Id |
target.resource.product_object_id |
L'ID della risorsa. |
detail.findings[].Resources[].Partition detail.findings[].Resources[].Region |
target.location.name |
La regione AWS della risorsa. |
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type |
target.resource.resource_type , target.resource.resource_subtype , metadata.event_type |
Il tipo di risorsa, utilizzato per la mappatura del tipo di risorsa, del sottotipo e del tipo di evento. |
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title |
sec_result.summary |
Il titolo del rilievo. |
detail.findings[].Types[] detail.findings[].UpdatedAt detail.findings[].Workflow.Status detail.findings[].WorkflowState detail-type |
metadata.product_event_type |
Il tipo di dettaglio dell'evento. |
id |
metadata.product_log_id |
L'ID dell'evento. |
region |
target.location.name |
La regione AWS dell'evento. |
resources[] source time version (Logica del parser) |
metadata.event_timestamp |
L'ora di creazione della voce di log originale, utilizzata come timestamp dell'evento. |
(Parser Logic) | metadata.log_type |
Impostato su AWS_SECURITY_HUB . |
(Parser Logic) | metadata.product_name |
Impostato su AWS Security Hub . |
(Parser Logic) | metadata.vendor_name |
Impostato su AMAZON . |
(Parser Logic) | target.asset.attribute.cloud.environment |
Impostato su AMAZON_WEB_SERVICES . |
(Parser Logic) | metadata.event_type |
Imposta USER_RESOURCE_ACCESS come valore predefinito se non è mappato da Resources[].Type o configurationItemDiff.changeType . Impostato su STATUS_UPDATE se è presente configurationItems e non è impostato nessun altro tipo di evento. Imposta RESOURCE_READ se sono presenti configurationItem o configurationItems e lo stato è OK o ResourceDiscovered . Imposta RESOURCE_DELETION se sono presenti configurationItem o configurationItems e lo stato è ResourceDeleted . |
(Parser Logic) | metadata.description |
Imposta guardduty se è presente detail.findings[].ProductFields.aws/guardduty/service/serviceName . |
(Parser Logic) | target.asset.attribute.cloud.vpc.resource_type |
Imposta VPC_NETWORK se configurationItems.relationships[].resourceId corrisponde a vpc . |
(Parser Logic) | target.resource.resource_type |
Imposta VIRTUAL_MACHINE se sono presenti configurationItem o configurationItems . Impostato su UNSPECIFIED se non è impostato nessun altro tipo di risorsa. |
(Parser Logic) | target.asset.platform_software.platform |
Imposta WINDOWS o LINUX in base alla presenza di Windows o (Linux|LINUX) nel messaggio per configurationItem . Per configurationItems , viene impostato in base a configItem.tags.OS o configItem.tags.Os . |
(Parser Logic) | disambiguation_key |
Aggiunta quando vengono generati più eventi da una singola voce di log. |
Modifiche
2025-02-18
Miglioramento:
- È stato aggiunto il supporto per un nuovo array di formato dei log JSON.
2025-01-20
Miglioramento:
- È stato aggiunto il supporto per il nuovo formato dei log.
2025-01-16
Miglioramento:
- È stato aggiunto il supporto per un nuovo formato di log JSON.
2023-06-20
Miglioramento:
- Il valore di
metadata.event_type
è cambiato daGENERIC_EVENT
aUSER_RESOURCE_ACCESS
.
2023-03-24
Miglioramento:
- Quando
detail.findings.0.Resources.0.Type
==AwsEcsTaskDefinition
- target.resource.resource_type
è stato mappato aTASK
.event_type
è stato mappato aUSER_RESOURCE_ACCESS
.detail.findings.0.ProductFields.Resources:0/Id
è stato mappato aprincipal.asset_id
.- Tutti gli altri log con errori sono stati analizzati come GENERIC_EVENT perché STATUS_UPDATE non era un'opzione di analisi adatta.
2022-08-22
Miglioramento:
- Il valore vendor_name è stato aggiornato da
AWS SECURITY HUB
aAMAZON
. - Il valore product_name è stato aggiornato da
AWS SECURITY HUB
aAWS Security Hub
. - Sono stati analizzati i log nel nuovo formato JSON contenenti
configurationItem
oconfigurationItems
. - Sono stati gestiti i log importati come file di importazione separandoli utilizzando il ciclo for e analizzandoli come singoli eventi.
2022-07-01
- Parser appena creato.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.