Raccogliere i log di Microsoft Defender per Office 365
Questo documento descrive come raccogliere i log di Microsoft Defender for Office 365 configurando un feed Google Security Operations utilizzando Microsoft Azure Blob Storage V2.
Microsoft Defender for Office 365 è una soluzione di sicurezza della posta elettronica che protegge le organizzazioni da minacce avanzate come phishing, compromissione della posta elettronica aziendale e attacchi malware. I dati sugli eventi email di Defender for Office 365 sono disponibili tramite l'API Microsoft Defender XDR Streaming, che trasmette gli eventi di ricerca avanzata a un account Azure Storage. Google SecOps legge gli eventi in streaming direttamente dall'account di archiviazione, quindi non è necessario alcun raccoglitore intermedio.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso con privilegi al portale Microsoft Azure con autorizzazioni per:
- Crea account di archiviazione nello stesso tenant di Microsoft Defender XDR
- Registra i provider di risorse nella sottoscrizione
- Gestisci le chiavi di accesso
- Il ruolo Collaboratore sull'account di archiviazione (richiesto dalla configurazione dell'API Streaming)
- Accesso al portale Microsoft Defender con almeno il ruolo Amministratore della sicurezza
Microsoft Defender for Office 365 distribuito nel tuo tenant: le tabelle Email* e UrlClickEvents di Ricerca avanzata vengono compilate con i record di Defender for Office 365 e rimangono vuote senza
Configura un account di archiviazione Azure
Registra il provider di risorse Microsoft.Insights
L'API Streaming richiede il provider di risorse Microsoft.Insights nell'abbonamento che contiene l'account di archiviazione:
- Accedi al portale Azure.
- Vai ad Abbonamenti > Il tuo abbonamento > Fornitori di risorse.
- Cerca Microsoft.Insights.
- Fai clic su Register (Registrati).
Crea un account di archiviazione
- Nel portale Azure, cerca Account di archiviazione.
- Fai clic su + Crea.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Abbonamento Seleziona il tuo abbonamento Azure (lo stesso tenant di Microsoft Defender XDR) Gruppo di risorse Seleziona esistente o crea nuovo Nome dell'account di archiviazione Inserisci un nome univoco (ad esempio, defenderemaillogs).Regione Seleziona la regione (ad esempio, East US)Prestazioni Standard (consigliato) Ridondanza GRS (archiviazione con ridondanza geografica) o LRS (archiviazione con ridondanza locale) Fai clic su Review + create (Rivedi e crea).
Rivedi la panoramica dell'account e fai clic su Crea.
Attendi il completamento del deployment.
Consenti servizi Microsoft attendibili
- Vai all'account di archiviazione che hai appena creato.
- Seleziona Networking in Sicurezza + networking.
- Nella scheda Firewall e reti virtuali, nella sezione Eccezioni, assicurati che sia selezionata l'opzione Consenti ai servizi Azure nell'elenco dei servizi attendibili di accedere a questo account di archiviazione.
- Fai clic su Salva.
Recupera le credenziali dell'account Storage
- Nello stesso account di archiviazione, seleziona Chiavi di accesso in Sicurezza e networking.
- Fai clic su Mostra chiavi.
- Copia e salva quanto segue per utilizzarlo in un secondo momento:
- Nome account Storage: il nome inserito durante la creazione (ad esempio,
defenderemaillogs) - Tasto 1 o Tasto 2: la chiave di accesso condivisa
- Nome account Storage: il nome inserito durante la creazione (ad esempio,
Recupera l'ID risorsa dell'account Storage
- Nello stesso account di archiviazione, nella pagina Panoramica, fai clic su Visualizzazione JSON.
Copia e salva l'ID risorsa. Ha il seguente formato:
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
Configura l'API di streaming Microsoft Defender XDR
- Accedi al portale Microsoft Defender utilizzando un account con almeno le autorizzazioni di amministratore della sicurezza.
- Vai a Impostazioni > Microsoft Defender XDR > API di streaming.
- Fai clic su Aggiungi.
- Nel riquadro a comparsa Aggiungi nuove impostazioni dell'API Streaming, fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome per le impostazioni (ad esempio,
secops-email-events). - Seleziona Inoltra eventi ad Azure Storage.
- ID risorsa account di archiviazione: incolla l'ID risorsa salvato in precedenza.
- Nome: inserisci un nome per le impostazioni (ad esempio,
- Seleziona i seguenti tipi di evento:
- EmailEvents
- EmailAttachmentInfo
- EmailUrlInfo
- EmailPostDeliveryEvents
- UrlClickEvents
- Fai clic su Invia.
Dopo l'inizio dello streaming, viene creato un contenitore blob nell'account di archiviazione per ogni tipo di evento selezionato (documentato da Microsoft). I nomi dei contenitori seguono il pattern insights-logs-advancedhunting-<event type> (ad esempio, insights-logs-advancedhunting-emailevents). La documentazione di Microsoft mostra il pattern per altre tabelle, quindi prendi sempre i nomi esatti dal tuo account di archiviazione. Ogni riga del blob contiene l'evento in formato JSON con time, tenantId, category (il nome della tabella con il prefisso AdvancedHunting-) e i campi dell'evento all'interno di un oggetto properties.
Configura i feed in Google SecOps per importare i log di Microsoft Defender for Office 365
Crea un feed per ogni contenitore di tipo di evento:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Defender for Office 365 - EmailEvents). - Seleziona Microsoft Azure Blob Storage V2 come Tipo di origine.
- Seleziona Microsoft Defender for Office 365 come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- URI Azure: inserisci l'URL dell'endpoint del servizio BLOB con il percorso del container:
https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/insights-logs-advancedhunting-emailevents/Sostituisci quanto segue:
<STORAGE_ACCOUNT_NAME>: il nome del tuo account di archiviazione Azure.Il segmento del contenitore: il nome esatto del contenitore copiato dall'account di archiviazione.
Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
- Non eliminare mai i file: non eliminare mai i file dall'origine.
- Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dall'origine dopo il completamento di un recupero riuscito.
Età massima del file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni)
Nel menu a discesa dell'autenticazione (impostato per impostazione predefinita su Chiave di accesso/condivisa), seleziona il metodo che vuoi utilizzare e fornisci le credenziali corrispondenti:
- Chiave di accesso/condivisa: nel campo Chiave, incolla una chiave di accesso all'account di archiviazione (Chiave 1 o Chiave 2) acquisita in precedenza.
- Token SAS: nel campo Token, incolla un token di firma di accesso condiviso (SAS) emesso per il contenitore.
- Federazione delle identità per i workload Azure V2: inserisci l'ID client e l'ID tenant dell'applicazione Microsoft Entra. Copia l'ID soggetto di sola lettura visualizzato dal feed e concedi l'accesso all'identità corrispondente all'account di archiviazione sul lato Azure.
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Ripeti i passaggi per ogni contenitore rimanente (
insights-logs-advancedhunting-emailattachmentinfo,insights-logs-advancedhunting-emailurlinfo,insights-logs-advancedhunting-emailpostdeliveryevents,insights-logs-advancedhunting-urlclickevents), utilizzando lo stesso Tipo di log e un Nome feed distinto.
Configura il firewall di Azure Storage (se abilitato)
Se il tuo account di archiviazione Azure utilizza un firewall, devi aggiungere gli intervalli IP di Google SecOps.
- Nel portale Azure, vai al tuo account di archiviazione.
- Seleziona Networking in Sicurezza + networking.
- In Firewall e reti virtuali, seleziona Attivato da reti virtuali e indirizzi IP selezionati.
- Nella sezione Firewall, in Intervallo di indirizzi, fai clic su + Aggiungi intervallo IP.
- Aggiungi ogni intervallo IP di Google SecOps in notazione CIDR.
Per ottenere gli intervalli IP attuali:
- Consulta la documentazione relativa alla lista consentita IP
- In alternativa, recuperali in modo programmatico utilizzando l'API di gestione dei feed.
Fai clic su Salva.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
CompAuth_label |
additional.fields |
Unita |
DKIM_label |
additional.fields |
Unita |
DMARC_label |
additional.fields |
Unita |
SPF_label |
additional.fields |
Unita |
additional_email_cluster_id |
additional.fields |
Unita |
additional_fields_label |
additional.fields |
Unita |
additional_replyto |
additional.fields |
Unita |
attachment_cnt_label |
additional.fields |
Unita |
attachment_count_label |
additional.fields |
Unita |
bulk_complaint_level_label |
additional.fields |
Unita |
clicked_label |
additional.fields |
Unita |
confidence_level_label |
additional.fields |
Unita |
connectors_label |
additional.fields |
Unita |
delivery_action_label |
additional.fields |
Unita |
delivery_location_label |
additional.fields |
Unita |
detection_methods_label |
additional.fields |
Unita |
email_action_label |
additional.fields |
Unita |
email_action_policy_guid_label |
additional.fields |
Unita |
email_action_policy_label |
additional.fields |
Unita |
email_cluster_id_label |
additional.fields |
Unita |
email_direction_label |
additional.fields |
Unita |
email_language_label |
additional.fields |
Unita |
exchange_transport_rule_label |
additional.fields |
Unita |
is_first_contact_label |
additional.fields |
Unita |
org_level_action_label |
additional.fields |
Unita |
org_level_policy_label |
additional.fields |
Unita |
phishData_label |
additional.fields |
Unita |
sender_from_address_label |
additional.fields |
Unita |
sender_mail_label |
additional.fields |
Unita |
spamData_label |
additional.fields |
Unita |
threat_names_label |
additional.fields |
Unita |
threat_types_label |
additional.fields |
Unita |
url_chain_list |
additional.fields |
Unita |
url_count_label |
additional.fields |
Unita |
url_loc_label |
additional.fields |
Unita |
url_location_label |
additional.fields |
Unita |
urlcount_label |
additional.fields |
Unita |
user_level_action_label |
additional.fields |
Unita |
user_level_policy_label |
additional.fields |
Unita |
workload_label |
additional.fields |
Unita |
_time |
metadata.event_timestamp |
Analizzato come RFC3339 |
time |
metadata.event_timestamp |
Analizzato come yyyy-MM-ddTHH:mm:ss.SSSSSSSZ |
event_type |
metadata.event_type |
Mappato direttamente |
_raw.category |
metadata.product_event_type |
Mappato direttamente |
operationName |
metadata.product_event_type |
Mappato direttamente |
_raw.properties.ReportId |
metadata.product_log_id |
Mappato direttamente |
_raw.properties.SenderFromAddress |
network.email.from |
Mappato direttamente |
_raw.properties.InternetMessageId |
network.email.mail_id |
Mappato direttamente |
_raw.properties.Subject |
network.email.subject |
Unita |
properties.Subject |
network.email.subject |
Unita |
_raw.properties.RecipientEmailAddress |
network.email.to |
Unita |
email |
network.email.to |
Mappato: ^.+@.+$ → email |
properties.EmailSize |
network.received_bytes |
Rinominate/mappate |
_raw.properties.NetworkMessageId |
network.session_id |
Mappato direttamente |
_raw.properties.SenderFromDomain |
principal.administrative_domain |
Mappato direttamente |
_raw.properties.SenderMailFromDomain |
principal.administrative_domain |
Mappato direttamente |
properties.SenderMailFromDomain |
principal.administrative_domain |
Mappato direttamente |
_raw.properties.UrlDomain |
principal.asset.hostname |
Mappato direttamente |
properties.SenderFromDomain |
principal.asset.hostname |
Mappato direttamente |
properties.UrlDomain |
principal.asset.hostname |
Mappato direttamente |
_raw.properties.SenderIPv4 |
principal.asset.ip |
Unita |
_raw.properties.SenderIPv6 |
principal.asset.ip |
Unita |
sender_ip |
principal.asset.ip |
Unita |
_raw.properties.SenderMailFromAddress |
principal.email |
Mappato direttamente |
target.SHA256 |
principal.file.sha256 |
Mappato direttamente |
_raw.properties.UrlDomain |
principal.hostname |
Mappato direttamente |
properties.SenderFromDomain |
principal.hostname |
Mappato direttamente |
properties.UrlDomain |
principal.hostname |
Mappato direttamente |
_raw.properties.SenderIPv4 |
principal.ip |
Unita |
_raw.properties.SenderIPv6 |
principal.ip |
Unita |
sender_ip |
principal.ip |
Unita |
_raw.properties.Url |
principal.url |
Mappato direttamente |
properties.Url |
principal.url |
Mappato direttamente |
_raw.properties.SenderObjectId |
principal.user.product_object_id |
Mappato direttamente |
tenantId |
principal.user.product_object_id |
Mappato direttamente |
_raw.properties.SenderDisplayName |
principal.user.user_display_name |
Mappato direttamente |
properties.SenderDisplayName |
principal.user.user_display_name |
Mappato direttamente |
action |
security_result.action |
Unita |
properties.Action |
security_result.action_details |
Mappato direttamente |
security_result_category |
security_result.category |
Unita |
category |
security_result.category_details |
Unita |
Phish_level |
security_result.confidence |
Mappato: high → HIGH_CONFIDENCE, medium → MEDIUM_CONFIDENCE, low → LOW_CONFIDENCE |
properties.ActionResult |
security_result.description |
Mappato direttamente |
action_type_label |
security_result.detection_fields |
Unita |
cribl_pipe_label |
security_result.detection_fields |
Unita |
email_action_label |
security_result.detection_fields |
Unita |
email_action_policy_label |
security_result.detection_fields |
Unita |
email_language_label |
security_result.detection_fields |
Unita |
emailactpol_guid_label |
security_result.detection_fields |
Unita |
internet_message_id_label |
security_result.detection_fields |
Unita |
network_message_id_label |
security_result.detection_fields |
Unita |
operation_name_label |
security_result.detection_fields |
Unita |
phish_level_label |
security_result.detection_fields |
Unita |
recipient_id_label |
security_result.detection_fields |
Unita |
report_id_label |
security_result.detection_fields |
Unita |
sender_id_label |
security_result.detection_fields |
Unita |
tenant_label |
security_result.detection_fields |
Unita |
transport_rule_guid_label |
security_result.detection_fields |
Unita |
trigger_label |
security_result.detection_fields |
Unita |
properties.DeliveryLocation |
security_result.summary |
Mappato direttamente |
properties.ThreatNames |
security_result.threat_name |
Mappato direttamente |
properties.AccountUpn |
target.email |
Mappato direttamente |
_raw.properties.FileName |
target.file.full_path |
Mappato direttamente |
_raw.properties.FileType |
target.file.mime_type |
Mappato direttamente |
properties.FileType |
target.file.mime_type |
Mappato direttamente |
properties.FileName |
target.file.names |
Unita |
_raw.properties.FileSize |
target.file.size |
Rinominate/mappate |
properties.FileSize |
target.file.size |
Rinominate/mappate |
properties.RecipientDomain |
target.hostname |
Mappato direttamente |
_raw.tenantId |
target.resource.id |
Mappato direttamente |
_raw.properties.RecipientObjectId |
target.user.product_object_id |
Mappato direttamente |
| N/D | metadata.event_type |
Costante: GENERIC_EVENT |
| N/D | metadata.product_name |
Costante: MICROSOFT_DEFENDER_MAIL |
| N/D | metadata.vendor_name |
Costante: MICROSOFT_DEFENDER_MAIL |
| N/D | network.direction |
Costante: INBOUND |
| N/D | security_result.confidence |
Costante: HIGH_CONFIDENCE |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.