Raccogliere i log di Ansible AWX

Supportato in:

Panoramica

Questo parser estrae i dati dei log in formato JSON da Ansible AWX, convertendoli nel modello Unified Data Model (UDM). Gestisce vari formati di log, estrae i campi pertinenti come timestamp, indirizzi IP, informazioni sull'host e dettagli dell'evento e li mappa ai campi UDM corrispondenti, gestendo anche casi limite specifici e arricchendo i dati con etichette e metadati.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps.
  • Accesso privilegiato ad Ansible AWX.

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

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, Log di Ansible AWX).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona Ansible AWX come tipo di log.
  7. Fai clic su Avanti.
  8. (Facoltativo) Specifica i valori per i seguenti parametri di input:
    • Delimitatore di suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio \n.
  9. Fai clic su Avanti.
  10. Controlla la configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
  11. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  12. Copia e memorizza la chiave segreta. Non puoi visualizzare di nuovo questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
  13. Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.
  14. Fai clic su Fine.

Configurare i feed dall'hub dei contenuti

Specifica i valori per i seguenti campi:

  • Delimitatore di suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio \n.

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.

  • Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.

  • Copia e memorizza la chiave segreta. Non puoi visualizzare di nuovo questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.

  • Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.

Crea una chiave API per il feed webhook

  1. Vai alla consoleGoogle Cloud > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali e poi seleziona Chiave API.

  3. Limita l'accesso della chiave API all'API Google Security Operations.

Specifica l'URL dell'endpoint

  1. Nella tua applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. Attiva l'autenticazione specificando la chiave API e la chiave segreta come parte dell'intestazione personalizzata nel seguente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Consiglio: specifica la chiave API come intestazione anziché nell'URL. Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando parametri di ricerca nel seguente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Sostituisci quanto segue:

  • ENDPOINT_URL: l'URL dell'endpoint del feed.
  • API_KEY: la chiave API per l'autenticazione a Google Security Operations.
  • SECRET: la chiave segreta che hai generato per autenticare il feed.

Configura il webhook in Ansible AWX

  1. Accedi all'istanza AWX.
  2. Vai alla sezione Notifiche, che si trova nella sezione Amministrazione.
  3. Fai clic su Aggiungi.
  4. Configura le impostazioni del webhook:

    • Nome: fornisci un nome descrittivo per il webhook (ad esempio, Webhook Google SecOps).
    • Tipo: seleziona Webhook dall'elenco.
    • URL di destinazione: inserisci l'URL dell'endpoint API Google SecOps.
    • HTTP Method (Metodo HTTP): seleziona POST.

    (Facoltativo) Intestazioni HTTP: aggiungi le intestazioni necessarie per l'autenticazione o il tipo di contenuti. Ad esempio, potresti dover includere un'intestazione Authorization con un token di connessione. Per requisiti specifici delle intestazioni, consulta la documentazione di Google SecOps.

  5. Fai clic su Salva per creare il webhook.

  6. Vai a Progetti, che si trova nella sezione Risorse.

  7. Seleziona i progetti a cui vuoi associare il webhook.

  8. All'interno del progetto selezionato, vai alla scheda Notifiche.

  9. Seleziona i trigger da attivare per la notifica webhook creata in precedenza Avvio | Operazione riuscita | Operazione non riuscita.

