Raccogli i log di AWS Security Hub

Supportato in:

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

  1. Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creare un bucket.
  2. Salva Nome e Regione del bucket per utilizzarli in un secondo momento.
  3. Crea un utente seguendo questa guida dell'utente: Creare un utente IAM.
  4. Seleziona l'utente creato.
  5. Seleziona la scheda Credenziali di sicurezza.
  6. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  7. Seleziona Servizio di terze parti come Caso d'uso.
  8. Fai clic su Avanti.
  9. (Facoltativo) Aggiungi un tag di descrizione.
  10. Fai clic su Crea chiave di accesso.
  11. Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per utilizzarle in un secondo momento.
  12. Fai clic su Fine.
  13. Seleziona la scheda Autorizzazioni.
  14. Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
  15. Seleziona Aggiungi autorizzazioni.
  16. Seleziona Collega direttamente i criteri.
  17. Cerca e seleziona il criterio AmazonS3FullAccess.
  18. Fai clic su Avanti.
  19. Fai clic su Aggiungi autorizzazioni.

Creare una funzione Lambda

  1. Accedi alla AWS Management Console.
  2. Vai a Lambda.
  3. Fai clic su Crea funzione e seleziona Autore da zero.
  4. Assegna un nome alla funzione, ad esempio SecurityHubToS3.
  5. Scegli Python 3.x per il runtime.
  6. 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')
       }
    
  7. 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

  1. Accedi alla AWS Management Console.
  2. Nella barra di ricerca, digita e seleziona Security Hub dall'elenco dei servizi.
  3. Fai clic su Impostazioni.
  4. Nella sezione Integrazioni, individua EventBridge e fai clic su Attiva.
  5. Nella barra di ricerca, digita e seleziona EventBridge dall'elenco dei servizi.
  6. Nella console EventBridge, fai clic su Regole > Crea regola.
  7. Specifica la seguente configurazione della regola:
    1. Nome regola: fornisci un nome descrittivo per la regola, ad esempio SendSecurityHubFindingsToS3.
    2. Origine evento: seleziona Servizi AWS.
    3. Nome servizio: scegli Security Hub.
    4. Tipo di evento: seleziona Risultati di Security Hub.
    5. Imposta il target: scegli Funzione Lambda.
    6. Seleziona la funzione Lambda appena creata (SecurityHubToS3).
  8. Fai clic su Crea.

Configura un feed in Google SecOps per importare i log di AWS Security Hub

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed, ad esempio Log di AWS Security Hub.
  4. Seleziona Amazon S3 come Tipo di origine.
  5. Seleziona AWS Security Hub come Tipo di log.
  6. Fai clic su Avanti.
  7. 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.
    • 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.

  8. Fai clic su Avanti.

  9. 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 da GENERIC_EVENT a USER_RESOURCE_ACCESS.

2023-03-24

Miglioramento:

  • Quando detail.findings.0.Resources.0.Type == AwsEcsTaskDefinition -
  • target.resource.resource_type è stato mappato a TASK.
  • event_type è stato mappato a USER_RESOURCE_ACCESS.
  • detail.findings.0.ProductFields.Resources:0/Id è stato mappato a principal.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 a AMAZON.
  • Il valore product_name è stato aggiornato da AWS SECURITY HUB a AWS Security Hub.
  • Sono stati analizzati i log nel nuovo formato JSON contenenti configurationItem o configurationItems.
  • 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.