Collect Microsoft Azure AD logs

Supported in:

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

  1. Sign in to the Azure portal.
  2. Go to Home > App registration, select a registered application or register an application if you haven't created an application yet.
  3. To register an application, in the App registrationsection, click New registration.
  4. In the Namefield, provide the display name for your application.
  5. In the Supported account typessection, select Accounts in this organizational directory only (Single tenant)

    • Redirect URI: Leave blank (not required for service principal authentication).
  6. Click Register.

  7. 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.

  8. Click API permissions.

  9. Click Add a permission, and then select Microsoft Graphin the new pane.

  10. Click Application permissions.

  11. Select AuditLog.Read.All, Directory.Read.All, and SecurityEvents.Read.Allpermissions. Ensure that the permissions are Application permissionsand not Delegated permissions.

  12. 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.

  13. Go to Settings > Manage.

  14. Click Certificates and secrets.

  15. Click New client secret. In the Valuefield, the client secret appears.

  16. 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

  1. Click the Azure Platformpack.
  2. Locate the Azure ADlog type.
  3. 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.
  4. 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 Remarks
about
about
accountEnabled
user.user_authentication_status
user.attribute.labels.value (key: accountEnabled )
If accountEnabled is true , user.user_authentication_status is set to ACTIVE and a label with the key accountEnabled and value true is added. Otherwise, a label with the key accountEnabled and value false is added.
additionalDetails
additional.fields
appOwnerTenantId
target.resource.attribute.labels
authenticationAppDeviceDetails
additional.fields
authenticationContextClassReference
security_result.detection_fields
autonomousSystemNumber
principal.resource.attribute.labels
browser
network.http.user_agent
browser
network.http.user_agent
businessPhones
user.phone_numbers Multiple phone numbers are extracted and mapped as separate entries.
city
user.personal_address.city
clientCredentialType
additional.fields
companyName
user.company_name
country
user.personal_address.country_or_region If country is empty, the value is taken from usageLocation .
createdDateTime
user.attribute.creation_time Converted to a timestamp from the createdDateTime field in the raw log using the RFC 3339 format.
cribl_pipe
additional.fields
crossTenantAccessType
additional.fields
department
user.department Multiple departments are extracted and mapped as separate entries.
deviceDetail.displayName
principal.hostname,principal.asset.hostname
displayName
user.user_display_name
employeeId
user.employee_id If employeeId is empty, the value is taken from extension_employeeNumber .
employeeType
user.attribute.labels.value (key: employeeType ) Mapped from the employeeType field in the raw log and added as a label with the key employeeType .
empmanager-src.accountEnabled
user.user_authentication_status
user.attribute.labels.value (key: accountEnabled )
If manager is empty and empmanager-src.accountEnabled is true , user.user_authentication_status is set to ACTIVE and a label with the key accountEnabled and value true is added. Otherwise, a label with the key accountEnabled and value false is added.
empmanager-src.onPremisesDistinguishedName
manager_role.type If gopher-manager is empty and the OU portion of the manager's distinguished name contains Users , the manager_role.type is set to ADMINISTRATOR . If it contains Service Accounts , the manager_role.type is set to SERVICE_ACCOUNT .
empmanager-src.userPrincipalName
manager_role.type If gopher-manager is empty and empmanager-src.userPrincipalName starts with svc- , the manager_role.type is set to SERVICE_ACCOUNT .
errorCode
security_result.detection_fields
extension_employeeNumber
user.employee_id Mapped to user.employee_id if employeeId is empty.
extension_wfc_AccountingUnitName
event.idm.entity.entity.labels.value (key: extension_wfc_AccountingUnitName ) Mapped from the extension_wfc_AccountingUnitName field in the raw log and added as a label with the key extension_wfc_AccountingUnitName .
extension_wfc_AccountType
event.idm.entity.entity.labels.value (key: wfc_AccountType ) Mapped from the extension_wfc_AccountType field in the raw log and added as a label with the key wfc_AccountType .
extension_wfc_execDescription
event.idm.entity.entity.labels.value (key: extension_wfc_execDescription ) Mapped from the extension_wfc_execDescription field in the raw log and added as a label with the key extension_wfc_execDescription .
extension_wfc_groupDescription
event.idm.entity.entity.labels.value (key: extension_wfc_groupDescription ) Mapped from the extension_wfc_groupDescription field in the raw log and added as a label with the key extension_wfc_groupDescription .
extension_wfc_orgDescription
event.idm.entity.entity.labels.value (key: extension_wfc_orgDescription ) Mapped from the extension_wfc_orgDescription field in the raw log and added as a label with the key extension_wfc_orgDescription .
failureReason
security_result.description
federatedCredentialId
additional.fields
flaggedForReview
additional.fields
givenName
user.first_name
gopher-devices
event.idm.entity.relations Each device in the gopher-devices array is mapped to a separate relation entry. The deviceId is mapped to product_object_id , operatingSystem and operatingSystemVersion are combined to form platform_version model is directly mapped, and createdDateTime is converted to a timestamp and mapped to created_timestamp . The relationship is set to OWNS and the direction is set to UNIDIRECTIONAL .
gopher-groups
event.idm.entity.relations Each group in the gopher-groups array is mapped to a separate relation entry. The id is mapped to product_object_id , and displayName is mapped to group_display_name . The relationship is set to MEMBER and the direction is set to UNIDIRECTIONAL .
gopher-manager.businessPhones
empmanager.phone_numbers Mapped to empmanager.phone_numbers if manager is empty.
gopher-manager.country
empmanager.personal_address.country_or_region Mapped to empmanager.personal_address.country_or_region if manager is empty. If both gopher-manager.country and gopher-manager.usageLocation are empty, the field is left empty.
gopher-manager.department
empmanager.department Mapped to empmanager.department if manager is empty.
gopher-manager.displayName
empmanager.user_display_name Mapped to empmanager.user_display_name if manager is empty.
gopher-manager.employeeId
empmanager.employee_id Mapped to empmanager.employee_id if manager is empty and gopher-manager.employeeId is not empty.
gopher-manager.extension_employeeNumber
empmanager.employee_id Mapped to empmanager.employee_id if manager and gopher-manager.employeeId are empty, and gopher-manager.extension_employeeNumber is not empty.
gopher-manager.givenName
empmanager.first_name Mapped to empmanager.first_name if manager is empty.
gopher-manager.id
empmanager.product_object_id Mapped to empmanager.product_object_id if manager is empty.
gopher-manager.jobTitle
empmanager.title Mapped to empmanager.title if manager is empty.
gopher-manager.mail
empmanager.email_addresses Mapped to empmanager.email_addresses if manager is empty.
gopher-manager.onPremisesImmutableId
user.attribute.labels.value (key: gopher-manager onPremisesImmutableId ) Mapped as a label with the key gopher-manager onPremisesImmutableId .
gopher-manager.onPremisesSamAccountName
empmanager.userid Mapped to empmanager.userid if manager is empty.
gopher-manager.onPremisesSecurityIdentifier
empmanager.windows_sid Mapped to empmanager.windows_sid if manager is empty.
gopher-manager.proxyAddresses
empmanager.email_addresses
empmanager.group_identifiers
If manager is empty, each address in the gopher-manager.proxyAddresses array is mapped to either empmanager.email_addresses or empmanager.group_identifiers based on whether it starts with smtp or SMTP .
gopher-manager.refreshTokensValidFromDateTime
empmanager.attribute.labels.value (key: refreshTokensValidFromDateTime ) Mapped as a label with the key refreshTokensValidFromDateTime if manager is empty.
gopher-manager.streetAddress
empmanager.personal_address.name Mapped to empmanager.personal_address.name if manager is empty.
gopher-manager.surname
empmanager.last_name Mapped to empmanager.last_name if manager is empty.
gopher-manager.usageLocation
user.attribute.labels.value (key: manager_src_usageLocation ) Mapped as a label with the key manager_src_usageLocation .
gopher-manager.userType
empmanager.attribute.roles.name Mapped to empmanager.attribute.roles.name if manager is empty.
homeTenantId
target.resource.attribute.labels
homeTenantName
target.resource.attribute.labels
id
user.product_object_id
identities
user.attribute.labels.value (key: signInType )
user.attribute.labels.value (key: userPrincipalName )
The signInType is mapped as a label with the key signInType . If signInType and userPrincipalName are not empty, they are combined and mapped as a label with the key userPrincipalName .
identity
principal.user.user_display_name
incomingTokenType
additional.fields
initiatedBy.app.displayName
principal.application
initiatedBy.app.servicePrincipalId
principal.resource.product_object_id
initiatedBy.user.homeTenantId
target.resource.attribute.labels
initiatedBy.user.homeTenantName
target.resource.attribute.labels
initiatedBy.user.userType
additional.fields
ipAddressFromResourceProvider
principal.resource.attribute.labels
isTenantRestricted
additional.fields
jobTitle
user.title
loggedByService
observer.application
mail
user.email_addresses If mail starts with svc- , the user_role.type is set to SERVICE_ACCOUNT .
mail
user_role.type If mail starts with svc- , the user_role.type is set to SERVICE_ACCOUNT .
mailNickname
user.attribute.labels.value (key: mailNickname ) Mapped from the mailNickname field in the raw log and added as a label with the key mailNickname .
manager.businessPhones
empmanager.phone_numbers Mapped to empmanager.phone_numbers if gopher-manager is empty.
manager.city
empmanager.personal_address.city Mapped to empmanager.personal_address.city if gopher-manager is empty.
manager.companyName
empmanager.company_name Mapped to empmanager.company_name if gopher-manager is empty.
manager.country
empmanager.personal_address.country_or_region Mapped to empmanager.personal_address.country_or_region if gopher-manager is empty. If both manager.country and manager.usageLocation are empty, the field is left empty.
manager.department
empmanager.department Mapped to empmanager.department if gopher-manager is empty.
manager.displayName
empmanager.user_display_name Mapped to empmanager.user_display_name if gopher-manager is empty.
manager.employeeId
empmanager.employee_id Mapped to empmanager.employee_id if gopher-manager is empty and manager.employeeId is not empty.
manager.extension_employeeNumber
empmanager.employee_id Mapped to empmanager.employee_id if gopher-manager and manager.employeeId are empty, and manager.extension_employeeNumber is not empty.
manager.givenName
empmanager.first_name Mapped to empmanager.first_name if gopher-manager is empty.
manager.id
empmanager.product_object_id Mapped to empmanager.product_object_id if gopher-manager is empty.
manager.jobTitle
empmanager.title Mapped to empmanager.title if gopher-manager is empty.
manager.mail
empmanager.email_addresses Mapped to empmanager.email_addresses if gopher-manager is empty.
manager.onPremisesSamAccountName
empmanager.userid Mapped to empmanager.userid if gopher-manager is empty.
manager.onPremisesSecurityIdentifier
empmanager.windows_sid Mapped to empmanager.windows_sid if gopher-manager is empty.
manager.proxyAddresses
empmanager.email_addresses
empmanager.group_identifiers
If gopher-manager is empty, each address in the manager.proxyAddresses array is mapped to either empmanager.email_addresses or empmanager.group_identifiers based on whether it starts with smtp or SMTP`.
manager.refreshTokensValidFromDateTime
empmanager.attribute.labels.value (key: refreshTokensValidFromDateTime ) Mapped as a label with the key refreshTokensValidFromDateTime if gopher-manager is empty.
manager.state
empmanager.personal_address.state Mapped to empmanager.personal_address.state if gopher-manager is empty.
manager.streetAddress
empmanager.personal_address.name Mapped to empmanager.personal_address.name if gopher-manager is empty.
manager.surname
empmanager.last_name Mapped to empmanager.last_name if gopher-manager is empty.
manager.usageLocation
user.attribute.labels.value (key: manager_src_usageLocation )
empmanager.personal_address.country_or_region
Mapped as a label with the key manager_src_usageLocation . If manager.country is empty, the value is also mapped to empmanager.personal_address.country_or_region .
manager.userType
empmanager.attribute.roles.name Mapped to empmanager.attribute.roles.name if gopher-manager is empty.
mfaDetail.authDetail
principal.user.phone_numbers
onPremisesDistinguishedName
user.attribute.labels.value (key: onPremisesDistinguishedName )
user.attribute.labels.value (key: onPremisesDistinguishedName-OU data )
The full distinguished name is mapped as a label with the key onPremisesDistinguishedName . The OU portion of the distinguished name is extracted and mapped as a label with the key onPremisesDistinguishedName-OU data . If the OU portion contains Admin , the user_role.type is set to ADMINISTRATOR . If it contains Service Accounts , the user_role.type is set to SERVICE_ACCOUNT .
onPremisesDistinguishedName
user_role.type If the OU portion of the distinguished name contains Admin , the user_role.type is set to ADMINISTRATOR . If it contains Service Accounts , the user_role.type is set to SERVICE_ACCOUNT .
onPremisesDomainName
user.group_identifiers
user.attribute.labels.value (key: onPremisesDomainName )
Directly mapped to user.group_identifiers and added as a label with the key onPremisesDomainName .
onPremisesImmutableId
user.attribute.labels.value (key: onPremisesImmutableId ) Mapped from the onPremisesImmutableId field in the raw log and added as a label with the key onPremisesImmutableId .
onPremisesSamAccountName
user.userid
user.attribute.labels.value (key: onPremisesSamAccountName )
Mapped to user.userid if sAMAccountName is empty. Also added as a label with the key onPremisesSamAccountName .
onPremisesSecurityIdentifier
user.windows_sid
operationName
metadata.product_event_type
OrganizationId
principal.resource.product_object_id
originalRequestId
network.session_id
originalTransferMethod
additional.fields
Parser Logic
UDM Mapping Logic
policies.enforcedGrantControls
security_result.detection_fields
processingTimeInMilliseconds
additional.fields
properties.__UDI_RequiredFields_RegionScope
target.location.country_or_region
properties.additionalDetails
additional.fields
properties.alternateSignInName
target.user.userid
properties.appId
principal.user.product_object_id
properties.atContentH
additional.fields
properties.atContentP
additional.fields
properties.authenticationContextClassReferences
additional.fields
properties.C_DeviceId
additional.fields
properties.C_Iat
additional.fields
properties.C_Idtyp
additional.fields
properties.C_Sid
additional.fields
properties.category
security_result.category_details
properties.clientAuthMethod
additional.fields
properties.clientCredentialType
additional.fields
properties.correlationId
security_result.detection_fields
properties.deviceDetail.browser
network.http.user_agent
properties.deviceDetail.deviceId
principal.asset.asset_id
properties.deviceDetail.displayName
principal.hostname,principal.asset.hostname
properties.deviceDetail.operatingSystem
principal.platform_version If operatingSystem starts with Win , Mac , or Lin , then it's mapped to principal.platform .
properties.deviceDetail.trustType
principal.asset.attribute.labels
properties.EventData.AuthenticationPackageName
security_result.about.resource.name
properties.EventData.CallerProcessId
principal.process.pid
properties.EventData.CallerProcessName
principal.process.file.full_path
properties.EventData.CertIssuerName
additional.fields
properties.EventData.CertSerialNumber
about.artifact.last_https_certificate.serial_number
properties.EventData.CertThumbprint
additional.fields
properties.EventData.HandleId
target.resource.attribute.labels
properties.EventData.ImpersonationLevel
additional.fields
properties.EventData.IpAddress
principal.ip
principal.asset.ip
properties.EventData.IpPort
principal.port
properties.EventData.KeyLength
additional.fields
properties.EventData.LmPackageName
target.resource.attribute.labels
properties.EventData.LogonGuid
security_result.detection_fields
properties.EventData.LogonProcessName
target.process.file.names
properties.EventData.LogonType
extensions.auth.auth_details
properties.EventData.NewSd
security_result.detection_fields
properties.EventData.ObjectName
target.resource.name
properties.EventData.ObjectServer
target.resource.attribute.labels
properties.EventData.ObjectType
target.resource.resource_subtype
properties.EventData.OldSd
security_result.detection_fields
properties.EventData.PreAuthType
extensions.auth.mechanism
properties.EventData.ProcessId
target.process.pid
properties.EventData.ProcessName"
target.process.file.full_path
properties.EventData.ServiceName
target.application
properties.EventData.ServiceSid
target.resource.user.windows_sid
properties.EventData.Source
principal.ip
principal.asset.ip
properties.EventData.Status
security_result.detection_fields
properties.EventData.SubjectDomainName
principal.administrative_domain
properties.EventData.SubjectLogonId
principal.resource.attribute.labels
properties.EventData.SubjectUserName
principal.user.userid
properties.EventData.SubjectUserSid
principal.user.windows_sid
properties.EventData.TargetDomainName
target.administrative_domain
properties.EventData.TargetLogonId
target.resource.attribute.labels
properties.EventData.TargetSid
target.user.windows_sid
properties.EventData.TargetUserName
target.user.userid
properties.EventData.TargetUserSid
target.user.windows_sid
properties.EventData.TicketEncryptionType
security_result.detection_fields
properties.EventData.TicketOptions
security_result.detection_fields"
properties.EventData.TransmittedServices
security_result.detection_fields
properties.EventData.WorkstationName
target.hostname
target.asset.hostname
properties.flaggedForReview
additional.fields
properties.homeTenantId
target.resource.attribute.labels
properties.incomingTokenType
additional.fields
properties.initiatedBy.app.displayName
principal.user.user_display_name
properties.initiatedBy.user.displayName
principal.user.user_display_name
properties.initiatedBy.user.id
principal.user.product_object_id
properties.initiatedBy.user.ipAddress
principal.ip,principal.asset.ip
properties.ipAddressFromResourceProvider
principal.resource.attribute.labels
properties.isInteractive
additional.fields
properties.isTenantRestricted
additional.fields
properties.isThroughGlobalSecureAccess
additional.fields
properties.location.geoCoordinates.altitude
additional.fields
properties.loggedByService
observer.application
properties.mfaDetail.authDetail
principal.user.phone_numbers
properties.operationType
target.resource.attribute.labels
properties.originalRequestId
network.session_id
properties.originalTransferMethod
additional.fields
properties.processingTimeInMilliseconds
additional.fields
properties.RecordId
metadata.product_log_id
properties.requestId
security_result.detection_fields
properties.requestMethod
network.http.method
properties.requestUri
network.http.referral_url
properties.resourceDisplayName
target.resource.name
properties.resourceId
target.resource.attribute.labels
properties.resourceOwnerTenantId
target.resource.attribute.labels
properties.resourceTenantId
target.resource.attribute.labels
properties.responseSizeBytes
network.received_bytes
properties.responseStatusCode
network.http.response_code
properties.resultReason
additional.fields
security_result.summary
properties.resultType
additional.fields
properties.riskDetail
security_result.detection_fields
properties.riskEventType
security_result.detection_fields
properties.riskLastUpdatedDateTime
security_result.detection_fields
properties.riskLevel
security_result.detection_fields
properties.riskLevelAggregated
security_result.detection_fields
properties.riskLevelDuringSignIn
security_result.detection_fields
properties.riskState
security_result.detection_fields
properties.riskType
security_result.detection_fields
properties.rngcStatus
additional.fields
properties.roles
principal.user.attribute.roles
properties.scopes
security_result.detection_fields
properties.servicePrincipalCredentialKeyId
additional.fields
properties.sessionLifetimePolicies
security_result.detection_fields
properties.signInActivityId
additional.fields
properties.SignInBondData.DeviceDetails.DeviceTrustType
principal.asset.attribute.labels
properties.SignInBondData.DeviceDetails.IsCompliant
security_result.rule_labels
properties.SignInBondData.DeviceDetails.IsManaged
principal.asset.attribute.labels
properties.SignInBondData.DisplayDetails.AttemptedUsername
principal.user.email_addresses
properties.SignInBondData.DisplayDetails.ProxyRestrictionTargetTenantName
additional.fields
properties.SignInBondData.DisplayDetails.ResourceDisplayName
target.resource.name
properties.SignInBondData.LocationDetails.IPChain
target.ip
properties.SignInBondData.LocationDetails.Latitude
additional.fields
properties.SignInBondData.LocationDetails.Longitude
additional.fields
properties.SignInBondData.MfaDetails
additional.fields
properties.SignInBondData.ProtocolDetails.AuthenticationMethodsUsed
extensions.auth.auth_details
properties.SignInBondData.ProtocolDetails.DomainHintPresent
additional.fields
properties.SignInBondData.ProtocolDetails.IsInteractive
additional.fields
properties.SignInBondData.ProtocolDetails.LoginHintPresent
additional.fields
properties.SignInBondData.ProtocolDetails.NetworkLocation
additional.fields"
properties.SignInBondData.ProtocolDetails.Protocol
security_result.detection_fields If properties.SignInBondData.ProtocolDetails.Protocol == WSTrust then it's mapped to security_result.detection_fields , else it's mapped to network.application_protocol .
properties.SignInBondData.RamDetails.RamRecommendedAction
additional.fields
properties.SignInBondData.RamDetails.RamRecommender
additional.fields
properties.signInTokenProtectionStatus
additional.fields
properties.ssoExtensionVersion
additional.fields
properties.status.errorCode
security_result.detection_fields
security_result.action
properties.targetResources
target.resource.attribute.labels
properties.tenantGeo
Geolocation.country_or_region
properties.tokenIssuerName
additional.fields
properties.tokenProtectionStatusDetails.signInSessionStatus
additional.fields
properties.tokenProtectionStatusDetails.signInSessionStatusCode
additional.fields
properties.userDisplayName
principal.user.user_display_name
properties.wids
additional.fields
proxyAddresses
user.email_addresses
user.group_identifiers
Each address in the proxyAddresses array is mapped to either user.email_addresses or user.group_identifiers based on whether it starts with smtp or SMTP . If the address starts with smtp or SMTP , the smtp: or SMTP: prefix is removed and the remaining email address is extracted and mapped to user.email_addresses .
record.CorrelationId
additional.fields
record.CrossTenantAccessType
additional.fields
record.DeviceDetail.deviceId
network.session_id
record.DeviceDetail.operatingSystem
principal.platform_version If operatingSystem starts with Win , Mac , or Lin , then it's mapped to principal.platform .
record.IsInteractive
additional.fields
record.level
security_result.severity_details If record_level is in ["INFORMATION", "INFORMATIONAL", "0", "4", "WARNING", "1", "3","ERROR", "2","CRITICAL"] , then it's mapped to security_result.severity .
record.location
principal.location.name
record.properties.appServicePrincipalId
additional.fields
record.properties.authenticationProtocol
additional.fields
record.properties.autonomousSystemNumber
principal.resource.attribute.labels
record.properties.C_DeviceId
principal.asset.asset_id
record.properties.crossTenantAccessType
additional.fields
record.properties.deviceDetail.isCompliant
security_result.rule_labels
record.properties.deviceDetail.isManaged
principal.asset.attribute.labels
record.properties.deviceDetail.trustType
principal.asset.attribute.labels
record.properties.flaggedForReview
additional.fields
record.properties.incomingTokenType
additional.fields
record.properties.isInteractive
extensions.auth.mechanism
record.properties.isTenantRestricted
additional.fields
record.properties.isThroughGlobalSecureAccess
additional.fields
record.properties.location
target.location.name
record.properties.originalTransferMethod
additional.fields
record.properties.resourceDisplayName
principal.resource.name
record.properties.riskDetail
security_result.detection_fields
record.properties.riskLevelAggregated
security_result.detection_fields
record.properties.riskLevelDuringSignIn
security_result.detection_fields
record.properties.riskState
security_result.detection_fields
record.properties.rngcStatus
additional.fields
record.properties.roles
principal.user.attribute.roles
record.properties.scopes
security_result.detection_fields
record.properties.servicePrincipalId
target.resource.attribute.labels
record.properties.servicePrincipalId
principal.user.userid
record.properties.signInTokenProtectionStatus
additional.fields
record.properties.ssoExtensionVersion
additional.fields
record.properties.status.additionalDetails
additional.fields
record.properties.tokenProtectionStatusDetails.signInSessionStatus
additional.fields
record.properties.tokenProtectionStatusDetails.signInSessionStatusCode
additional.fields
record.RiskDetail
security_result.detection_fields
record.RiskEventTypes
security_result.detection_fields
record.RiskLevelAggregated
security_result.detection_fields
record.RiskLevelDuringSignIn
security_result.detection_fields
record.RiskState
security_result.detection_fields
refreshTokensValidFromDateTime
user.attribute.labels.value (key: refreshTokensValidFromDateTime ) Mapped from the refreshTokensValidFromDateTime field in the raw log and added as a label with the key refreshTokensValidFromDateTime .
resourceOwnerTenantId
target.resource.attribute.labels
resourceTenantId
target.resource.attribute.labels
resultDescription
security_result.description
resultReason
additional.fields
resultType
additional.fields
riskDetail
security_result.detection_fields
riskLevelAggregated
security_result.detection_fields
riskLevelDuringSignIn
security_result.detection_fields
riskState
security_result.detection_fields
sAMAccountName
user.userid
servicePrincipalCredentialKeyId
additional.fields
servicePrincipalCredentialThumbprint
additional.fields
servicePrincipalId
target.resource.attribute.labels
servicePrincipalName
additional.fields
sessionId
network.session_id
signInIdentifier
target.user.userid
signInIdentifierType
additional.fields
signInTokenProtectionStatus
additional.fields
state
user.personal_address.state
status.additionalDetails
additional.fields
streetAddress
user.personal_address.name
surname
user.last_name
targets.modifiedProperties
target.resource.attribute.labels
tokenIssuerName
additional.fields
tokenIssuerType
additional.fields
tokenProtectionStatusDetails.signInSessionStatus
security_result.detection_fields
uniqueTokenIdentifier
additional.fields
usageLocation
user.personal_address.country_or_region If country is empty, the value is mapped to user.personal_address.country_or_region .
userDisplayName
principal.user.user_display_name
userId
principal.user.product_object_id
userPrincipalName
user.email_addresses If userPrincipalName starts with svc- , the user_role.type is set to SERVICE_ACCOUNT .
userPrincipalName
user_role.type If userPrincipalName starts with svc- , the user_role.type is set to SERVICE_ACCOUNT .
userType
additional.fields
N/A
event.idm.entity.metadata.vendor_name Set to Microsoft .
N/A
event.idm.entity.metadata.product_name Set to Azure Active Directory .
N/A
event.idm.entity.metadata.entity_type Set to USER .
N/A
event.idm.entity.metadata.collected_timestamp Set to the create_time field from the raw log.

UDM mapping delta reference

On January 1, 2026, Google SecOps released a new version of the Azure AD parser, which includes significant changes to the mapping of Azure AD log fields to UDM fields and changes to the mapping of event types.

Log-field mapping delta

The following table lists the mapping delta for Azure AD log-to-UDM fields exposed prior to January 1, 2026 and subsequently (listed in the Old mappingand Current mappingcolumns respectively):

Log field Old mapping Current mapping
additionalDetails
security_result.description additional.fields
browser
principal.resource.attribute.labels network.http.user_agent
browser
principal.resource.attribute.labels network.http.user_agent
deviceDetail.displayName
principal.asset.hardware principal.hostname,principal.asset.hostname
errorCode
security_result.rule_id security_result.detection_fields
failureReason
additional.fields security_result.description
identity
target.user.user_display_name principal.user.user_display_name
loggedByService
target.application observer.application
operationName
additional.fields metadata.product_event_type
OrganizationId
principal.resource.id principal.resource.product_object_id
properties.homeTenantId
additional.fields target.resource.attribute.labels
properties.initiatedBy.user.id
principal.user.windows_sid principal.user.product_object_id
properties.resourceOwnerTenantId
additional.fields target.resource.attribute.labels
properties.riskDetail
additional.fields security_result.detection_fields
properties.riskEventType
additional.fields security_result.detection_fields
properties.riskLastUpdatedDateTime
additional.fields security_result.detection_fields
properties.riskLevel
additional.fields security_result.detection_fields
properties.riskLevelAggregated
additional.fields security_result.detection_fields
properties.riskLevelDuringSignIn
additional.fields security_result.detection_fields
properties.riskState
additional.fields security_result.detection_fields
properties.riskType
additional.fields security_result.detection_fields
properties.userDisplayName
target.user.user_display_name principal.user.user_display_name
record.CorrelationId
metadata.product_log_id additional.fields
record.properties.C_DeviceId
additional.fields principal.asset.asset_id
record.properties.resourceDisplayName
target.resource.attribute.labels principal.resource.name
record.properties.riskDetail
additional.fields security_result.detection_fields
record.properties.riskLevelAggregated
additional.fields security_result.detection_fields
record.properties.riskLevelDuringSignIn
additional.fields security_result.detection_fields
record.properties.riskState
additional.fields security_result.detection_fields
record.properties.roles
target.user.role_name principal.user.attribute.roles
record.properties.servicePrincipalId
additional.fields target.resource.attribute.labels
record.properties.servicePrincipalId
additional.fields principal.user.userid
record.RiskDetail
target.resource.attribute.labels security_result.detection_fields
record.RiskEventTypes
target.resource.attribute.labels security_result.detection_fields
record.RiskLevelAggregated
target.resource.attribute.labels security_result.detection_fields
record.RiskState
target.resource.attribute.labels security_result.detection_fields
resultType
security_result.rule_id additional.fields
riskDetail
additional.fields security_result.detection_fields
riskLevelAggregated
additional.fields security_result.detection_fields
riskLevelDuringSignIn
additional.fields security_result.detection_fields
riskState
additional.fields security_result.detection_fields
riskState
additional.fields security_result.detection_fields
status.additionalDetails
security_result.description additional.fields
userDisplayName
target.user.user_display_name principal.user.user_display_name
userId
target.user.product_object_id principal.user.product_object_id

Event-type mapping delta

The following table lists the delta for the handling of Azure AD event types prior to January 1, 2026 and subsequently (listed in the Old event_typeand Current event-typecolumns respectively):

Event ID from log Old event_type Current event_type Remark
has_resource = true
GENERIC_EVENT USER_RESOURCE_ACCESS The event type maps to USER_RESOURCE_ACCESS for cases where the event pertains to a resource (indicated by has_resource = true ).
operationName = Add member to group
USER_CHANGE_PERMISSIONS GROUP_MODIFICATION The event type maps to GROUP_MODIFICATION for operations specifically involving adding a member to a group (where operationName = Add member to group ).

Need more help? Get answers from Community members and Google SecOps professionals.

Create a Mobile Website
View Site in Mobile | Classic
Share by: