Raccogliere i log di AWS Security Hub
Questo documento spiega come importare i log di AWS Security Hub in Google Security Operations. AWS Security Hub offre una visione completa degli avvisi e dei risultati di sicurezza negli account AWS. Se invii 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 soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Accesso privilegiato ad AWS
Configura AWS IAM e S3
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket.
- Salva il Nome e la Regione del bucket per utilizzarli in un secondo momento.
- Crea un utente seguendo questa guida: Creazione di 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 un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente le norme.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Creare una funzione Lambda
- Accedi alla console di gestione AWS.
- Vai a Lambda.
- Fai clic su Crea funzione e seleziona Crea da zero.
- Fornisci un nome per la funzione, ad esempio
SecurityHubToS3
. - Scegli Python 3.x per il runtime.
Inserisci il codice Lambda che prende i risultati da EventBridge e li scrive nel tuo 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) # 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/*" } ] }
Come configurare AWS Security Hub per inoltrare i risultati con EventBridge
- Accedi alla console di gestione AWS.
- Nella barra di ricerca, digita e seleziona Security Hub dall'elenco dei servizi.
- Fai clic su Impostazioni.
- Nella sezione Integrazioni, trova 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.
- Fornisci 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.
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed
- Hub dei contenuti > Pacchetti di contenuti
Configurare i feed da Impostazioni SIEM > Feed
Per configurare più feed per diversi tipi di log all'interno di questa famiglia di prodotti, consulta Configurare più feed.
Per configurare un singolo feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed, ad esempio AWS Security Hub Logs.
- 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:
- Region (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 tuo bucket S3.
- Sostituisci
- L'URI è un: seleziona Directory o Directory che include sottodirectory, a seconda della struttura del bucket.
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze di importazione.
ID chiave di accesso: la chiave di accesso dell'utente con autorizzazioni di lettura dal bucket S3.
Chiave di accesso segreta: la chiave segreta dell'utente con le autorizzazioni per leggere dal 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.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Configurare i feed dall'hub dei contenuti
Specifica i valori per i seguenti campi:
- Region (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 tuo bucket S3.
- Sostituisci
- L'URI è un: seleziona Directory o Directory che include sottodirectory, a seconda della struttura del bucket.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze di importazione.
ID chiave di accesso: la chiave di accesso dell'utente con autorizzazioni di lettura dal bucket S3.
Chiave di accesso segreta: la chiave segreta dell'utente con le autorizzazioni per leggere dal bucket S3.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
- Spazio dei nomi dell'asset: spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
account |
principal.group.product_object_id |
L'ID account AWS associato al risultato. |
configurationItem.ARN |
target.resource.id |
L'Amazon Resource Name (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 risorsa 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 su RESOURCE_WRITTEN o RESOURCE_CREATION. |
detail.accountId |
principal.group.product_object_id |
L'ID account AWS associato al risultato. |
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 risultato. |
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 di 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, entità e informazioni di destinazione. |
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region |
target.location.name |
La regione AWS del risultato. |
detail.findings[].Resources[].Details. |
Vedi di seguito | Dettagli sulle risorse coinvolte nel risultato. |
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 il mapping di tipo, sottotipo ed evento della risorsa. |
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title |
sec_result.summary |
Il titolo del risultato. |
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 (Parser Logic) |
metadata.event_timestamp |
L'ora di creazione della voce di log originale, utilizzata come timestamp dell'evento. |
(Parser Logic) | metadata.log_type |
Imposta su AWS_SECURITY_HUB . |
(Parser Logic) | metadata.product_name |
Imposta su AWS Security Hub . |
(Parser Logic) | metadata.vendor_name |
Imposta su AMAZON . |
(Parser Logic) | target.asset.attribute.cloud.environment |
Imposta 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 . Imposta su STATUS_UPDATE se configurationItems è presente e non è impostato nessun altro tipo di evento. Imposta su RESOURCE_READ se configurationItem o configurationItems è presente e lo stato è OK o ResourceDiscovered . Imposta su RESOURCE_DELETION se configurationItem o configurationItems è presente e lo stato è ResourceDeleted . |
(Parser Logic) | metadata.description |
Imposta su guardduty se è presente detail.findings[].ProductFields.aws/guardduty/service/serviceName . |
(Parser Logic) | target.asset.attribute.cloud.vpc.resource_type |
Imposta su VPC_NETWORK se configurationItems.relationships[].resourceId corrisponde a vpc . |
(Parser Logic) | target.resource.resource_type |
Imposta su VIRTUAL_MACHINE se è presente configurationItem o configurationItems . Imposta su UNSPECIFIED se non è impostato nessun altro tipo di risorsa. |
(Parser Logic) | target.asset.platform_software.platform |
Imposta su WINDOWS o LINUX in base alla presenza di Windows o (Linux|LINUX) nel messaggio per configurationItem . Per configurationItems , l'impostazione si basa su configItem.tags.OS o configItem.tags.Os . |
(Parser Logic) | disambiguation_key |
Aggiunto quando vengono generati più eventi da una singola voce di log. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.