Collecter les journaux Microsoft Azure AD
Ce document explique comment collecter les journaux Microsoft Azure Active Directory (AD) en configurant un flux Google Security Operations.
Azure Active Directory (AZURE_AD) s'appelle désormais Microsoft Entra ID. Les journaux d'audit Azure AD (AZURE_AD_AUDIT) sont désormais des journaux d'audit Microsoft Entra ID.
Pour en savoir plus, consultez Ingestion de données dans Google Security Operations.
Une étiquette d'ingestion identifie l'analyseur qui normalise les données de journaux brutes au format UDM structuré.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Un abonnement Azure auquel vous pouvez vous connecter
- Un rôle d'administrateur général ou d'administrateur Azure AD
- Un locataire Azure AD dans Azure
Configurer Azure AD
- Connectez-vous au portail Azure.
- Accédez à Accueil > Enregistrement de l'application, puis sélectionnez une application enregistrée ou enregistrez-en une si vous n'en avez pas encore créé.
- Pour enregistrer une application, dans la section Enregistrement de l'application, cliquez sur Nouvel enregistrement.
- Dans le champ Nom, indiquez le nom à afficher de votre application.
Dans la section Supported account types (Types de comptes compatibles), sélectionnez Accounts in this organizational directory only (Single tenant) (Comptes dans cet annuaire organisationnel uniquement (locataire unique)).
- URI de redirection : laissez ce champ vide (il n'est pas obligatoire pour l'authentification du compte principal de service).
Cliquez sur S'inscrire.
Accédez à la page Overview (Vue d'ensemble), puis copiez l'ID (client) de l'application et l'ID (de locataire) de l'annuaire, qui sont nécessaires pour configurer le flux Google Security Operations.
Cliquez sur Autorisations des API.
Cliquez sur Ajouter une autorisation, puis sélectionnez Microsoft Graph dans le nouveau volet.
Cliquez sur Autorisations de l'application.
Sélectionnez les autorisations AuditLog.Read.All, Directory.Read.All et SecurityEvents.Read.All. Assurez-vous que les autorisations sont des autorisations d'application et non des autorisations déléguées.
Cliquez sur Accorder le consentement administrateur pour l'annuaire par défaut. Les applications sont autorisées à appeler des API lorsqu'elles reçoivent des autorisations de la part des utilisateurs ou des administrateurs dans le cadre du processus de consentement.
Accédez à Paramètres > Gérer.
Cliquez sur Certificats et codes secrets.
Cliquez sur Nouvelle clé secrète client. Le code secret du client s'affiche dans le champ Valeur.
Copiez la valeur du code secret du client. La valeur n'est affichée qu'au moment de la création. Elle est requise pour l'enregistrement de l'application Azure et pour configurer le flux Google Security Operations.
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux > Ajouter un flux
- Plate-forme de contenu> Packs de contenu> Premiers pas
Configurer le flux Microsoft Entra ID (Azure AD)
- Cliquez sur le pack Plate-forme Azure.
- Recherchez le type de journal Azure AD.
Indiquez les valeurs des champs suivants :
- Type de source : API tierce (recommandé)
- ID client OAUTH : spécifiez l'ID client que vous avez obtenu précédemment.
- Code secret du client OAUTH : spécifiez le code secret du client que vous avez obtenu précédemment.
- ID de locataire : spécifiez l'ID de locataire que vous avez obtenu précédemment.
- Chemin d'accès complet à l'API : URL du point de terminaison de l'API REST Microsoft Graph.
- Point de terminaison d'authentification de l'API : point de terminaison d'authentification Microsoft Active Directory.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Espace de noms de l'élément : espace de noms associé au flux.
- Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
Cliquez sur Créer un flux.
Pour en savoir plus sur la configuration de plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.
Pour en savoir plus sur les flux Google Security Operations, consultez la documentation sur les flux Google Security Operations. Pour en savoir plus sur les exigences de chaque type de flux, consultez Configuration des flux par type.
Référence du mappage de champs
Ce code d'analyseur transforme les journaux Azure AD bruts au format JSON en un modèle de données unifié (UDM). Il normalise d'abord les données en supprimant les champs inutiles, puis extrait les informations pertinentes telles que les détails de l'utilisateur, les codes temporels et les spécificités de l'événement, en les mappant aux champs UDM correspondants pour une représentation et une analyse cohérentes.
Table de mappage UDM
| Champ du journal | Mappage UDM | Remarques |
|---|---|---|
about |
about |
|
accountEnabled |
user.user_authentication_statususer.attribute.labels.value (clé : accountEnabled) |
Si accountEnabled est défini sur true, user.user_authentication_status est défini sur ACTIVE et un libellé avec la clé accountEnabled et la valeur true est ajouté. Sinon, un libellé avec la clé accountEnabled et la valeur false est ajouté. |
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 |
Plusieurs numéros de téléphone sont extraits et mappés en tant qu'entrées distinctes. |
city |
user.personal_address.city |
|
clientCredentialType |
additional.fields |
|
companyName |
user.company_name |
|
country |
user.personal_address.country_or_region |
Si country est vide, la valeur est extraite de usageLocation. |
createdDateTime |
user.attribute.creation_time |
Converti en code temporel à partir du champ createdDateTime du journal brut au format RFC 3339. |
cribl_pipe |
additional.fields |
|
crossTenantAccessType |
additional.fields |
|
department |
user.department |
Plusieurs services sont extraits et mappés en tant qu'entrées distinctes. |
deviceDetail.displayName |
principal.hostname,principal.asset.hostname |
|
displayName |
user.user_display_name |
|
employeeId |
user.employee_id |
Si employeeId est vide, la valeur est extraite de extension_employeeNumber. |
employeeType |
user.attribute.labels.value (clé : employeeType) |
Mappé à partir du champ employeeType dans le journal brut et ajouté en tant que libellé avec la clé employeeType. |
empmanager-src.accountEnabled |
user.user_authentication_statususer.attribute.labels.value (clé : accountEnabled) |
Si manager est vide et que empmanager-src.accountEnabled est défini sur true, user.user_authentication_status est défini sur ACTIVE et un libellé avec la clé accountEnabled et la valeur true est ajouté. Sinon, un libellé avec la clé accountEnabled et la valeur false est ajouté. |
empmanager-src.onPremisesDistinguishedName |
manager_role.type |
Si gopher-manager est vide et que la partie UO du nom distinctif du responsable contient Users, manager_role.type est défini sur ADMINISTRATOR. Si elle contient Service Accounts, manager_role.type est défini sur SERVICE_ACCOUNT. |
empmanager-src.userPrincipalName |
manager_role.type |
Si gopher-manager est vide et que empmanager-src.userPrincipalName commence par svc-, manager_role.type est défini sur SERVICE_ACCOUNT. |
errorCode |
security_result.detection_fields |
|
extension_employeeNumber |
user.employee_id |
Mappé sur user.employee_id si employeeId est vide. |
extension_wfc_AccountingUnitName |
event.idm.entity.entity.labels.value (clé : extension_wfc_AccountingUnitName) |
Mappé à partir du champ extension_wfc_AccountingUnitName dans le journal brut et ajouté en tant que libellé avec la clé extension_wfc_AccountingUnitName. |
extension_wfc_AccountType |
event.idm.entity.entity.labels.value (clé : wfc_AccountType) |
Mappé à partir du champ extension_wfc_AccountType dans le journal brut et ajouté en tant que libellé avec la clé wfc_AccountType. |
extension_wfc_execDescription |
event.idm.entity.entity.labels.value (clé : extension_wfc_execDescription) |
Mappé à partir du champ extension_wfc_execDescription dans le journal brut et ajouté en tant que libellé avec la clé extension_wfc_execDescription. |
extension_wfc_groupDescription |
event.idm.entity.entity.labels.value (clé : extension_wfc_groupDescription) |
Mappé à partir du champ extension_wfc_groupDescription dans le journal brut et ajouté en tant que libellé avec la clé extension_wfc_groupDescription. |
extension_wfc_orgDescription |
event.idm.entity.entity.labels.value (clé : extension_wfc_orgDescription) |
Mappé à partir du champ extension_wfc_orgDescription dans le journal brut et ajouté en tant que libellé avec la clé extension_wfc_orgDescription. |
failureReason |
security_result.description |
|
federatedCredentialId |
additional.fields |
|
flaggedForReview |
additional.fields |
|
givenName |
user.first_name |
|
gopher-devices |
event.idm.entity.relations |
Chaque appareil du tableau gopher-devices est mappé à une entrée de relation distincte. deviceId est mappé sur product_object_id, operatingSystem et operatingSystemVersion sont combinés pour former le modèle platform_version qui est directement mappé, et createdDateTime est converti en code temporel et mappé sur created_timestamp. La relation est définie sur OWNS et la direction sur UNIDIRECTIONAL. |
gopher-groups |
event.idm.entity.relations |
Chaque groupe du tableau gopher-groups est mappé à une entrée de relation distincte. id est mappé sur product_object_id et displayName est mappé sur group_display_name. La relation est définie sur MEMBER et la direction sur UNIDIRECTIONAL. |
gopher-manager.businessPhones |
empmanager.phone_numbers |
Mappé sur empmanager.phone_numbers si manager est vide. |
gopher-manager.country |
empmanager.personal_address.country_or_region |
Mappé sur empmanager.personal_address.country_or_region si manager est vide. Si gopher-manager.country et gopher-manager.usageLocation sont tous les deux vides, le champ reste vide. |
gopher-manager.department |
empmanager.department |
Mappé sur empmanager.department si manager est vide. |
gopher-manager.displayName |
empmanager.user_display_name |
Mappé sur empmanager.user_display_name si manager est vide. |
gopher-manager.employeeId |
empmanager.employee_id |
Mappé sur empmanager.employee_id si manager est vide et gopher-manager.employeeId n'est pas vide. |
gopher-manager.extension_employeeNumber |
empmanager.employee_id |
Mappé sur empmanager.employee_id si manager et gopher-manager.employeeId sont vides, et gopher-manager.extension_employeeNumber n'est pas vide. |
gopher-manager.givenName |
empmanager.first_name |
Mappé sur empmanager.first_name si manager est vide. |
gopher-manager.id |
empmanager.product_object_id |
Mappé sur empmanager.product_object_id si manager est vide. |
gopher-manager.jobTitle |
empmanager.title |
Mappé sur empmanager.title si manager est vide. |
gopher-manager.mail |
empmanager.email_addresses |
Mappé sur empmanager.email_addresses si manager est vide. |
gopher-manager.onPremisesImmutableId |
user.attribute.labels.value (clé : gopher-manager onPremisesImmutableId) |
Mappé en tant que libellé avec la clé gopher-manager onPremisesImmutableId. |
gopher-manager.onPremisesSamAccountName |
empmanager.userid |
Mappé sur empmanager.userid si manager est vide. |
gopher-manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Mappé sur empmanager.windows_sid si manager est vide. |
gopher-manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Si manager est vide, chaque adresse du tableau gopher-manager.proxyAddresses est mappée sur empmanager.email_addresses ou empmanager.group_identifiers selon qu'elle commence par smtp ou SMTP. |
gopher-manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (clé : refreshTokensValidFromDateTime) |
Mappé en tant que libellé avec la clé refreshTokensValidFromDateTime si manager est vide. |
gopher-manager.streetAddress |
empmanager.personal_address.name |
Mappé sur empmanager.personal_address.name si manager est vide. |
gopher-manager.surname |
empmanager.last_name |
Mappé sur empmanager.last_name si manager est vide. |
gopher-manager.usageLocation |
user.attribute.labels.value (clé : manager_src_usageLocation) |
Mappé en tant que libellé avec la clé manager_src_usageLocation. |
gopher-manager.userType |
empmanager.attribute.roles.name |
Mappé sur empmanager.attribute.roles.name si manager est vide. |
homeTenantId |
target.resource.attribute.labels |
|
homeTenantName |
target.resource.attribute.labels |
|
id |
user.product_object_id |
|
identities |
user.attribute.labels.value (clé : signInType)user.attribute.labels.value (clé : userPrincipalName) |
Le signInType est mappé en tant que libellé avec la clé signInType. Si signInType et userPrincipalName ne sont pas vides, ils sont combinés et mappés en tant que libellé avec la clé 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 |
Si mail commence par svc-, user_role.type est défini sur SERVICE_ACCOUNT. |
mail |
user_role.type |
Si mail commence par svc-, user_role.type est défini sur SERVICE_ACCOUNT. |
mailNickname |
user.attribute.labels.value (clé : mailNickname) |
Mappé à partir du champ mailNickname dans le journal brut et ajouté en tant que libellé avec la clé mailNickname. |
manager.businessPhones |
empmanager.phone_numbers |
Mappé sur empmanager.phone_numbers si gopher-manager est vide. |
manager.city |
empmanager.personal_address.city |
Mappé sur empmanager.personal_address.city si gopher-manager est vide. |
manager.companyName |
empmanager.company_name |
Mappé sur empmanager.company_name si gopher-manager est vide. |
manager.country |
empmanager.personal_address.country_or_region |
Mappé sur empmanager.personal_address.country_or_region si gopher-manager est vide. Si manager.country et manager.usageLocation sont tous les deux vides, le champ reste vide. |
manager.department |
empmanager.department |
Mappé sur empmanager.department si gopher-manager est vide. |
manager.displayName |
empmanager.user_display_name |
Mappé sur empmanager.user_display_name si gopher-manager est vide. |
manager.employeeId |
empmanager.employee_id |
Mappé sur empmanager.employee_id si gopher-manager est vide et manager.employeeId n'est pas vide. |
manager.extension_employeeNumber |
empmanager.employee_id |
Mappé sur empmanager.employee_id si gopher-manager et manager.employeeId sont vides, et manager.extension_employeeNumber n'est pas vide. |
manager.givenName |
empmanager.first_name |
Mappé sur empmanager.first_name si gopher-manager est vide. |
manager.id |
empmanager.product_object_id |
Mappé sur empmanager.product_object_id si gopher-manager est vide. |
manager.jobTitle |
empmanager.title |
Mappé sur empmanager.title si gopher-manager est vide. |
manager.mail |
empmanager.email_addresses |
Mappé sur empmanager.email_addresses si gopher-manager est vide. |
manager.onPremisesSamAccountName |
empmanager.userid |
Mappé sur empmanager.userid si gopher-manager est vide. |
manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Mappé sur empmanager.windows_sid si gopher-manager est vide. |
manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Si gopher-manager est vide, chaque adresse du tableau manager.proxyAddresses est mappée sur empmanager.email_addresses ou empmanager.group_identifiers based on whether it starts withsmtporSMTP`. |
manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (clé : refreshTokensValidFromDateTime) |
Mappé en tant que libellé avec la clé refreshTokensValidFromDateTime si gopher-manager est vide. |
manager.state |
empmanager.personal_address.state |
Mappé sur empmanager.personal_address.state si gopher-manager est vide. |
manager.streetAddress |
empmanager.personal_address.name |
Mappé sur empmanager.personal_address.name si gopher-manager est vide. |
manager.surname |
empmanager.last_name |
Mappé sur empmanager.last_name si gopher-manager est vide. |
manager.usageLocation |
user.attribute.labels.value (clé : manager_src_usageLocation)empmanager.personal_address.country_or_region |
Mappé en tant que libellé avec la clé manager_src_usageLocation. Si manager.country est vide, la valeur est également mappée sur empmanager.personal_address.country_or_region. |
manager.userType |
empmanager.attribute.roles.name |
Mappé sur empmanager.attribute.roles.name si gopher-manager est vide. |
mfaDetail.authDetail |
principal.user.phone_numbers |
|
onPremisesDistinguishedName |
user.attribute.labels.value (clé : onPremisesDistinguishedName)user.attribute.labels.value (clé : onPremisesDistinguishedName-OU data) |
Le nom distinctif complet est mappé en tant que libellé avec la clé onPremisesDistinguishedName. La partie OU du nom unique est extraite et mappée en tant que libellé avec la clé onPremisesDistinguishedName-OU data. Si la partie OU contient Admin, user_role.type est défini sur ADMINISTRATOR. Si elle contient Service Accounts, user_role.type est défini sur SERVICE_ACCOUNT. |
onPremisesDistinguishedName |
user_role.type |
Si la partie OU du nom unique contient Admin, user_role.type est défini sur ADMINISTRATOR. Si elle contient Service Accounts, user_role.type est défini sur SERVICE_ACCOUNT. |
onPremisesDomainName |
user.group_identifiersuser.attribute.labels.value (clé : onPremisesDomainName) |
Directement mappé sur user.group_identifiers et ajouté en tant que libellé avec la clé onPremisesDomainName. |
onPremisesImmutableId |
user.attribute.labels.value (clé : onPremisesImmutableId) |
Mappé à partir du champ onPremisesImmutableId dans le journal brut et ajouté en tant que libellé avec la clé onPremisesImmutableId. |
onPremisesSamAccountName |
user.useriduser.attribute.labels.value (clé : onPremisesSamAccountName) |
Mappé sur user.userid si sAMAccountName est vide. Elle est également ajoutée en tant que libellé avec la clé 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 |
Logique |
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 |
Si operatingSystem commence par Win, Mac ou Lin, il est mappé sur 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.ipprincipal.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.ipprincipal.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.hostnametarget.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.fieldssecurity_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 |
Si properties.SignInBondData.ProtocolDetails.Protocol == WSTrust, il est mappé sur security_result.detection_fields, sinon il est mappé sur 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_fieldssecurity_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_addressesuser.group_identifiers |
Chaque adresse du tableau proxyAddresses est associée à user.email_addresses ou user.group_identifiers selon qu'elle commence par smtp ou SMTP. Si l'adresse commence par smtp ou SMTP, le préfixe smtp: ou SMTP: est supprimé, et l'adresse e-mail restante est extraite et mappée sur user.email_addresses. |
record.CorrelationId |
additional.fields |
|
record.CrossTenantAccessType |
additional.fields |
|
record.DeviceDetail.deviceId |
network.session_id |
|
record.DeviceDetail.operatingSystem |
principal.platform_version |
Si operatingSystem commence par Win, Mac ou Lin, il est mappé sur principal.platform. |
record.IsInteractive |
additional.fields |
|
record.level |
security_result.severity_details |
Si record_level se trouve dans ["INFORMATION", "INFORMATIONAL", "0", "4", "WARNING", "1", "3","ERROR", "2","CRITICAL"], il est mappé sur 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 (clé : refreshTokensValidFromDateTime) |
Mappé à partir du champ refreshTokensValidFromDateTime dans le journal brut et ajouté en tant que libellé avec la clé 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 |
Si country est vide, la valeur est mappée sur user.personal_address.country_or_region. |
userDisplayName |
principal.user.user_display_name |
|
userId |
principal.user.product_object_id |
|
userPrincipalName |
user.email_addresses |
Si userPrincipalName commence par svc-, user_role.type est défini sur SERVICE_ACCOUNT. |
userPrincipalName |
user_role.type |
Si userPrincipalName commence par svc-, user_role.type est défini sur SERVICE_ACCOUNT. |
userType |
additional.fields |
|
| N/A | event.idm.entity.metadata.vendor_name |
Variable définie sur Microsoft. |
| N/A | event.idm.entity.metadata.product_name |
Variable définie sur Azure Active Directory. |
| N/A | event.idm.entity.metadata.entity_type |
Variable définie sur USER. |
| N/A | event.idm.entity.metadata.collected_timestamp |
Définissez le champ create_time à partir du journal brut. |
Référence delta du mappage UDM
Le 1er janvier 2026, Google SecOps a publié une nouvelle version du parseur Azure AD, qui inclut des modifications importantes concernant le mappage des champs de journaux Azure AD vers les champs UDM et le mappage des types d'événements.
Delta de mappage entre les champs de journaux
Le tableau suivant répertorie le delta de mappage pour les champs de journaux Azure AD vers UDM exposés avant le 1er janvier 2026 et après (indiqués respectivement dans les colonnes Ancien mappage et Mappage actuel) :
| Champ du journal | Ancienne correspondance | Mappage actuel |
|---|---|---|
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 |
Delta de mappage des types d'événements
Le tableau suivant indique le delta pour la gestion des types d'événements Azure AD avant le 1er janvier 2026 et après (respectivement listés dans les colonnes Ancien event_type et event_type actuel) :
| ID de l'événement du journal | Ancien event_type | Current event_type | Remarque |
|---|---|---|---|
has_resource = true |
GENERIC_EVENT |
USER_RESOURCE_ACCESS |
Le type d'événement correspond à USER_RESOURCE_ACCESS dans les cas où l'événement concerne une ressource (indiquée par has_resource = true). |
operationName = Add member to group |
USER_CHANGE_PERMISSIONS |
GROUP_MODIFICATION |
Le type d'événement correspond à GROUP_MODIFICATION pour les opérations impliquant spécifiquement l'ajout d'un membre à un groupe (où operationName = Add member to group). |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.