Raccogliere i log WAF di Akamai

Supportato in:

Questo documento spiega come esportare e importare i log WAF di Akamai in Google Security Operations utilizzando Google Cloud Storage o AWS S3. Il parser gestisce i log, supportando i formati syslog e CEF. Estrae campi come indirizzi IP, URL, metodi HTTP, codici di risposta, user agent e informazioni sulle regole di sicurezza, mappandoli al modello UDM (Unified Data Model) per una rappresentazione coerente. Il parser gestisce anche campi Akamai specifici come attackData e clientReputation, eseguendo le trasformazioni dei dati necessarie e arricchendo l'output UDM.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps
  • Accesso privilegiato a Google Cloud o AWS
  • Accesso privilegiato ad Akamai

Esportazione e importazione dei log WAF Akamai da Cloud Storage

Questa sezione descrive il passaggio iniziale della procedura: la configurazione dello spazio di archiviazione necessario per i log WAF di Akamai.

Crea un Google Cloud bucket di archiviazione

  1. Accedi alla Google Cloud console.
  2. Vai alla pagina Bucket Cloud Storage.

    Vai a Bucket

  3. Fai clic su Crea.

  4. Nella pagina Crea un bucket, inserisci le informazioni del bucket. Dopo ogni passaggio riportato di seguito, fai clic su Continua per passare al passaggio successivo:

    1. Nella sezione Inizia:

      • Inserisci un nome univoco che soddisfi i requisiti per i nomi dei bucket (ad esempio, akamai-waf-logs).
      • Per attivare lo spazio dei nomi gerarchico, fai clic sulla freccia di espansione per espandere la sezione Ottimizza per workload orientati ai file e con uso intensivo dei dati, poi seleziona Abilita uno spazio dei nomi gerarchico in questo bucket.
      • Per aggiungere un'etichetta del bucket, fai clic sulla freccia di espansione per espandere la sezione Etichette.
      • Fai clic su Aggiungi etichetta e specifica una chiave e un valore per l'etichetta.
    2. Nella sezione Scegli dove archiviare i tuoi dati, segui questi passaggi:

      • Seleziona un Tipo di località.
      • Utilizza il menu a discesa del tipo di località per selezionare una località in cui verranno archiviati in modo permanente i dati degli oggetti all'interno del bucket.
      • Per configurare la replica tra bucket, espandi la sezione Configura replica tra bucket.
    3. Nella sezione Scegli una classe di archiviazione per i tuoi dati, seleziona una classe di archiviazione predefinita per il bucket oppure Autoclass per la gestione automatica della classe di archiviazione dei dati del bucket.

    4. Nella sezione Scegli come controllare l'accesso agli oggetti, seleziona No per applicare la prevenzione dell'accesso pubblico e seleziona un modello di controllo dell'accesso per gli oggetti del bucket.

    5. Nella sezione Scegli come proteggere i dati degli oggetti, segui questi passaggi:

      • Seleziona una delle opzioni in Protezione dei dati che vuoi impostare per il bucket.
      • Per scegliere come criptare i dati degli oggetti, fai clic sulla freccia di espansione con l'etichetta Crittografia dei dati e seleziona un metodo di crittografia dei dati.
  5. Fai clic su Crea.

Configura le autorizzazioni per Cloud Storage

  1. Vai alla pagina Crea account di servizio.

    Vai a Crea service account

  2. Seleziona un progetto Google Cloud.

  3. Inserisci un nome service account da visualizzare nella Google Cloud console.

  4. Fai clic su Crea e continua.

  5. Concedi il ruolo roles/storage.admin sul bucket.

  6. Fai clic su Fine per completare la creazione del service account.

Crea e scarica Google Cloud il file della chiave del service account

  1. Vai alla pagina Account di servizio.

    Vai ad Account di servizio

  2. Seleziona un progetto Google Cloud.

  3. Fai clic sull'indirizzo email del account di servizio appena creato.

  4. Fai clic sulla scheda Chiavi.

  5. Fai clic sul menu Aggiungi chiave, quindi seleziona Crea nuova chiave.

  6. Seleziona JSON come tipo di chiave e fai clic su Crea.

    • Facendo clic su Crea viene scaricato un file della chiave del service account. Una volta scaricato, il file della chiave non potrà essere scaricato di nuovo.
    • La chiave scaricata ha il seguente formato, dove PRIVATE_KEY è la parte privata della coppia di chiavi pubbliche/private.