Le notifiche verranno ora applicate a tutti i modelli associati al progetto. Puoi disattivarle manualmente accedendo al campo Notifiche in ogni modello.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
agent.ephemeral_id observer.labels.value Il valore di agent.ephemeral_id dal log non elaborato.
agent.hostname observer.hostname Il valore di agent.hostname dal log non elaborato.
agent.id observer.asset_id Concatenazione di "filebeat:" e del valore di agent.id dal log non elaborato.
agent.name observer.user.userid Il valore di agent.name dal log non elaborato.
agent.type observer.application Il valore di agent.type dal log non elaborato.
agent.version observer.platform_version Il valore di agent.version dal log non elaborato.
cloud.availability_zone principal.resource.attribute.labels.value Il valore di cloud.availability_zone dal log non elaborato.
cloud.instance.id principal.resource.product_object_id Il valore di cloud.instance.id dal log non elaborato.
cloud.instance.name principal.resource.name Il valore di cloud.instance.name dal log non elaborato.
cloud.machine.type principal.resource.attribute.labels.value Il valore di cloud.machine.type dal log non elaborato.
cloud.provider principal.resource.attribute.labels.value Il valore di cloud.provider dal log non elaborato.
event1 metadata.description Il valore di event1 dal log non elaborato. Se event1 non è presente, viene utilizzato il valore di message.
event1_data.host principal.hostname Il valore di event1_data.host dal log non elaborato. Utilizzato come riserva se host_name e host non sono presenti.
event1_data.remote_addr principal.ip L'indirizzo IP estratto da event1_data.remote_addr utilizzando un pattern grok.
event1_data.task security_result.detection_fields.value Il valore di event1_data.task dal log non elaborato.
event1_data.task_path principal.process.file.full_path Il valore di event1_data.task_path dal log non elaborato.
event1_data.task_uuid security_result.detection_fields.value Il valore di event1_data.task_uuid dal log non elaborato.
event1_data.uuid metadata.product_log_id Il valore di event1_data.uuid dal log non elaborato.
event1_display security_result.description Il valore di event1_display dal log non elaborato.
host principal.hostname Il valore di host dal log non elaborato. Utilizzato come riserva se host_name non è presente. Se è un numero, viene convertito in una stringa.
host.architecture target.asset.hardware.cpu_platform Il valore di host.architecture dal log non elaborato.
host.fqdn target.administrative_domain Il valore di host.fqdn dal log non elaborato.
host.hostname target.hostname Il valore di host.hostname dal log non elaborato.
host.id target.asset.asset_id "Host Id: " concatenato al valore di host.id dal log non elaborato.
host.ip target.asset.ip I valori dell'array host.ip del log non elaborato.
host.mac target.mac I valori dell'array host.mac del log non elaborato.
host.os.codename target.asset.attribute.labels.value Il valore di host.os.codename dal log non elaborato.
host.os.kernel target.platform_patch_level Il valore di host.os.kernel dal log non elaborato.
host.os.name target.asset.attribute.labels.value Il valore di host.os.name dal log non elaborato.
host.os.platform target.platform Se il valore di host.os.platform è "debian", il campo UDM è impostato su "LINUX".
host.os.version target.platform_version Il valore di host.os.version dal log non elaborato.
host_name principal.hostname Il valore di host_name dal log non elaborato.
input.type network.ip_protocol Se il valore di input.type è "tcp", il campo UDM è impostato su "TCP".
level security_result.severity In base al valore di level: "DEBUG", "INFO", "AUDIT" viene mappato su "INFORMATIONAL"; "ERROR" viene mappato su "ERROR"; "WARNING" viene mappato su "MEDIUM".
level security_result.severity_details Il valore di level dal log non elaborato.
log.source.address principal.ip L'indirizzo IP estratto da log.source.address utilizzando un pattern grok.
log.source.address principal.port La porta estratta da log.source.address utilizzando un pattern grok.
logger_name intermediary.application Il valore di logger_name dal log non elaborato.
message metadata.description Il valore di message dal log non elaborato. Utilizzato come riserva se event1 non è presente.
metadata.event_type metadata.event_type Determinato dalla logica del parser in base alla presenza di determinati campi. "NETWORK_CONNECTION" se sono presenti log.source.address e host.ip. "STATUS_UPDATE" se sono presenti principal_hostname o event1_data.remote_addr. "GENERIC_EVENT" altrimenti.
metadata.log_type metadata.log_type Codificato su "ANSIBLE_AWX".
metadata.product_name metadata.product_name Codificato su "ANSIBLE_AWX".
metadata.vendor_name metadata.vendor_name Codificato su "ANSIBLE_AWX".
parent_uuid security_result.detection_fields.value Il valore di parent_uuid dal log non elaborato.
principal.resource.resource_type principal.resource.resource_type Codificato in modo permanente su "VIRTUAL_MACHINE" se è presente cloud.instance.name.
observer.labels.key observer.labels.key Codificato come "ephemeral_id".
principal.resource.attribute.labels.key principal.resource.attribute.labels.key Codificato come "machine_type", "provider" o "availability_zone" a seconda del campo mappato.
security_result.detection_fields.key security_result.detection_fields.key Codificato in modo permanente su "parent_uuid", "task" o "task_uuid" a seconda del campo mappato.
target.asset.attribute.labels.key target.asset.attribute.labels.key Codificato in modo permanente su "codename" o "os_name" a seconda del campo mappato.
timestamp metadata.event_timestamp Il valore di timestamp dal log non elaborato, analizzato e convertito in un timestamp.
timestamp timestamp Il valore di timestamp dal log non elaborato, analizzato e convertito in un timestamp.

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