Raccogliere i log degli avvisi di Microsoft Defender for Cloud
Panoramica
Questo parser estrae i dati degli avvisi di sicurezza dai log in formato JSON di Microsoft Defender for Cloud. Trasforma e mappa i campi dei log non elaborati nell'UDM di Google SecOps, gestisce vari tipi di dati e strutture nidificate, arricchendo al contempo i dati con contesto ed etichette aggiuntivi per un'analisi migliorata.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi a Microsoft Defender per il cloud.
Configura un feed in Google SecOps per importare i log degli avvisi di Microsoft Defender Cloud
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log degli avvisi di Microsoft Defender for Cloud).
- Seleziona Webhook come Tipo di origine.
- Seleziona Microsoft Defender for Cloud 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 applicata agli eventi di questo feed.
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
- Fai clic su Avanti.
- Controlla la configurazione del 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. Non potrai più visualizzare 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 endpoint nell'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.
Crea un'app logica Azure
- Accedi al portale di Azure (https://portal.azure.com).
- Fai clic su Crea una risorsa e cerca App logica.
- Fai clic su Crea per avviare il processo di deployment.
- Configura l'app logica:
- Nome: fornisci un nome descrittivo per l'app logica (ad esempio GoogleSecOpsWebhook).
- Abbonamento: seleziona l'abbonamento appropriato.
- Gruppo di risorse: scegli un gruppo di risorse esistente o creane uno nuovo.
- Posizione: scegli la località più vicina al tuo ambiente.
- Log Analytics: attiva questa opzione se vuoi registrare i dati diagnostici per l'app logica.
- Fai clic su Rivedi e crea per creare l'app logica.
- Fai clic su Crea per eseguire il deployment dell'app logica.
Configura la connessione webhook di App per la logica di Azure
- Vai all'app logica creata nel passaggio precedente.
- Fai clic su Strumenti di sviluppo > Designer di app logiche.
- Fai clic su Aggiungi un attivatore.
Cerca Microsoft Defender for Cloud > Quando viene creato o attivato un avviso di Microsoft Defender for Cloud come trigger.
Fai clic su Crea nuovo e segui le istruzioni per l'autenticazione.
Fai clic su Inserisci un nuovo passaggio per aggiungere un nuovo passaggio al flusso di lavoro.
Fai clic su Aggiungi un'azione.
Cerca HTT.
Seleziona HTTP come azione.
Configura l'azione HTTP:
- URI: inserisci l'URL dell'endpoint API Google SecOps.
- Metodo:
POST
- Aggiungi l'intestazione Content-Type: imposta
Content-Type
come chiave dell'intestazione eapplication/json
come valore dell'intestazione. In questo modo, Google SecOps viene a conoscenza del formato dei dati inviati. - Aggiungi la chiave API alle query: imposta
key
come prima chiave di query e<API_KEY>
come valore della query.API_KEY
è il valore della chiave API generato durante la configurazione del feed Google SecOps. - Aggiungi la chiave segreta alle query: imposta
secret
come seconda chiave di query e<SECRET_KEY>
come valore della query.SECRET_KEY
è la chiave segreta generata durante la configurazione del feed di Google SecOps. - Imposta il corpo dal passaggio precedente: fai clic su Inserisci i contenuti della richiesta > fai clic su Inserisci i dati dei passaggi precedenti (pulsante con icona a forma di fulmine a sinistra del campo di immissione).
Fai clic su Salva.
Configurare l'webhook di Microsoft Defender Cloud Alerts
- Vai a Microsoft Defender for Cloud.
- Fai clic su Gestione > Automazione del flusso di lavoro.
- Fai clic su Aggiungi automazione del flusso di lavoro.
- Nome: fornisci un nome descrittivo per la regola di automazione (ad esempio InoltraAvvisiAGoogleSecOps).
- Gruppo di risorse: scegli un gruppo di risorse esistente.
- Tipo di dati Defender for Cloud: scegli Avviso di sicurezza.
- Gravità dell'avviso: scegli Seleziona tutto.
- Mostra le istanze di app logiche dai seguenti abbonamenti: scegli l'abbonamento in cui è stata creata l'app logica.
- Seleziona app logica: scegli l'app logica creata nei passaggi precedenti.
- Fai clic su Crea per salvare l'automazione del flusso di lavoro.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
AlertLink |
principal.resource.attribute.labels.AlertLink.value |
Mappatura diretta. |
AlertName |
security_result.rule_name |
Mappatura diretta. |
AlertSeverity |
security_result.severity |
Mappata direttamente se il valore è uno dei valori HIGH, MEDIUM, LOW, CRITICAL, UNKNOWN_SEVERITY. In caso contrario, viene mappato a security_result.severity_details . Il valore viene convertito in lettere maiuscole prima del confronto. |
AlertType |
security_result.threat_name |
Mappatura diretta. |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity.value |
Mappatura diretta. |
Description |
security_result.description |
Mappatura diretta. |
DisplayName |
security_result.summary |
Mappatura diretta. |
EndTime |
about.resource.attribute.labels.EndTime.value |
Mappatura diretta. |
Entities[].Location.City |
principal.location.city |
Mappatura diretta. |
Entities[].Location.CountryName |
principal.location.country_or_region |
Mappatura diretta. |
ExtendedLinks[].Category |
about.resource.attribute.labels.extendedLink_Category.value |
Mappatura diretta. |
ExtendedLinks[].Href |
about.resource.attribute.labels.extendedLink_Href.value |
Mappatura diretta. |
ExtendedLinks[].Label |
about.resource.attribute.labels.extendedLink_Label.value |
Mappatura diretta. |
ExtendedLinks[].Type |
about.resource.attribute.labels.extendedLink_Type.value |
Mappatura diretta. |
ExtendedProperties.Account Session Id |
network.session_id |
Mappato direttamente dopo la ridenominazione in accountSessionId . |
ExtendedProperties.Alert Id |
metadata.product_log_id |
Mappato direttamente dopo la ridenominazione in alertId . |
ExtendedProperties.Authentication type |
extensions.auth.auth_details |
Mappatura diretta dopo la ridenominazione in authenticationType . |
ExtendedProperties.Client Application |
principal.application |
Mappato direttamente dopo la ridenominazione in clientApplication . |
ExtendedProperties.Client Hostname |
principal.asset.hostname , principal.hostname |
Mappatura diretta dopo la ridenominazione in clientHostName . |
ExtendedProperties.Client IP address |
principal.asset.ip , principal.ip |
Mappato direttamente dopo la ridenominazione in clientIpAddress . |
ExtendedProperties.Client IP location |
principal.location.country_or_region |
Mappatura diretta dopo la ridenominazione in clientIpLocation . |
ExtendedProperties.Client Location |
principal.location.country_or_region |
Mappato direttamente dopo la ridenominazione in clientLocation . |
ExtendedProperties.Client Principal Name |
principal.user.userid |
Mappatura diretta dopo la ridenominazione in clientPrincipalName . |
ExtendedProperties.Compromised Host |
principal.asset.hostname , principal.hostname |
Mappatura diretta dopo la ridenominazione in compromisedHost . |
ExtendedProperties.Suspicious Command Line |
target.process.command_line |
Mappatura diretta dopo la ridenominazione in suspiciousCommandLine . |
ExtendedProperties.Suspicious Process |
target.process.file.full_path |
Mappatura diretta dopo la ridenominazione in suspiciousProcess . |
ExtendedProperties.Suspicious Process Id |
target.process.pid |
Mappatura diretta dopo la ridenominazione in suspiciousProcessId . |
ExtendedProperties.User agent |
network.http.user_agent |
Mappatura diretta dopo la ridenominazione in userAgent . |
ExtendedProperties.User Name |
principal.user.user_display_name |
Mappatura diretta dopo la ridenominazione in userName . |
ExtendedProperties.resourceType |
principal.resource.name |
Mappatura diretta. |
IsIncident |
security_result.detection_fields.IsIncident.value |
Mappatura diretta. Convertito in stringa. |
ProcessingEndTime |
about.resource.attribute.labels.ProcessingEndTime.value |
Mappatura diretta. |
ProductName |
metadata.product_name |
Mappatura diretta. |
ResourceId |
principal.resource.product_object_id |
Mappatura diretta. |
SourceSystem |
security_result.detection_fields.SourceSystem.value |
Mappatura diretta. |
StartTime |
about.resource.attribute.labels.StartTime.value |
Mappatura diretta. |
Status |
security_result.detection_fields.Status.value |
Mappatura diretta. |
SystemAlertId |
metadata.product_log_id |
Mappatura diretta. |
Tactics |
security_result.attack_details.tactics.name |
Mappatura diretta. |
TenantId |
additional.fields.TenantId.string_value |
Mappatura diretta. |
TimeGenerated |
about.resource.attribute.labels.TimeGenerated.value |
Mappatura diretta. |
VendorName |
metadata.vendor_name |
Mappatura diretta. |
WorkspaceResourceGroup |
target.resource.attribute.labels.WorkspaceResourceGroup.value |
Mappatura diretta. |
WorkspaceSubscriptionId |
target.resource.attribute.labels.WorkspaceSubscriptionId.value |
Mappatura diretta. |
_Internal_WorkspaceResourceId |
target.resource.product_object_id |
Mappatura diretta. |
properties.alertDisplayName |
security_result.rule_name |
Mappatura diretta. |
properties.alertType |
security_result.threat_name |
Mappatura diretta. |
properties.alertUri |
principal.resource.attribute.labels.AlertUri.value |
Mappatura diretta. |
properties.correlationKey |
principal.resource.attribute.labels.correlationKey.value |
Mappatura diretta. |
properties.description |
security_result.description |
Mappatura diretta. |
properties.endTimeUtc |
additional.fields.EndTime.string_value |
Mappatura diretta. |
properties.entities[].location.city |
principal.location.city |
Mappatura diretta. |
properties.entities[].location.countryName |
principal.location.country_or_region |
Mappatura diretta. |
properties.entities[].location.latitude |
principal.location.region_coordinates.latitude |
Mappatura diretta. Convertito in numero decimale. |
properties.entities[].location.longitude |
principal.location.region_coordinates.longitude |
Mappatura diretta. Convertito in numero decimale. |
properties.extendedProperties.alert_Id |
metadata.product_log_id |
Mappatura diretta. |
properties.extendedProperties.clientApplication |
principal.application |
Mappatura diretta. |
properties.extendedProperties.clientIpAddress |
principal.asset.ip , principal.ip |
Mappatura diretta. Analizzata come indirizzo IP. |
properties.extendedProperties.clientLocation |
principal.location.country_or_region |
Mappatura diretta. |
properties.extendedProperties.clientPrincipalName |
principal.user.userid |
Mappatura diretta. |
properties.extendedProperties.compromisedEntity |
principal.resource.attribute.labels.CompromisedEntity.value |
Mappatura diretta. |
properties.extendedProperties.resourceType |
principal.resource.name |
Mappatura diretta. |
properties.IsIncident |
security_result.detection_fields.isIncident.value |
Mappatura diretta. Convertito in stringa. |
properties.productName |
metadata.product_name |
Mappatura diretta. |
properties.resourceIdentifiers[].<key> |
additional.fields.<key>_<index>.string_value |
Mappatura diretta. Le chiavi $id e type vengono aggiunte con l'indice dell'elemento nell'array. |
properties.severity |
security_result.severity |
Mappata direttamente se il valore è uno dei valori HIGH, MEDIUM, LOW, CRITICAL, UNKNOWN_SEVERITY. In caso contrario, viene mappato a security_result.severity_details . Il valore viene convertito in lettere maiuscole prima del confronto. |
properties.startTimeUtc |
additional.fields.StartTime.string_value |
Mappatura diretta. |
properties.status |
security_result.detection_fields.Status.value |
Mappatura diretta. |
properties.timeGeneratedUtc |
additional.fields.TimeGenerated.string_value |
Mappatura diretta. Impostato su "MICROSOFT_DEFENDER_CLOUD_ALERTS" se non specificato nel log. Impostato su "MICROSOFT_DEFENDER_CLOUD_ALERTS". Imposta su "USER_RESOURCE_ACCESS" se sono presenti entità o target, altrimenti imposta su "GENERIC_EVENT". |
Modifiche
2024-07-05
- "isInteractive" è stato mappato a "security_result.detection_fields".
2024-04-02
- "properties.createdDateTime" è stato mappato a "metadata.event_timestamp".
- "properties.resourceServicePrincipalId" e "resourceServicePrincipalId" sono stati mappati a "target.resource.attribute.labels".
- "properties.authenticationProcessingDetails", "authenticationProcessingDetails" e "properties.networkLocationDetails" sono stati mappati a "additional.fields".
- "properties.userAgent" è stato mappato a "network.http.user_agent" e "network.http.parsed_user_agent".
- "properties.authenticationRequirement" è stato mappato a "additional.fields".