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 Criteri per le autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente i criteri.
- 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 > Aggiungi nuovo
- Hub dei contenuti > Pacchetti di contenuti > Inizia
Come configurare il feed AWS Security Hub
- Fai clic sul pacchetto Amazon Cloud Platform.
- Individua il tipo di log AWS Security Hub.
Specifica i valori nei seguenti campi.
- Tipo di origine: Amazon SQS V2
- Nome coda: il nome della coda SQS da cui leggere
- 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
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze di importazione.
Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
ID chiave di accesso alla coda SQS: una chiave di accesso all'account che è una stringa alfanumerica di 20 caratteri.
Chiave di accesso segreta della coda SQS: una chiave di accesso all'account che è una stringa alfanumerica di 40 caratteri.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Fai clic su Crea feed.
Per ulteriori informazioni sulla configurazione di più feed per diversi tipi di log all'interno di questa famiglia di prodotti, consulta Configurare i feed per prodotto.
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 è presente configurationItem o configurationItems 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.