Raccogliere i log di Microsoft Sentinel
Panoramica
Questo parser estrae i campi dai log JSON di Microsoft Sentinel, esegue trasformazioni come l'estrazione dell'indirizzo IP e la manipolazione di stringhe e mappa i dati estratti all'UDM, inclusi i campi principal, target, security_result e metadati. Gestisce inoltre vari tipi di dati e unisce le entità estratte nella struttura UDM.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Accesso a Microsoft Sentinel.
Configura un feed in Google SecOps per importare i log di Microsoft Sentinel
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log di Microsoft Sentinel).
- Seleziona Webhook come Tipo di origine.
- Seleziona Microsoft Sentinel come Tipo di log.
- Fai clic su Avanti.
- (Facoltativo) Specifica i valori per i seguenti parametri di input:
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
\n
. - Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
- Fai clic su Avanti.
- Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.
- Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
- Copia e memorizza la chiave segreta perché non potrai più visualizzarla. Puoi generare di nuovo una nuova chiave segreta, ma la rigenerazione della chiave segreta rende obsoleta la chiave segreta precedente.
- Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL dell'endpoint nella tua applicazione client.
- Fai clic su Fine.
Crea una chiave API per il feed webhook
Vai alla console Google Cloud > Credenziali.
Fai clic su Crea credenziali e poi seleziona Chiave API.
Limita l'accesso della chiave API all'API Google Security Operations.
Specifica l'URL dell'endpoint
- Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
Attiva l'autenticazione specificando la chiave API e la chiave segreta nell'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 in Google Security Operations.SECRET
: la chiave segreta che hai generato per autenticare il feed.
Configurare l'app logica per gli incidenti di Microsoft Sentinel
Per configurare l'app logica per gli incidenti di Microsoft Sentinel:
- Accedi al portale di Azure.
- Fai clic su Crea una risorsa.
- Cerca App logica.
- Fai clic su Crea per avviare la procedura di creazione.
- Specifica i valori per i seguenti parametri di input:
- Abbonamento: seleziona l'abbonamento.
- Gruppo di risorse: seleziona il gruppo di risorse.
- Nome: inserisci un nome per l'app logica.
- Regione: seleziona la regione.
- Spazio di lavoro Log Analytics: seleziona lo spazio di lavoro Log Analytics.
- Fai clic su Review + create (Rivedi e crea).
- Fai clic su Crea.
- Dopo aver creato l'app logica, fai clic su Vai alla risorsa.
- Fai clic su Strumenti di sviluppo > Designer di app logiche.
- Fai clic su Aggiungi un attivatore.
- Cerca Microsoft Sentinel.
- Seleziona Evento Microsoft Sentinel come trigger.
- Se non hai ancora creato una connessione a Microsoft Sentinel, devi farlo ora. Fai clic su Crea nuovo e segui le istruzioni per l'autenticazione.
- Fai clic su Inserisci un nuovo passaggio.
- Fai clic su Aggiungi un'azione.
- Cerca e seleziona HTTP come azione.
- Specifica i valori per i seguenti parametri di input:
- URI: l'URL dell'endpoint del feed.
- Metodo: POST
- Intestazioni: aggiungi le seguenti intestazioni:
- Content-Type: application/json
- X-goog-api-key: la chiave API per l'autenticazione in Google Security Operations.
- X-Webhook-Access-Key: la chiave segreta che hai generato per autenticare il feed.
Configurare l'app logica per gli avvisi di Microsoft Sentinel
Per configurare l'app logica per gli avvisi di Microsoft Sentinel:
- Vai alla home page del portale di Azure.
- Fai clic su Crea una risorsa.
- Cerca App logica.
- Fai clic su Crea per avviare la procedura di creazione.
- Specifica i valori per i seguenti parametri di input:
- Abbonamento: seleziona l'abbonamento.
- Gruppo di risorse: seleziona il gruppo di risorse.
- Nome: inserisci un nome per l'app logica.
- Regione: seleziona la regione.
- Spazio di lavoro Log Analytics: seleziona lo spazio di lavoro Log Analytics.
- Fai clic su Review + create (Rivedi e crea).
- Fai clic su Crea.
- Dopo aver creato l'app logica, fai clic su Vai alla risorsa.
- Fai clic su Strumenti di sviluppo > Designer di app logiche.
- Fai clic su Aggiungi un attivatore.
- Cerca Microsoft Sentinel.
- Seleziona Avviso Microsoft Sentinel come attivatore.
- Se non hai ancora creato una connessione a Microsoft Sentinel, devi farlo ora. Fai clic su Crea nuovo e segui le istruzioni per l'autenticazione.
- Fai clic su Inserisci un nuovo passaggio.
- Fai clic su Aggiungi un'azione.
- Cerca e seleziona HTTP come azione.
- Specifica i valori per i seguenti parametri di input:
- URI: l'URL dell'endpoint del feed.
- Metodo: POST
- Intestazioni: aggiungi le seguenti intestazioni:
- Content-Type: application/json
- X-goog-api-key: la chiave API per l'autenticazione in Google Security Operations.
- X-Webhook-Access-Key: la chiave segreta che hai generato per autenticare il feed.
Configurare le regole di automazione per Microsoft Sentinel
Per configurare le regole di automazione per Microsoft Sentinel:
- Vai al tuo workspace di Microsoft Sentinel.
- Fai clic su Configurazione > Automazione.
- Fai clic su Crea.
- Seleziona Regola di automazione.
- Specifica i valori per i seguenti parametri di input:
- Nome: inserisci un nome per la regola di automazione.
- Trigger: seleziona Quando viene creato l'incidente.
- Azioni: seleziona Esegui playbook > App logica creata per gli incidenti.
- Fai clic su Applica.
- Fai clic su Crea.
- Seleziona Regola di automazione.
- Specifica i valori per i seguenti parametri di input:
- Nome: inserisci un nome per la regola di automazione.
- Attacca: seleziona Quando l'incidente viene aggiornato.
- Condizione: fai clic su Aggiungi > Condizione (E) > Stato > Modificato.
- Azioni: seleziona Esegui playbook > App logica creata per gli incidenti.
- Fai clic su Applica.
- Fai clic su Crea.
- Seleziona Regola di automazione.
- Specifica i valori per i seguenti parametri di input:
- Nome: inserisci un nome per la regola di automazione.
- Attivatore: seleziona Quando viene creato l'avviso.
- Azioni: seleziona Esegui playbook > App logica creata per gli avvisi.
- Fai clic su Applica.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
AlertGenerationStatus |
security_result.detection_fields.AlertGenerationStatus |
Mappato direttamente dal campo ExtendedProperties dopo l'analisi JSON. |
AlertLink |
principal.labels.AlertLink |
Mappatura diretta. |
AlertName |
security_result.rule_name |
Mappatura diretta. |
AlertSeverity |
security_result.severity |
Mappato direttamente, convertito in maiuscolo. Se il valore è uno dei valori HIGH, MEDIUM, LOW, CRITICAL o UNKNOWN_SEVERITY, viene mappato a security_result.severity . In caso contrario, viene mappato a security_result.severity_details . |
AlertType |
security_result.threat_name |
Mappatura diretta. |
Category |
security_result.detection_fields.Category |
Mappato direttamente dal campo ExtendedProperties dopo l'analisi JSON. |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity |
Mappatura diretta. |
CompromisedEntityId |
security_result.detection_fields.CompromisedEntityId |
Mappato direttamente dal campo ExtendedProperties dopo l'analisi JSON. |
ConfidenceLevel |
security_result.confidence_details |
Mappatura diretta. |
ConfidenceScore |
security_result.detection_fields.ConfidenceScore |
Mappatura diretta. |
cribl_pipe |
additional.fields.cribl_pipe |
Mappatura diretta. |
Description |
security_result.description |
Mappatura diretta. |
DestinationDevice |
security_result.detection_fields.DestinationDevice OPPURE target.ip |
Mappato dal campo ExtendedProperties dopo l'analisi JSON. Se il valore è un indirizzo IP valido, viene mappato a target.ip . In caso contrario, viene mappato come campo di rilevamento. |
DestinationDeviceAddress |
target.ip |
Mappato dal campo ExtendedProperties dopo l'analisi JSON, solo se si tratta di un indirizzo IP valido. |
DeviceId |
security_result.detection_fields.DeviceId |
Mappato direttamente dal campo ExtendedProperties dopo l'analisi JSON. |
DisplayName |
security_result.summary |
Mappatura diretta. |
EndTime |
about.labels.EndTime |
Mappatura diretta. |
Entities.Address |
principal.asset.ip |
Estratto dall'array Entities dopo l'analisi JSON. Vengono mappati solo gli indirizzi IP. |
Entities.HostName |
principal.asset.hostname OPPURE principal.asset.ip |
Estratto dall'array Entities dopo l'analisi JSON. Se il valore è un indirizzo IP valido, viene mappato a principal.asset.ip . In caso contrario, viene mappato a principal.asset.hostname . |
Entities.IoTDevice.DeviceId |
security_result.detection_fields.IoTDeviceID |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.DeviceType |
security_result.detection_fields.IoTDeviceType |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.DeviceTypeId |
security_result.detection_fields.IoTDeviceTypeId |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.Importance |
security_result.detection_fields.IoTDeviceImportance |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.IoTSecurityAgentId |
security_result.detection_fields.IoTSecurityAgentId |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.Manufacturer |
security_result.detection_fields.IoT Manufacturer |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.OperatingSystem |
principal.asset.platform_software.platform_version |
Estratto dall'array Entities dopo l'analisi JSON, spazi finali rimossi. |
Entities.IoTDevice.PurdueLayer |
security_result.detection_fields.IoT PurdueLayer |
Estratto dall'array Entities dopo l'analisi JSON. |
Entities.IoTDevice.Sensor |
security_result.detection_fields.IoT Sensor |
Estratto dall'array Entities dopo l'analisi JSON. |
ExtendedProperties.Protocol |
security_result.detection_fields.Protocol |
Mappato direttamente dal campo ExtendedProperties dopo l'analisi JSON. |
ExtendedProperties.SensorId |
security_result.detection_fields.SensorId |
Mappato direttamente dal campo ExtendedProperties dopo l'analisi JSON. |
ExtendedProperties.SourceDevice |
principal.ip OPPURE security_result.detection_fields.SourceDevice |
Mappato dal campo ExtendedProperties dopo l'analisi JSON. Se il valore è un indirizzo IP valido, viene mappato a principal.ip . In caso contrario, viene mappato come campo di rilevamento. |
ExtendedProperties.SourceDeviceAddress |
principal.ip |
Mappato dal campo ExtendedProperties dopo l'analisi JSON, solo se si tratta di un indirizzo IP valido. |
IsIncident |
security_result.detection_fields.IsIncident |
Mappato direttamente, convertito in stringa. |
ProcessingEndTime |
about.labels.ProcessingEndTime |
Mappatura diretta. |
ProductComponentName |
principal.resource.attribute.labels.ProductComponentName |
Mappatura diretta. |
ProductName |
principal.resource.attribute.labels.ProductName |
Mappatura diretta. |
ProviderName |
principal.resource.attribute.labels.ProviderName |
Mappatura diretta. |
ResourceId |
principal.resource.product_object_id , target.resource.name |
Mappatura diretta. |
SourceComputerId |
principal.asset.asset_id |
Mappato direttamente, con prefisso "SourceComputerId:". |
SourceSystem |
security_result.detection_fields.SourceSystem |
Mappatura diretta. |
StartTime |
about.labels.StartTime |
Mappatura diretta. |
Status |
security_result.detection_fields.Status |
Mappatura diretta. |
SystemAlertId |
metadata.product_log_id |
Mappatura diretta. |
Tactics |
security_result.attack_details.tactics.name |
Estratto dal campo Tactics dopo l'analisi JSON e la rimozione della barra. |
Techniques |
security_result.attack_details.techniques.id |
Estratto dal campo Techniques dopo l'analisi JSON e la rimozione della barra. |
TenantId |
additional.fields.TenantId |
Mappatura diretta. |
TimeGenerated |
about.labels.TimeGenerated |
Mappatura diretta. |
timestamp |
metadata.event_timestamp , events.timestamp |
Mappatura diretta. |
VendorName |
metadata.vendor_name |
Mappatura diretta. |
VendorOriginalId |
additional.fields.VendorOriginalId |
Mappatura diretta. |
_time |
metadata.event_timestamp , events.timestamp |
Analizzata come timestamp utilizzando il formato UNIX o UNIX_MS. |
(Parser Logic) | metadata.event_type |
Imposta su "USER_RESOURCE_ACCESS" se sono presenti principal, target e ResourceId. In caso contrario, impostalo su "GENERIC_EVENT". |
(Parser Logic) | metadata.log_type |
Impostato su "MICROSOFT_SENTINEL". |
(Parser Logic) | metadata.product_name |
Impostato su "MICROSOFT_SENTINEL". |
Modifiche
2023-11-03
- "ResourceId" è stato mappato a "target.resource.name".
- Quando "ResourceId" è "non nullo" e l'evento ha uno di "principale" o "target" come "non nullo", mappa "metadata.event_type" a "USER_RESOURCE_ACCESS".
2023-08-31
- Parser appena creato.