Collect Microsoft Defender for Identity logs
This document explains how to ingest the Microsoft Defender for Identity logs to Google Security Operations using Azure Storage. The parser processes JSON logs, or CEF formatted logs if the JSON parsing fails. It extracts fields, performs data transformations such as string conversions, renaming, and merging, and maps them to the Unified Data Model (UDM), handling various log formats and enriching the data with additional context like labels and authentication details.
Before you begin
Make sure you have the following prerequisites:
- Google SecOps instance
- active Azure tenant
- Privileged access to Azure and Administrative Security role
Configure Azure Storage account
- In the Azure console, search for Storage accounts.
- Click Create.
- Specify values for the following input parameters:
- Subscription: select the subscription.
- Resource Group: select the resource group.
- Region: select the region.
- Performance: select the type of performance (Standard recommended).
- Redundancy: select the type of redundancy (GRS or LRS recommended).
- Storage account name: enter a name for the new Storage account.
 
- Click Review + create.
- Review the overview of the account and click Create.
- From the storage account Overview page, select submenu Access keys in Security + networking.
- Click Show next to key1 or key2.
- Click Copy to clipboard to copy the key.
- Save the key in a secure location for future reference.
- From the storage account Overview page, select submenu Endpoints in Settings.
- Click Copy to clipboard to copy the Blob service endpoint URL. (for example, https://<storageaccountname>.blob.core.windows.net).
- Save the endpoint URL in a secure location for future reference.
- Go to Overview > JSON View.
- Copy and save the Storage Resource ID.
Configure Log Export for Microsoft Defender for Identity
- Sign in to the Defender Portal using a privileged account.
- Go to Settings.
- Select the Microsoft Defender XDR tab.
- Select Streaming API from the general section and click Add.
- Select Forward events to Azure Storage.
- Provide the following configuration details:
- Name: Enter a unique and meaningful name.
- Select Forward events to Azure Storage.
- Storage Account Resource ID: Enter the Azure Storage resource ID copied earlier.
- Event Types: Select both Alerts & Behaviors and Devices.
 
- Click Submit.
Set up feeds
There are two different entry points to set up feeds in the Google SecOps platform:
- SIEM Settings > Feeds > Add New Feed
- Content Hub > Content Packs > Get Started
How to set up the Microsoft Defender for Identity feed
- Click the Microsoft Defender pack.
- Specify the following values: - Source Type: Microsoft Azure Blob Storage V2.
- Azure uri: the blob endpoint URL. - ENDPOINT_URL/BLOB_NAME- Replace the following: - ENDPOINT_URL: the blob endpoint URL. (- https://<storageaccountname>.blob.core.windows.net)
- BLOB_NAME: the name of the blob. (such as,- insights-logs-<logname>)
 
- Source deletion options: select deletion option according to your preference. 
 - Advanced options - Feed Name: A prepopulated value that identifies the feed.
- Asset Namespace: Namespace associated with the feed.
- Ingestion Labels: Labels applied to all events from this feed.
 
- Click Create feed. 
For more information about configuring multiple feeds for different log types within this product family, see Configure feeds by product.
UDM mapping table
| Log Field | UDM Mapping | Logic | 
|---|---|---|
| category | metadata.log_type | The raw log categoryfield is mapped tometadata.log_type. | 
| properties.AccountDisplayName | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AccountName | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AccountUpn | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.ActionType | metadata.product_event_type | The raw log properties.ActionTypefield is mapped tometadata.product_event_type. | 
| properties.AdditionalFields.ACTOR.ACCOUNT | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.ACTOR.DEVICE | principal.asset.asset_id | The parser extracts the value of properties.AdditionalFields.ACTOR.DEVICEand prependsASSET ID:. | 
| properties.AdditionalFields.ACTOR.ENTITY_USER | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.Count | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.DestinationComputerDnsName | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.DestinationComputerObjectGuid | target.asset.product_object_id | The first element of the array properties.AdditionalFields.DestinationComputerObjectGuidis mapped totarget.asset.product_object_id. Subsequent elements are mapped toadditional.fieldswith keys likeDestinationComputerObjectGuid_1,DestinationComputerObjectGuid_2, etc. | 
| properties.AdditionalFields.DestinationComputerOperatingSystem | target.asset.platform_software.platform_version | The first element of the array properties.AdditionalFields.DestinationComputerOperatingSystemis mapped totarget.asset.platform_software.platform_version. Subsequent elements are mapped toadditional.fieldswith keys likeDestinationComputerOperatingSystem_1,DestinationComputerOperatingSystem_2, etc. | 
| properties.AdditionalFields.DestinationComputerOperatingSystemType | target.asset.platform_software.platform | If the value is windows, the UDM field is set toWINDOWS. | 
| properties.AdditionalFields.DestinationComputerOperatingSystemVersion | target.platform_version | The first element of the array properties.AdditionalFields.DestinationComputerOperatingSystemVersionis mapped totarget.platform_version. Subsequent elements are mapped toadditional.fieldswith keys likeDestinationComputerOperatingSystemVersion1,DestinationComputerOperatingSystemVersion2, etc. | 
| properties.AdditionalFields.FROM.DEVICE | principal.asset.asset_id | The parser extracts the value of properties.AdditionalFields.FROM.DEVICEand prependsASSET ID:. | 
| properties.AdditionalFields.KerberosDelegationType | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.SourceAccountId | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.SourceAccountSid | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.SourceComputerObjectGuid | principal.asset.product_object_id | The raw log properties.AdditionalFields.SourceComputerObjectGuidfield is mapped toprincipal.asset.product_object_id. | 
| properties.AdditionalFields.SourceComputerOperatingSystem | principal.asset.platform_software.platform_version | The raw log properties.AdditionalFields.SourceComputerOperatingSystemfield is mapped toprincipal.asset.platform_software.platform_version. | 
| properties.AdditionalFields.SourceComputerOperatingSystemType | principal.asset.platform_software.platform_version | If the value is windows, the UDM field is set toWINDOWS. | 
| properties.AdditionalFields.SourceComputerOperatingSystemVersion | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.Spns | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.TARGET_OBJECT.ENTITY_USER | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.AdditionalFields.TARGET_OBJECT.USER | target.user.userid | The first element of the array properties.AdditionalFields.TARGET_OBJECT.USERis mapped totarget.user.userid. Subsequent elements are mapped toadditional.fieldswith keys likeTARGET_OBJECT.USER_1,TARGET_OBJECT.USER_2, etc. | 
| properties.AdditionalFields.TO.DEVICE | target.asset.asset_id | The first element of the array properties.AdditionalFields.TO.DEVICEis mapped totarget.asset.asset_idwithASSET ID:prepended. Subsequent elements are mapped toadditional.fieldswith keys likeTODEVICE1,TODEVICE2, etc. | 
| properties.AuthenticationDetails | extensions.auth.auth_details | The parser removes curly braces, square brackets, and double quotes from the value and prepends AuthenticationDetails:. | 
| properties.DeliveryAction | additional.fields | Mapped with key DeliveryAction. | 
| properties.DeliveryLocation | additional.fields | Mapped with key DeliveryLocation. | 
| properties.DestinationDeviceName | target.hostname,target.asset.hostname | The raw log properties.DestinationDeviceNamefield is mapped to bothtarget.hostnameandtarget.asset.hostname. | 
| properties.DestinationIPAddress | target.ip,target.asset.ip | The raw log properties.DestinationIPAddressfield is mapped to bothtarget.ipandtarget.asset.ip. | 
| properties.DestinationPort | target.port | The raw log properties.DestinationPortfield is mapped totarget.port. | 
| properties.DeviceName | principal.hostname,principal.asset.hostname | The raw log properties.DeviceNamefield is mapped to bothprincipal.hostnameandprincipal.asset.hostname. | 
| properties.EmailClusterId | additional.fields | Mapped with key EmailClusterId. | 
| properties.EmailDirection | network.direction | If the value is Inbound, the UDM field is set toINBOUND. If the value isOutbound, the UDM field is set toOUTBOUND. Otherwise, it's set toUNKNOWN_DIRECTION. | 
| properties.EmailLanguage | additional.fields | Mapped with key EmailLanguage. | 
| properties.InitiatingProcessAccountDomain | principal.administrative_domain | The raw log properties.InitiatingProcessAccountDomainfield is mapped toprincipal.administrative_domain. | 
| properties.InitiatingProcessAccountSid | principal.user.windows_sid | The raw log properties.InitiatingProcessAccountSidfield is mapped toprincipal.user.windows_sid. | 
| properties.InitiatingProcessCommandLine | principal.process.command_line | The raw log properties.InitiatingProcessCommandLinefield is mapped toprincipal.process.command_line. | 
| properties.InitiatingProcessFileName | principal.process.file.full_path | Used in combination with properties.InitiatingProcessFolderPathto construct the full path. Ifproperties.InitiatingProcessFolderPathalready contains the filename, it's used directly. | 
| properties.InitiatingProcessFolderPath | principal.process.file.full_path | Used in combination with properties.InitiatingProcessFileNameto construct the full path. | 
| properties.InitiatingProcessId | principal.process.pid | The raw log properties.InitiatingProcessIdfield is mapped toprincipal.process.pid. | 
| properties.InitiatingProcessIntegrityLevel | about.labels | Mapped with key InitiatingProcessIntegrityLevel. | 
| properties.InitiatingProcessMD5 | principal.process.file.md5 | The raw log properties.InitiatingProcessMD5field is mapped toprincipal.process.file.md5. | 
| properties.InitiatingProcessParentId | principal.process.parent_process.pid | The raw log properties.InitiatingProcessParentIdfield is mapped toprincipal.process.parent_process.pid. | 
| properties.InitiatingProcessParentFileName | principal.process.parent_process.file.full_path | The raw log properties.InitiatingProcessParentFileNamefield is mapped toprincipal.process.parent_process.file.full_path. | 
| properties.InitiatingProcessSHA1 | principal.process.file.sha1 | The raw log properties.InitiatingProcessSHA1field is mapped toprincipal.process.file.sha1. | 
| properties.InitiatingProcessSHA256 | principal.process.file.sha256 | The raw log properties.InitiatingProcessSHA256field is mapped toprincipal.process.file.sha256. | 
| properties.InitiatingProcessTokenElevation | about.labels | Mapped with key InitiatingProcessTokenElevation. | 
| properties.InternetMessageId | additional.fields | The parser removes angle brackets and maps the value with key InternetMessageId. | 
| properties.IPAddress | principal.ip,principal.asset.ip | The raw log properties.IPAddressfield is mapped to bothprincipal.ipandprincipal.asset.ip. | 
| properties.LogonType | extensions.auth.mechanism | Used to derive the value for extensions.auth.mechanism. | 
| properties.Port | principal.port | The raw log properties.Portfield is mapped toprincipal.port. | 
| properties.PreviousRegistryKey | src.registry.registry_key | The raw log properties.PreviousRegistryKeyfield is mapped tosrc.registry.registry_key. | 
| properties.PreviousRegistryValueData | src.registry.registry_value_data | The raw log properties.PreviousRegistryValueDatafield is mapped tosrc.registry.registry_value_data. | 
| properties.PreviousRegistryValueName | src.registry.registry_value_name | The raw log properties.PreviousRegistryValueNamefield is mapped tosrc.registry.registry_value_name. | 
| properties.Query | principal.user.attribute.labels | Mapped with key LDAP Search Scope. | 
| properties.RecipientEmailAddress | Not Mapped | This field is not mapped to the IDM object in the UDM. | 
| properties.RegistryKey | target.registry.registry_key | The raw log properties.RegistryKeyfield is mapped totarget.registry.registry_key. | 
| properties.RegistryValueData | target.registry.registry_value_data | The raw log properties.RegistryValueDatafield is mapped totarget.registry.registry_value_data. | 
| properties.RegistryValueName | target.registry.registry_value_name | The raw log properties.RegistryValueNamefield is mapped totarget.registry.registry_value_name. | 
| properties.ReportId | about.labels | Mapped with key ReportId. | 
| properties.SenderIPv4 | principal.ip,principal.asset.ip | The raw log properties.SenderIPv4field is mapped to bothprincipal.ipandprincipal.asset.ip. | 
| properties.SenderMailFromAddress | principal.user.attribute.labels | Mapped with key SenderMailFromAddress. | 
| properties.SenderMailFromDomain | principal.user.attribute.labels | Mapped with key SenderMailFromDomain. | 
| properties.SenderObjectId | principal.user.product_object_id | The raw log properties.SenderObjectIdfield is mapped toprincipal.user.product_object_id. | 
| properties.Timestamp | metadata.event_timestamp | The raw log properties.Timestampfield is mapped tometadata.event_timestamp. | 
| tenantId | observer.cloud.project.id | The raw log tenantIdfield is mapped toobserver.cloud.project.id. | 
| N/A | extensions.auth.type | The value MACHINEis assigned by the parser. | 
| N/A | metadata.event_type | Derived based on the categoryandproperties.ActionTypefields. Can beUSER_LOGIN,USER_RESOURCE_ACCESS,USER_CHANGE_PASSWORD,REGISTRY_MODIFICATION,REGISTRY_DELETION,REGISTRY_CREATION,GENERIC_EVENT, orSTATUS_UPDATE. | 
| N/A | metadata.vendor_name | The value Microsoftis assigned by the parser. | 
| N/A | metadata.product_name | The value Microsoft Defender Identityis assigned by the parser. | 
| cs1 | metadata.url_back_to_product | The raw log cs1field is mapped tometadata.url_back_to_product. | 
| externalId | metadata.product_log_id | The raw log externalIdfield is mapped tometadata.product_log_id. | 
| msg | metadata.description | The raw log msgfield is mapped tometadata.description. | 
| rule_name | security_result.rule_name | The raw log rule_namefield is mapped tosecurity_result.rule_name. | 
| severity | security_result.severity | The raw log severityfield is mapped tosecurity_result.severity. | 
| shost | principal.hostname,principal.asset.hostname | The raw log shostfield is mapped to bothprincipal.hostnameandprincipal.asset.hostname. | 
| src | principal.ip | The raw log srcfield is mapped toprincipal.ip. | 
| suser | principal.user.user_display_name | The raw log suserfield is mapped toprincipal.user.user_display_name. | 
| time | metadata.event_timestamp | The raw log timefield is mapped tometadata.event_timestamp. | 
| userid | principal.user.userid | The raw log useridfield is mapped toprincipal.user.userid. | 
| N/A | security_result.action | Derived based on the properties.ActionTypefield. Can beALLOWorBLOCK. | 
| N/A | security_result.summary | Derived from either the categoryfield or theproperties.ActionTypefield. | 
Need more help? Get answers from Community members and Google SecOps professionals.