Configura Akamai WAF per inviare i log a Cloud Storage

  1. Accedi ad Akamai Control Center.
  2. Vai alla sezione Sicurezza.
  3. Seleziona Log.
  4. Configura una nuova distribuzione dei log:
    • Origine log:seleziona la configurazione WAF.
    • Destinazione:seleziona Google Cloud Storage.
    • Nome visualizzato: inserisci una descrizione del nome univoca.
    • Bucket:specifica il nome del bucket Cloud Storage che hai creato (ad esempio, gs://akamai-waf-logs).
    • ID progetto: inserisci l'ID univoco del tuo Google Cloud progetto.
    • Nome service account: inserisci il nome del account di servizio che hai creato in precedenza.
    • Chiave privata:inserisci il valore private_key della chiave JSON che hai generato e scaricato in precedenza. Devi inserire la chiave privata in formato PEM con simboli di interruzione (\n), ad esempio -----BEGIN PRIVATE KEY-----\nprivate_key\n-----END PRIVATE KEY-----\n.
    • Formato log:scegli il formato log che preferisci (ad esempio, JSON).
    • Frequenza push:seleziona la frequenza con cui vuoi ricevere i log (ad esempio, every 60 seconds).
  5. Fai clic su Convalida e salva per convalidare la connessione alla destinazione e salvare i dettagli che hai fornito.

  6. Fai clic su Avanti per passare alla scheda Riepilogo.

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

Configura i feed da Impostazioni SIEM > Feed utilizzando Google Cloud Storage

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Akamai WAF Logs).
  5. Seleziona Google Cloud Storage come Tipo di origine.
  6. Seleziona Akamai WAF come Tipo di log.
  7. Fai clic su Ottieni account di servizio come Account di servizio Chronicle.
  8. Fai clic su Avanti.
  9. Specifica i valori per i seguenti parametri di input:

    • URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione (ad esempio, gs://akamai-waf-logs).
    • URI Is A: seleziona Directory which includes subdirectories (Directory che include sottodirectory).
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
  10. Fai clic su Avanti.

  11. 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:

  • URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione (ad esempio, gs://akamai-waf-logs).
  • URI Is A: seleziona Directory which includes subdirectories (Directory che include sottodirectory).
  • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.

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: lo spazio dei nomi associato al feed.
  • Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.

Esportare e importare i log Akamai WAF da AWS S3

Questa sezione spiega i passaggi iniziali per configurare il bucket Amazon S3 per ricevere e archiviare i log WAF di Akamai.

Configura il bucket Amazon S3

  1. Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket.
  2. Salva il Nome e la Regione del bucket per riferimento futuro.
  3. Crea un utente seguendo questa guida utente: Creazione di 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 il tag della 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 riferimento futuro.
  12. Fai clic su Fine.
  13. Seleziona la scheda Autorizzazioni.
  14. Fai clic su Aggiungi autorizzazioni nella sezione Criteri per le autorizzazioni.
  15. Seleziona Aggiungi autorizzazioni.
  16. Seleziona Allega direttamente le norme.
  17. Cerca il criterio AmazonS3FullAccess.
  18. Seleziona la policy.
  19. Fai clic su Avanti.
  20. Fai clic su Aggiungi autorizzazioni.

Configura Akamai WAF per inviare i log ad Amazon S3

  1. Accedi ad Akamai Control Center.
  2. Vai alla sezione Sicurezza.
  3. Seleziona Log.
  4. Configura una nuova distribuzione dei log:

    • Origine log:seleziona la configurazione WAF.
    • Destinazione:scegli Amazon S3.
    • Bucket S3:specifica il nome del bucket S3 che hai creato.
    • Regione:seleziona la regione AWS in cui si trova il bucket S3.
    • ID chiave di accesso e chiave di accesso segreta:fornisci le credenziali che hai generato.
    • Formato log:scegli il formato log che preferisci (ad esempio, JSON).
    • Frequenza di consegna:seleziona la frequenza con cui vuoi ricevere i log (ad esempio, ogni 5 minuti).

  5. Verifica la pubblicazione dei log:

    • Dopo aver configurato LDS, monitora il bucket S3 per i file di log in entrata.

Configura i feed da Impostazioni SIEM > Feed utilizzando AWS S3

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Akamai WAF Logs).
  5. Seleziona Amazon S3 come Tipo di origine.
  6. Seleziona Akamai WAF come Tipo di log.
  7. Fai clic su Avanti.
  8. 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:/BUCKET_NAME Sostituisci quanto segue:
      • BUCKET_NAME: il nome del bucket.
    • URI è un: seleziona TIPO DI URI in base alla configurazione del flusso di log: Singolo file | Directory | 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.
  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log (crescente) Mappatura UDM Logic
attackData.clientIP principal.ip, principal.asset.ip Indirizzo IP del client che avvia la richiesta. Estratto dal campo attackData.clientIP nei log akamai_siem.
attackData.configId metadata.product_log_id ID configurazione di sicurezza. Estratto dal campo attackData.configId nei log akamai_siem. Aggiunto anche come detection_field nell'oggetto security_result.
attackData.policyId N/D Utilizzato nella logica del parser per compilare security_result.summary con il valore PolicyId:[value].
attackData.ruleActions security_result.action, security_result.action_details Azioni intraprese in base alla regola attivata. Estratto dal campo attackData.ruleActions nei log akamai_siem. "deny" è mappato a BLOCK, gli altri valori ("alert", "monitor", "allow", "tarpit") sono mappati a ALLOW. Il valore originale è memorizzato anche in action_details.
attackData.ruleData security_result.detection_fields Dati associati alla regola attivata. Estratto dal campo attackData.ruleData nei log akamai_siem. Aggiunto a security_result.detection_fields con la chiave "RuleData".
attackData.ruleMessages security_result.threat_name Messaggi associati alla regola attivata. Estratto dal campo attackData.ruleMessages nei log akamai_siem.
attackData.ruleSelectors security_result.detection_fields Selettori associati alla regola attivata. Estratto dal campo attackData.ruleSelectors nei log akamai_siem. Aggiunta a security_result.detection_fields con la chiave "RuleSelector".
attackData.ruleTags security_result.category_details Tag associati alla regola attivata. Estratto dal campo attackData.ruleTags nei log akamai_siem.
attackData.ruleVersions security_result.detection_fields Versioni delle regole attivate. Estratto dal campo attackData.ruleVersions nei log akamai_siem. Aggiunto a security_result.detection_fields con la chiave "Rule Version".
clientReputation principal.labels Informazioni sulla reputazione del cliente. Estratto dal campo clientReputation nei log akamai_siem. Aggiunta come etichetta all'entità con la chiave "reputation".
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip Indirizzo IP client. Estratto da cliIP o cli_ip o principal_ip a seconda del formato del log.
cp additional.fields Codice CP. Estratto dal campo cp. Aggiunto a additional.fields con la chiave "cp".
eventId metadata.product_log_id ID evento. Estratto dal campo eventId.
eventTime, log_date metadata.event_timestamp Timestamp dell'evento. Estratto da eventTime o analizzato da log_date a seconda del formato del log.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID definizione evento. Estratto da eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Descrizione dell'evento. Estratto da eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nome dell'evento. Estratto da eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields ID tipo di evento. Estratto da eventType.eventTypeId. Aggiunto a additional.fields con la chiave "eventTypeId".
eventType.eventTypeName additional.fields Nome del tipo di evento. Estratto da eventType.eventTypeName. Aggiunto a additional.fields con la chiave "eventTypeName".
format N/D Utilizzato dal parser per determinare il formato del log.
geo.asn principal.location.name Numero di sistema autonomo (ASN). Estratto da geo.asn o AkamaiSiemASN a seconda del formato del log. Il valore è preceduto da "ASN ".
geo.city principal.location.city Città. Estratto da geo.city o AkamaiSiemCity a seconda del formato del log.
geo.country principal.location.country_or_region Paese. Estratto da geo.country o AkamaiSiemContinent a seconda del formato del log.
httpMessage.bytes network.sent_bytes Byte inviati nel messaggio HTTP. Estratto da httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nome host. Estratto da httpMessage.host o reqHost a seconda del formato del log.
httpMessage.method network.http.method Metodo HTTP. Estratto da httpMessage.method o network_http_method o reqMethod a seconda del formato del log. Convertito in maiuscolo.
httpMessage.path target.url Percorso richiesta. Estratto da httpMessage.path o target_url o reqPath a seconda del formato del log. Se httpMessage.query è presente, viene aggiunto al percorso con un separatore "?".
httpMessage.port target.port Porta. Estratto da httpMessage.port o reqPort a seconda del formato del log.
httpMessage.protocol N/D Utilizzato dal parser per determinare il protocollo.
httpMessage.query N/D Utilizzato nella logica del parser per l'aggiunta a httpMessage.path, se presente.
httpMessage.requestId network.session_id ID richiesta. Estratto da httpMessage.requestId o reqId a seconda del formato del log.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Intestazioni delle richieste. Estratto da httpMessage.requestHeaders o AkamaiSiemRequestHeaders a seconda del formato del log. Aggiunto a additional.fields con la chiave "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Intestazioni della risposta. Estratto da httpMessage.responseHeaders o AkamaiSiemResponseHeaders a seconda del formato del log. Aggiunto a additional.fields con la chiave "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Codice di risposta HTTP. Estratto da httpMessage.status o AkamaiSiemResponseStatus o network_http_response_code o statusCode a seconda del formato del log.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Versione TLS. Estratto da httpMessage.tls o AkamaiSiemTLSVersion o tlsVersion a seconda del formato del log.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent User agent. Estratto da httpMessage.useragent o network_http_user_agent o UA o useragent a seconda del formato del log.
log_description metadata.description Descrizione del log. Estratto da log_description.
log_rule security_result.rule_name Regola Log. Estratto da log_rule.
message N/D Il messaggio di log non elaborato. Utilizzato dal parser per varie estrazioni.
network_http_referral_url network.http.referral_url URL di referral HTTP. Estratto da network_http_referral_url.
proto N/D Utilizzato nella logica del parser per compilare security_result.summary se attackData.policyId non è presente.
reqHost target.hostname, target.asset.hostname Richiedi host. Estratto da reqHost.
reqId metadata.product_log_id, network.session_id ID richiesta. Estratto da reqId.
reqMethod network.http.method Metodo di richiesta. Estratto da reqMethod.
reqPath target.url Percorso richiesta. Estratto da reqPath.
reqPort target.port Porta richiesta. Estratto da reqPort.
rspContentType target.file.mime_type Tipo di contenuti della risposta. Estratto da rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Regole di sicurezza. Estratto da securityRules. La prima parte è mappata a rule_name, mentre il resto viene aggiunto come etichette con le chiavi "non_deny_rules" e "deny_rule_format".
statusCode network.http.response_code Codice di stato. Estratto da statusCode.
state principal.location.state, target.user.personal_address.state Stato. Estratto da state.
tlsVersion network.tls.version Versione TLS. Estratto da tlsVersion.
type metadata.product_event_type Tipo di evento. Estratto da type.
UA network.http.user_agent User agent. Estratto da UA.
version metadata.product_version, principal.asset.software.version Versione. Estratto da version.
N/D metadata.event_timestamp Il timestamp dell'evento deriva dal campo _ts nei log akamai_lds, dal campo httpMessage.start nei log akamai_siem o dal campo log_date in altri formati.
N/D metadata.vendor_name Codificato in modo permanente su "Akamai".
N/D metadata.product_name Codificato su "Kona".
N/D metadata.log_type Codificato in modo permanente su "AKAMAI_WAF".
N/D network.application_protocol Imposta "HTTP" per i log akamai_siem e akamai_lds oppure "DNS" per altri formati.
N/D security_result.severity Imposta il valore su MEDIA per l'azione "avviso", su CRITICA per l'azione "nega" e su ALTA per le altre azioni.
N/D event.idm.read_only_udm.metadata.event_type Imposta "NETWORK_HTTP" per la maggior parte dei formati di log, "GENERIC_EVENT" per gli eventi con campi eventId o eventData oppure "STATUS_UPDATE" per gli eventi con campi cli_ip o p_ip, ma senza reqHost.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.