Collect Microsoft Azure AD logs
This document describes how you can collect Microsoft Azure Active Directory (AD) logs by setting up a Google Security Operations feed.
Azure Active Directory ( AZURE_AD 
) is now called Microsoft Entra ID. Azure AD audit logs
( AZURE_AD_AUDIT 
) are now Microsoft Entra ID audit logs.
For more information, see Data ingestion to Google Security Operations .
An ingestion label identifies the parser which normalizes raw log data to structured UDM format.
Before you begin
Ensure you have the following prerequisites:
- An Azure subscription that you can sign in to
- A global administrator or Azure AD administrator role
- An Azure AD (tenant) in Azure
How to configure Azure AD
- Sign in to the Azure portal.
- Go to Home > App registration, select a registered application or register an application if you haven't created an application yet.
- To register an application, in the App registrationsection, click New registration.
- In the Namefield, provide the display name for your application.
- In the Supported account typessection, select the required option to specify who can use the application or access the API.
- Click Register.
- Go to the Overviewpage and copy the application (client) ID and the directory (tenant) ID, which are required to configure the Google Security Operations feed.
- Click API permissions.
- Click Add a permission, and then select Microsoft Graphin the new pane.
- Click Application permissions.
- Select AuditLog.Read.All, Directory.Read.All, and SecurityEvents.Read.Allpermissions. Ensure that the permissions are Application permissionsand not Delegated permissions.
- Click Grant admin consent for default directory. Applications are authorized to call APIs when they are granted permissions by users or administrators as part of the consent process.
- Go to Settings > Manage.
- Click Certificates and secrets.
- Click New client secret. In the Valuefield, the client secret appears.
- Copy the client secret value. The value is displayed only at the time of creation and it is required for the Azure app registration and to configure the Google Security Operations feed.
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 Entra ID (Azure AD) feed
- Click the Azure Platformpack.
- Locate the Azure ADlog type.
-  Specify values for the following fields: - Source Type: Third party API (recommended)
- OAUTH client ID: Specify the client ID that you obtained previously.
- OAUTH client secret: Specify the client secret that you obtained previously.
- Tenant ID: Specify the tenant ID that you obtained previously.
- API Full path: Microsoft Graph REST API endpoint URL.
- API Authentication Endpoint: Microsoft Active Directory Authentication Endpoint.
 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 .
For more information about Google Security Operations feeds, see Google Security Operations feeds documentation . For information about requirements for each feed type, see Feed configuration by type .
Field mapping reference
This parser code transforms raw Azure AD logs in JSON format into a unified data model (UDM). It first normalizes the data by removing unnecessary fields and then extracts relevant information like user details, timestamps, and event specifics, mapping them to corresponding UDM fields for consistent representation and analysis.
UDM mapping table
| Log Field | UDM Mapping | Logic | 
|---|---|---|
|   
activityDateTime | read_only_udm.metadata.event_timestamp.seconds | The value is extracted from the activityDateTimefield and converted to seconds since epoch. | 
|   
activityDisplayName | read_only_udm.security_result.summary | The value is directly mapped from the activityDisplayNamefield. | 
|   
additionalDetails.0.value | read_only_udm.network.http.user_agent | The value is directly mapped from the additionalDetails.0.valuefield. | 
|   
additionalDetails.1.key | read_only_udm.target.resource.attribute.labels.key | The value is directly mapped from the additionalDetails.1.keyfield. | 
|   
additionalDetails.1.value | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the additionalDetails.1.valuefield. | 
|   
am_category | read_only_udm.metadata.description | The value is directly mapped from the am_categoryfield. | 
|   
am_tenantId | read_only_udm.metadata.product_deployment_id | The value is directly mapped from the am_tenantIdfield. | 
|   
appDisplayName | read_only_udm.target.application | The value is directly mapped from the appDisplayNamefield. IfappDisplayNameis empty, the value is taken fromresourceDisplayName. | 
|   
appId | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the appIdfield. | 
|   
appliedConditionalAccessPolicies.displayName | read_only_udm.about.user.user_display_name | The value is directly mapped from the appliedConditionalAccessPolicies.displayNamefield. | 
|   
appliedConditionalAccessPolicies.enforcedGrantControls | read_only_udm.security_result.rule_labels.value | The value is directly mapped from the appliedConditionalAccessPolicies.enforcedGrantControlsfield. | 
|   
appliedConditionalAccessPolicies.enforcedSessionControls | read_only_udm.security_result.rule_labels.value | The value is directly mapped from the appliedConditionalAccessPolicies.enforcedSessionControlsfield. | 
|   
appliedConditionalAccessPolicies.id | read_only_udm.about.user.userid | The value is directly mapped from the appliedConditionalAccessPolicies.idfield. | 
|   
appliedConditionalAccessPolicies.result | read_only_udm.about.labels.value | The value is directly mapped from the appliedConditionalAccessPolicies.resultfield. | 
|   
authenticationDetails.authenticationMethod | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the authenticationDetails.authenticationMethodfield. | 
|   
authenticationDetails.authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the authenticationDetails.authenticationMethodDetailfield. | 
|   
authenticationDetails.authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the authenticationDetails.authenticationStepDateTimefield. | 
|   
authenticationDetails.authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the authenticationDetails.authenticationStepRequirementfield. | 
|   
authenticationDetails.authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the authenticationDetails.authenticationStepResultDetailfield. | 
|   
authenticationProcessingDetails.key | read_only_udm.additional.fields.key | The value is directly mapped from the authenticationProcessingDetails.keyfield, prefixed with "authenticationProcessingDetails - ". | 
|   
authenticationProcessingDetails.value | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the authenticationProcessingDetails.valuefield. | 
|   
callerIpAddress | read_only_udm.principal.ip | The value is directly mapped from the callerIpAddressfield. | 
|   
callerIpAddress | read_only_udm.principal.asset.ip | The value is directly mapped from the callerIpAddressfield. | 
|   
category | read_only_udm.metadata.description | The value is directly mapped from the categoryfield. | 
|   
clientAppUsed | read_only_udm.principal.application | The value is directly mapped from the clientAppUsedfield. | 
|   
conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the conditionalAccessStatusfield. | 
|   
correlationId | read_only_udm.network.session_id | The value is directly mapped from the correlationIdfield. | 
|   
correlationId | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the correlationIdfield. | 
|   
createdDateTime | read_only_udm.metadata.event_timestamp.seconds | The value is extracted from the createdDateTimefield and converted to seconds since epoch. | 
|   
deviceDetail.browser | read_only_udm.network.http.user_agent | The value is directly mapped from the deviceDetail.browserfield. | 
|   
deviceDetail.deviceId | read_only_udm.principal.asset.asset_id | The value is directly mapped from the deviceDetail.deviceIdfield, prefixed with "Device ID:". | 
|   
deviceDetail.deviceId | read_only_udm.principal.asset_id | The value is directly mapped from the deviceDetail.deviceIdfield, prefixed with "Device ID:". | 
|   
deviceDetail.displayName | read_only_udm.principal.asset.hostname | The value is directly mapped from the deviceDetail.displayNamefield. | 
|   
deviceDetail.isCompliant | read_only_udm.principal.asset.attribute.labels.value | The value is directly mapped from the deviceDetail.isCompliantfield. | 
|   
deviceDetail.isManaged | read_only_udm.principal.asset.attribute.labels.value | The value is directly mapped from the deviceDetail.isManagedfield. | 
|   
deviceDetail.operatingSystem | read_only_udm.principal.platform_version | The value is directly mapped from the deviceDetail.operatingSystemfield. | 
|   
deviceDetail.trustType | read_only_udm.principal.asset.attribute.labels.value | The value is directly mapped from the deviceDetail.trustTypefield. | 
|   
durationMs | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the durationMsfield. | 
|   
errorCode | read_only_udm.security_result.rule_id | The value is directly mapped from the errorCodefield. | 
|   
identity | read_only_udm.target.user.user_display_name | The value is directly mapped from the identityfield if it is different fromuserIdand does not match an email address pattern. | 
|   
initiatedBy.user.displayName | read_only_udm.principal.user.user_display_name | The value is directly mapped from the initiatedBy.user.displayNamefield. | 
|   
initiatedBy.user.id | read_only_udm.principal.user.userid | The value is directly mapped from the initiatedBy.user.idfield. | 
|   
initiatedBy.user.ipAddress | read_only_udm.principal.ip | The value is directly mapped from the initiatedBy.user.ipAddressfield. | 
|   
initiatedBy.user.ipAddress | read_only_udm.principal.asset.ip | The value is directly mapped from the initiatedBy.user.ipAddressfield. | 
|   
initiatedBy.user.userPrincipalName | read_only_udm.principal.user.email_addresses | The value is directly mapped from the initiatedBy.user.userPrincipalNamefield if it matches an email address pattern. | 
|   
ipAddress | read_only_udm.principal.ip | The value is extracted from the ipAddressfield using a grok pattern to extract the IP address. | 
|   
ipAddress | read_only_udm.principal.asset.ip | The value is extracted from the ipAddressfield using a grok pattern to extract the IP address. | 
|   
isInteractive | read_only_udm.extensions.auth.mechanism | The value is mapped to "INTERACTIVE" if isInteractiveis "true", otherwise it is mapped to "MECHANISM_OTHER". | 
|   
isInteractive | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the isInteractivefield. | 
|   
level | read_only_udm.security_result.severity | The value is mapped from the levelfield based on the following logic:  * "Information", "Informational", "0", "4" are mapped to "INFORMATIONAL". * "Warning", "1", "3" are mapped to "MEDIUM". * "Error", "2" are mapped to "ERROR". * "Critical", "CRITICAL", "critical" are mapped to "CRITICAL". | 
|   
level | read_only_udm.security_result.severity_details | The value is directly mapped from the levelfield. | 
|   
location.city | read_only_udm.principal.location.city | The value is directly mapped from the location.cityfield. | 
|   
location.countryOrRegion | read_only_udm.principal.location.country_or_region | The value is directly mapped from the location.countryOrRegionfield. | 
|   
location.geoCoordinates.latitude | read_only_udm.principal.location.region_coordinates.latitude | The value is directly mapped from the location.geoCoordinates.latitudefield and converted to a float. | 
|   
location.geoCoordinates.latitude | read_only_udm.principal.location.region_latitude | The value is directly mapped from the location.geoCoordinates.latitudefield and converted to a float. | 
|   
location.geoCoordinates.longitude | read_only_udm.principal.location.region_coordinates.longitude | The value is directly mapped from the location.geoCoordinates.longitudefield and converted to a float. | 
|   
location.geoCoordinates.longitude | read_only_udm.principal.location.region_longitude | The value is directly mapped from the location.geoCoordinates.longitudefield and converted to a float. | 
|   
location.state | read_only_udm.principal.location.state | The value is directly mapped from the location.statefield. | 
|   
networkLocationDetails.networkNames | read_only_udm.additional.fields.value.string_value | The value is generated by concatenating all values from the networkLocationDetails.networkNamesarray, separated by commas. | 
|   
networkLocationDetails.networkType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the networkLocationDetails.networkTypefield. | 
|   
networkLocationDetails.networkType | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the networkLocationDetails.networkTypefield. | 
|   
operationName | read_only_udm.metadata.event_type | The value is mapped to "USER_LOGIN" if operationNameis "Sign-in activity", "USER_CHANGE_PERMISSIONS" ifoperationNameis "Add member to group", and "USER_RESOURCE_UPDATE_PERMISSIONS" ifoperationNameis "Add app role assignment to service principal". Otherwise, the value is determined based on the presence of other fields: * "USER_LOGIN" ifhas_target_useris "true". * "USER_UNCATEGORIZED" ifhas_principal_useris "true". * "STATUS_UPDATE" ifhas_principalis "true". * "GENERIC_EVENT" otherwise. | 
|   
operationType | read_only_udm.security_result.action_details | The value is directly mapped from the operationTypefield. | 
|   
properties.activity | read_only_udm.security_result.summary | The value is directly mapped from the properties.activityfield. | 
|   
properties.activityDateTime | read_only_udm.metadata.event_timestamp.seconds | The value is extracted from the properties.activityDateTimefield and converted to seconds since epoch. | 
|   
properties.additionalInfo | read_only_udm.network.http.user_agent | The value is extracted from the properties.additionalInfofield by parsing the JSON string and extracting the value corresponding to the key "userAgent". | 
|   
properties.additionalInfo | read_only_udm.target.url | The value is extracted from the properties.additionalInfofield by parsing the JSON string and extracting the value corresponding to the key "alertUrl". | 
|   
properties.appId | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the properties.appIdfield. | 
|   
properties.appDisplayName | read_only_udm.target.application | The value is directly mapped from the properties.appDisplayNamefield. | 
|   
properties.appliedConditionalAccessPolicies.displayName | read_only_udm.security_result.rule_name | The value is directly mapped from the properties.appliedConditionalAccessPolicies.displayNamefield. | 
|   
properties.appliedConditionalAccessPolicies.id | read_only_udm.security_result.rule_id | The value is directly mapped from the properties.appliedConditionalAccessPolicies.idfield. | 
|   
properties.appliedConditionalAccessPolicies.result | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.appliedConditionalAccessPolicies.resultfield. | 
|   
properties.authenticationDetails.authenticationMethod | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationDetails.authenticationMethodfield. | 
|   
properties.authenticationDetails.authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationDetails.authenticationMethodDetailfield. | 
|   
properties.authenticationDetails.authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationDetails.authenticationStepDateTimefield. | 
|   
properties.authenticationDetails.authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationDetails.authenticationStepRequirementfield. | 
|   
properties.authenticationDetails.authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationDetails.authenticationStepResultDetailfield. | 
|   
properties.authenticationProcessingDetails.key | read_only_udm.additional.fields.key | The value is directly mapped from the properties.authenticationProcessingDetails.keyfield, prefixed with "properties authenticationProcessingDetails - ". | 
|   
properties.authenticationProcessingDetails.value | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.authenticationProcessingDetails.valuefield. | 
|   
properties.authenticationRequirement | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.authenticationRequirementfield. | 
|   
properties.authenticationRequirementPolicies.detail | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationRequirementPolicies.detailfield. | 
|   
properties.authenticationRequirementPolicies.requirementProvider | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.authenticationRequirementPolicies.requirementProviderfield. | 
|   
properties.clientAppUsed | read_only_udm.principal.application | The value is directly mapped from the properties.clientAppUsedfield. | 
|   
properties.conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.conditionalAccessStatusfield. | 
|   
properties.createdDateTime | read_only_udm.metadata.event_timestamp.seconds | The value is extracted from the properties.createdDateTimefield and converted to seconds since epoch. | 
|   
properties.crossTenantAccessType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.crossTenantAccessTypefield. | 
|   
properties.detectedDateTime | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.detectedDateTimefield. | 
|   
properties.detectionTimingType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.detectionTimingTypefield. | 
|   
properties.homeTenantId | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.homeTenantIdfield. | 
|   
properties.id | read_only_udm.metadata.product_log_id | The value is directly mapped from the properties.idfield. | 
|   
properties.initiatedBy.user.displayName | read_only_udm.principal.user.user_display_name | The value is directly mapped from the properties.initiatedBy.user.displayNamefield. | 
|   
properties.initiatedBy.user.id | read_only_udm.principal.user.windows_sid | The value is directly mapped from the properties.initiatedBy.user.idfield. | 
|   
properties.initiatedBy.user.ipAddress | read_only_udm.principal.ip | The value is directly mapped from the properties.initiatedBy.user.ipAddressfield. | 
|   
properties.initiatedBy.user.ipAddress | read_only_udm.principal.asset.ip | The value is directly mapped from the properties.initiatedBy.user.ipAddressfield. | 
|   
properties.initiatedBy.user.userPrincipalName | read_only_udm.principal.user.userid | The value is directly mapped from the properties.initiatedBy.user.userPrincipalNamefield if it does not match an email address pattern. | 
|   
properties.initiatedBy.user.userPrincipalName | read_only_udm.principal.user.email_addresses | The value is directly mapped from the properties.initiatedBy.user.userPrincipalNamefield if it matches an email address pattern. | 
|   
properties.ipAddress | read_only_udm.principal.ip | The value is extracted from the properties.ipAddressfield using a grok pattern to extract the IP address. | 
|   
properties.ipAddress | read_only_udm.principal.asset.ip | The value is extracted from the properties.ipAddressfield using a grok pattern to extract the IP address. | 
|   
properties.isGuest | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.isGuestfield. | 
|   
properties.isDeleted | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.isDeletedfield. | 
|   
properties.isProcessing | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.isProcessingfield. | 
|   
properties.lastUpdatedDateTime | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.lastUpdatedDateTimefield. | 
|   
properties.location.city | read_only_udm.principal.location.city | The value is directly mapped from the properties.location.cityfield. | 
|   
properties.location.countryOrRegion | read_only_udm.principal.location.country_or_region | The value is directly mapped from the properties.location.countryOrRegionfield. | 
|   
properties.location.geoCoordinates.latitude | read_only_udm.principal.location.region_coordinates.latitude | The value is directly mapped from the properties.location.geoCoordinates.latitudefield and converted to a float. | 
|   
properties.location.geoCoordinates.latitude | read_only_udm.principal.location.region_latitude | The value is directly mapped from the properties.location.geoCoordinates.latitudefield and converted to a float. | 
|   
properties.location.geoCoordinates.longitude | read_only_udm.principal.location.region_coordinates.longitude | The value is directly mapped from the properties.location.geoCoordinates.longitudefield and converted to a float. | 
|   
properties.location.geoCoordinates.longitude | read_only_udm.principal.location.region_longitude | The value is directly mapped from the properties.location.geoCoordinates.longitudefield and converted to a float. | 
|   
properties.location.state | read_only_udm.principal.location.state | The value is directly mapped from the properties.location.statefield. | 
|   
properties.networkLocationDetails.networkNames | read_only_udm.additional.fields.value.string_value | The value is generated by concatenating all values from the properties.networkLocationDetails.networkNamesarray, separated by commas. | 
|   
properties.networkLocationDetails.networkType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.networkLocationDetails.networkTypefield. | 
|   
properties.networkLocationDetails.networkType | read_only_udm.security_result.detection_fields.value | The value is directly mapped from the properties.networkLocationDetails.networkTypefield. | 
|   
properties.resourceServicePrincipalId | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the properties.resourceServicePrincipalIdfield. | 
|   
properties.riskDetail | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskDetailfield. | 
|   
properties.riskEventType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskEventTypefield. | 
|   
properties.riskLastUpdatedDateTime | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskLastUpdatedDateTimefield. | 
|   
properties.riskLevel | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskLevelfield. | 
|   
properties.riskLevelDuringSignIn | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskLevelDuringSignInfield. | 
|   
properties.riskState | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskStatefield. | 
|   
properties.riskType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.riskTypefield. | 
|   
properties.source | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.sourcefield. | 
|   
properties.targetResources.0.id | read_only_udm.target.user.product_object_id | The value is directly mapped from the properties.targetResources.0.idfield. | 
|   
properties.targetResources.modifiedProperties.0.newValue | read_only_udm.target.group.product_object_id | The value is directly mapped from the properties.targetResources.modifiedProperties.0.newValuefield. | 
|   
properties.tokenIssuerType | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the properties.tokenIssuerTypefield. | 
|   
properties.userAgent | read_only_udm.network.http.parsed_user_agent | The value is directly mapped from the properties.userAgentfield and converted to a parsed user agent object. | 
|   
properties.userAgent | read_only_udm.network.http.user_agent | The value is directly mapped from the properties.userAgentfield. | 
|   
properties.userId | read_only_udm.target.user.product_object_id | The value is directly mapped from the properties.userIdfield. | 
|   
properties.userPrincipalName | read_only_udm.target.user.userid | The value is directly mapped from the properties.userPrincipalNamefield if it does not match an email address pattern. | 
|   
properties.userPrincipalName | read_only_udm.target.user.email_addresses | The value is directly mapped from the properties.userPrincipalNamefield if it matches an email address pattern. | 
|   
result | read_only_udm.security_result.action | The value is mapped to "ALLOW" if resultis "success". | 
|   
result | read_only_udm.security_result.action_details | The value is directly mapped from the resultfield ifresultis "success". | 
|   
resultDescription | read_only_udm.security_result.description | The value is directly mapped from the resultDescriptionfield. | 
|   
resultSignature | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the resultSignaturefield. | 
|   
resultType | read_only_udm.security_result.action | The value is mapped to "ALLOW" if resultTypeis "0". | 
|   
resultType | read_only_udm.security_result.rule_id | The value is directly mapped from the resultTypefield if it is not empty and not "0". | 
|   
resultType | read_only_udm.security_result.summary | The value is mapped to "Successful login occurred" if resultTypeis "0" and "Failed login occurred" otherwise. | 
|   
resourceDisplayName | read_only_udm.target.application | The value is directly mapped from the resourceDisplayNamefield. | 
|   
resourceDisplayName | read_only_udm.target.resource.name | The value is directly mapped from the resourceDisplayNamefield. | 
|   
resourceId | read_only_udm.target.resource.id | The value is directly mapped from the resourceIdfield. | 
|   
resourceId | read_only_udm.target.resource.product_object_id | The value is directly mapped from the resourceIdfield. | 
|   
resourceServicePrincipalId | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the resourceServicePrincipalIdfield. | 
|   
riskDetail | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the riskDetailfield. | 
|   
riskEventTypes | read_only_udm.additional.fields.value.string_value | The value is extracted from the riskEventTypesarray and mapped to a string value in theadditional.fieldsarray. | 
|   
riskEventTypes | read_only_udm.additional.fields.value.list_value.values.string_value | The value is directly mapped from each element of the riskEventTypesarray. | 
|   
riskEventTypes_v2 | read_only_udm.additional.fields.value.list_value.values.string_value | The value is directly mapped from each element of the riskEventTypes_v2array. | 
|   
riskLevelAggregated | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the riskLevelAggregatedfield. | 
|   
riskLevelDuringSignIn | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the riskLevelDuringSignInfield. | 
|   
riskState | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the riskStatefield. | 
|   
status.additionalDetails | read_only_udm.security_result.description | The value is directly mapped from the status.additionalDetailsfield. | 
|   
status.errorCode | read_only_udm.security_result.action | The value is mapped to "ALLOW" if status.errorCodeis "0". | 
|   
status.errorCode | read_only_udm.security_result.rule_id | The value is directly mapped from the status.errorCodefield if it is not empty. | 
|   
status.errorCode | read_only_udm.security_result.summary | The value is mapped to "Successful login occurred" if status.errorCodeis "0" and "Failed login occurred" otherwise. | 
|   
status.failureReason | read_only_udm.additional.fields.value.string_value | The value is directly mapped from the status.failureReasonfield. | 
|   
targetResources.displayName | read_only_udm.target.resource.name | The value is directly mapped from the targetResources.displayNamefield. | 
|   
targetResources.id | read_only_udm.target.resource.id | The value is directly mapped from the targetResources.idfield. | 
|   
targetResources.id | read_only_udm.target.resource.product_object_id | The value is directly mapped from the targetResources.idfield. | 
|   
targetResources.modifiedProperties.displayName | read_only_udm.target.resource.attribute.labels.key | The value is directly mapped from the targetResources.modifiedProperties.displayNamefield. | 
|   
targetResources.modifiedProperties.newValue | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the targetResources.modifiedProperties.newValuefield after removing double quotes. | 
|   
targetResources.modifiedProperties.oldValue | read_only_udm.target.resource.attribute.labels.value | The value is directly mapped from the targetResources.modifiedProperties.oldValuefield. | 
|   
targetResources.type | read_only_udm.target.resource.type | The value is directly mapped from the targetResources.typefield. | 
|   
targetResources.userPrincipalName | read_only_udm.target.user.user_display_name | The value is directly mapped from the targetResources.userPrincipalNamefield. | 
|   
tenantId | read_only_udm.metadata.product_deployment_id | The value is directly mapped from the tenantIdfield. | 
|   
time | read_only_udm.metadata.event_timestamp.seconds | The value is extracted from the timefield and converted to seconds since epoch. | 
|   
userAgent | read_only_udm.network.http.parsed_user_agent | The value is directly mapped from the userAgentfield and converted to a parsed user agent object. | 
|   
userAgent | read_only_udm.network.http.user_agent | The value is directly mapped from the userAgentfield. | 
|   
userDisplayName | read_only_udm.target.user.user_display_name | The value is directly mapped from the userDisplayNamefield if it is different fromuserIdand does not match an email address pattern. | 
|   
userPrincipalName | read_only_udm.principal.administrative_domain | The domain part of the email address is extracted from the userPrincipalNamefield using a grok pattern and mapped to theprincipal.administrative_domainfield. | 
|   
userPrincipalName | read_only_udm.target.user.email_addresses | The value is directly mapped from the userPrincipalNamefield if it matches an email address pattern. | 
|   
userPrincipalName | read_only_udm.target.user.userid | The value is directly mapped from the userPrincipalNamefield if it does not match an email address pattern. | 
|   
userId | read_only_udm.target.user.product_object_id | The value is directly mapped from the userIdfield. | 
|   
read_only_udm.metadata.log_type | AZURE_AD | This value is hardcoded in the parser. | 
|   
read_only_udm.metadata.vendor_name | Microsoft | This value is hardcoded in the parser. | 
|   
read_only_udm.metadata.product_name | Azure AD | This value is hardcoded in the parser. | 
|   
read_only_udm.extensions.auth.type | SSO | This value is hardcoded in the parser. | 
Need more help? Get answers from Community members and Google SecOps professionals.

