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
Ensure that 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.
Configure a feed in Google SecOps to ingest the Defender for Identity logs
- Go to SIEM Settings > Feeds.
- Click Add new.
- In the Feed name field, enter a name for the feed (for example, Defender Identity Logs).
- Select Microsoft Azure Blob Storage as the Source type.
- Select Microsoft Defender for Identity as the Log type.
- Click Next.
Specify values for the following input parameters:
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>
)
URI is a: select according to log stream configuration (Single file | Directory | Directory which includes subdirectories).
Source deletion options: select deletion option according to your preference.
- Shared key: the access key to the Azure Blob Storage.
- Asset namespace: the asset namespace.
- Ingestion labels: the label to be applied to the events from this feed.
Click Next.
Review your new feed configuration in the Finalize screen, and then click Submit.
UDM mapping table
Log Field | UDM Mapping | Logic |
---|---|---|
category |
metadata.log_type |
The raw log category field is mapped to metadata.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.ActionType field is mapped to metadata.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.DEVICE and prepends ASSET 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.DestinationComputerObjectGuid is mapped to target.asset.product_object_id . Subsequent elements are mapped to additional.fields with keys like DestinationComputerObjectGuid_1 , DestinationComputerObjectGuid_2 , etc. |
properties.AdditionalFields.DestinationComputerOperatingSystem |
target.asset.platform_software.platform_version |
The first element of the array properties.AdditionalFields.DestinationComputerOperatingSystem is mapped to target.asset.platform_software.platform_version . Subsequent elements are mapped to additional.fields with keys like DestinationComputerOperatingSystem_1 , DestinationComputerOperatingSystem_2 , etc. |
properties.AdditionalFields.DestinationComputerOperatingSystemType |
target.asset.platform_software.platform |
If the value is windows , the UDM field is set to WINDOWS . |
properties.AdditionalFields.DestinationComputerOperatingSystemVersion |
target.platform_version |
The first element of the array properties.AdditionalFields.DestinationComputerOperatingSystemVersion is mapped to target.platform_version . Subsequent elements are mapped to additional.fields with keys like DestinationComputerOperatingSystemVersion1 , DestinationComputerOperatingSystemVersion2 , etc. |
properties.AdditionalFields.FROM.DEVICE |
principal.asset.asset_id |
The parser extracts the value of properties.AdditionalFields.FROM.DEVICE and prepends ASSET 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.SourceComputerObjectGuid field is mapped to principal.asset.product_object_id . |
properties.AdditionalFields.SourceComputerOperatingSystem |
principal.asset.platform_software.platform_version |
The raw log properties.AdditionalFields.SourceComputerOperatingSystem field is mapped to principal.asset.platform_software.platform_version . |
properties.AdditionalFields.SourceComputerOperatingSystemType |
principal.asset.platform_software.platform_version |
If the value is windows , the UDM field is set to WINDOWS . |
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.USER is mapped to target.user.userid . Subsequent elements are mapped to additional.fields with keys like TARGET_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.DEVICE is mapped to target.asset.asset_id with ASSET ID: prepended. Subsequent elements are mapped to additional.fields with keys like TODEVICE1 , 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.DestinationDeviceName field is mapped to both target.hostname and target.asset.hostname . |
properties.DestinationIPAddress |
target.ip , target.asset.ip |
The raw log properties.DestinationIPAddress field is mapped to both target.ip and target.asset.ip . |
properties.DestinationPort |
target.port |
The raw log properties.DestinationPort field is mapped to target.port . |
properties.DeviceName |
principal.hostname , principal.asset.hostname |
The raw log properties.DeviceName field is mapped to both principal.hostname and principal.asset.hostname . |
properties.EmailClusterId |
additional.fields |
Mapped with key EmailClusterId . |
properties.EmailDirection |
network.direction |
If the value is Inbound , the UDM field is set to INBOUND . If the value is Outbound , the UDM field is set to OUTBOUND . Otherwise, it's set to UNKNOWN_DIRECTION . |
properties.EmailLanguage |
additional.fields |
Mapped with key EmailLanguage . |
properties.InitiatingProcessAccountDomain |
principal.administrative_domain |
The raw log properties.InitiatingProcessAccountDomain field is mapped to principal.administrative_domain . |
properties.InitiatingProcessAccountSid |
principal.user.windows_sid |
The raw log properties.InitiatingProcessAccountSid field is mapped to principal.user.windows_sid . |
properties.InitiatingProcessCommandLine |
principal.process.command_line |
The raw log properties.InitiatingProcessCommandLine field is mapped to principal.process.command_line . |
properties.InitiatingProcessFileName |
principal.process.file.full_path |
Used in combination with properties.InitiatingProcessFolderPath to construct the full path. If properties.InitiatingProcessFolderPath already contains the filename, it's used directly. |
properties.InitiatingProcessFolderPath |
principal.process.file.full_path |
Used in combination with properties.InitiatingProcessFileName to construct the full path. |
properties.InitiatingProcessId |
principal.process.pid |
The raw log properties.InitiatingProcessId field is mapped to principal.process.pid . |
properties.InitiatingProcessIntegrityLevel |
about.labels |
Mapped with key InitiatingProcessIntegrityLevel . |
properties.InitiatingProcessMD5 |
principal.process.file.md5 |
The raw log properties.InitiatingProcessMD5 field is mapped to principal.process.file.md5 . |
properties.InitiatingProcessParentId |
principal.process.parent_process.pid |
The raw log properties.InitiatingProcessParentId field is mapped to principal.process.parent_process.pid . |
properties.InitiatingProcessParentFileName |
principal.process.parent_process.file.full_path |
The raw log properties.InitiatingProcessParentFileName field is mapped to principal.process.parent_process.file.full_path . |
properties.InitiatingProcessSHA1 |
principal.process.file.sha1 |
The raw log properties.InitiatingProcessSHA1 field is mapped to principal.process.file.sha1 . |
properties.InitiatingProcessSHA256 |
principal.process.file.sha256 |
The raw log properties.InitiatingProcessSHA256 field is mapped to principal.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.IPAddress field is mapped to both principal.ip and principal.asset.ip . |
properties.LogonType |
extensions.auth.mechanism |
Used to derive the value for extensions.auth.mechanism . |
properties.Port |
principal.port |
The raw log properties.Port field is mapped to principal.port . |
properties.PreviousRegistryKey |
src.registry.registry_key |
The raw log properties.PreviousRegistryKey field is mapped to src.registry.registry_key . |
properties.PreviousRegistryValueData |
src.registry.registry_value_data |
The raw log properties.PreviousRegistryValueData field is mapped to src.registry.registry_value_data . |
properties.PreviousRegistryValueName |
src.registry.registry_value_name |
The raw log properties.PreviousRegistryValueName field is mapped to src.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.RegistryKey field is mapped to target.registry.registry_key . |
properties.RegistryValueData |
target.registry.registry_value_data |
The raw log properties.RegistryValueData field is mapped to target.registry.registry_value_data . |
properties.RegistryValueName |
target.registry.registry_value_name |
The raw log properties.RegistryValueName field is mapped to target.registry.registry_value_name . |
properties.ReportId |
about.labels |
Mapped with key ReportId . |
properties.SenderIPv4 |
principal.ip , principal.asset.ip |
The raw log properties.SenderIPv4 field is mapped to both principal.ip and principal.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.SenderObjectId field is mapped to principal.user.product_object_id . |
properties.Timestamp |
metadata.event_timestamp |
The raw log properties.Timestamp field is mapped to metadata.event_timestamp . |
tenantId |
observer.cloud.project.id |
The raw log tenantId field is mapped to observer.cloud.project.id . |
N/A | extensions.auth.type |
The value MACHINE is assigned by the parser. |
N/A | metadata.event_type |
Derived based on the category and properties.ActionType fields. Can be USER_LOGIN , USER_RESOURCE_ACCESS , USER_CHANGE_PASSWORD , REGISTRY_MODIFICATION , REGISTRY_DELETION , REGISTRY_CREATION , GENERIC_EVENT , or STATUS_UPDATE . |
N/A | metadata.vendor_name |
The value Microsoft is assigned by the parser. |
N/A | metadata.product_name |
The value Microsoft Defender Identity is assigned by the parser. |
cs1 |
metadata.url_back_to_product |
The raw log cs1 field is mapped to metadata.url_back_to_product . |
externalId |
metadata.product_log_id |
The raw log externalId field is mapped to metadata.product_log_id . |
msg |
metadata.description |
The raw log msg field is mapped to metadata.description . |
rule_name |
security_result.rule_name |
The raw log rule_name field is mapped to security_result.rule_name . |
severity |
security_result.severity |
The raw log severity field is mapped to security_result.severity . |
shost |
principal.hostname , principal.asset.hostname |
The raw log shost field is mapped to both principal.hostname and principal.asset.hostname . |
src |
principal.ip |
The raw log src field is mapped to principal.ip . |
suser |
principal.user.user_display_name |
The raw log suser field is mapped to principal.user.user_display_name . |
time |
metadata.event_timestamp |
The raw log time field is mapped to metadata.event_timestamp . |
userid |
principal.user.userid |
The raw log userid field is mapped to principal.user.userid . |
N/A | security_result.action |
Derived based on the properties.ActionType field. Can be ALLOW or BLOCK . |
N/A | security_result.summary |
Derived from either the category field or the properties.ActionType field. |
Changes
2025-02-11
Enhancement:
- Added support to parse unparsed fields.
2024-10-14
Enhancement:
- Mapped
device_event_class_id
tosecurity_result.rule_name
. - Mapped
event_name
tosecurity_result.description
. - Mapped
app
andalert_id
toadditional.fields
. - Mapped
externalId
tometadata.product_log_id
.
2024-09-12
Enhancement:
- Added support for array-type logs.
2024-08-09
Enhancement:
- Added support to parse syslog logs.
2024-06-25
Enhancement:
- Added support to parse unparsed logs.
- If
properties.AdditionalFields.TARGET_OBJECT.USER
is absent, mappedproperties.AccountName
totarget.user.userid
. - If
properties.AccountName
andproperties.AdditionalFields.PRINCIPAL_OBJECT.USER
are absent, mappedproperties.AccountDisplayName
toprincipal.user.userid
. - Mapped
properties.Location
toprincipal.location.country_or_region
. - Mapped
properties.AccountObjectId
toprincipal.user.attribute.labels
.
2024-04-15
Enhancement:
- Added support to map
DestinationComputerObjectGuid
,DestinationComputerOperatingSystem
,DestinationComputerOperatingSystemVersion
,TO.DEVICE
fields, when the value of these fields is a list instead of a string.
2022-07-27
Enhancement:
- Mapped
metadata.event_type
toREGISTRY_MODIFICATION
whereproperties.ActionType
is not null. - Mapped
metadata.event_type
toREGISTRY_DELETION
whereproperties.ActionType
isRegistryValueDeleted
. - Mapped
metadata.event_type
toREGISTRY_CREATION
whereproperties.ActionType
isRegistryValueCreated
. - Mapped
properties.InitiatingProcessFolderPath
toprocess.file.full_path
. - Mapped
about.labels
toproperties.InitiatingProcessIntegrityLevel
. - Mapped
properties.DeviceId
toprincipal.asset_id
. - Mapped
properties.InitiatingProcessTokenElevation
toabout.labels
. - Mapped
properties.InitiatingProcessParentFileName
toprincipal.process.parent_process.file.full_path
. - Mapped
properties.InitiatingProcessMD5
toprincipal.process.file.md5
. - Mapped
properties.InitiatingProcessSHA256
toprincipal.process.file.sha256
. - Mapped
properties.InitiatingProcessSHA1
toprincipal.process.file.sha1
. - Mapped
properties.InitiatingProcessId
toprincipal.process.pid
. - Mapped
properties.InitiatingProcessCommandLine
toprincipal.process.command_line
. - Mapped
properties.InitiatingProcessAccountSid
toprincipal.user.windows_sid
. - Mapped
properties.InitiatingProcessAccountDomain
toprincipal.administrative_domain
. - Mapped
properties.RegistryKey
totarget.registry.registry_key
. - Mapped
properties.RegistryValueName
totarget.registry.registry_value_name
. - Mapped
properties.RegistryValueData
totarget.registry.registry_value_data
. - Mapped
properties.PreviousRegistryKey
tosrc.registry.registry_key
. - Mapped
properties.PreviousRegistryValueName
tosrc.registry.registry_value_name
. - Mapped
properties.PreviousRegistryValueData
tosrc.registry.registry_value_data
.
2022-04-22
Enhancement:
- Newly created parser.
Need more help? Get answers from Community members and Google SecOps professionals.