Raccogliere i log di Microsoft Azure AD
Questo documento descrive come raccogliere i log di Microsoft Azure Active Directory (AD) configurando un feed di Google Security Operations.
Azure Active Directory (AZURE_AD) ora si chiama Microsoft Entra ID. I log di controllo di Azure AD
(AZURE_AD_AUDIT) ora sono i log di controllo di Microsoft Entra ID.
Per saperne di più, consulta Importazione dei dati in Google Security Operations.
Un'etichetta di importazione identifica il parser che normalizza i dati dei log non elaborati in formato UDM strutturato.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un abbonamento Azure a cui puoi accedere
- Un ruolo di amministratore globale o amministratore di Azure AD
- Un Azure AD (tenant) in Azure
Come configurare Azure AD
- Accedi al portale Azure.
- Vai a Home > Registrazione dell'app, seleziona un'applicazione registrata o registrala se non ne hai ancora creata una.
- Per registrare un'applicazione, nella sezione Registrazione app, fai clic su Nuova registrazione.
- Nel campo Nome, fornisci il nome visualizzato per l'applicazione.
Nella sezione Tipi di account supportati, seleziona Solo account in questa directory dell'organizzazione (singolo tenant).
- URI di reindirizzamento: lascia vuoto (non obbligatorio per l'autenticazione dell'entità di servizio).
Fai clic su Register (Registrati).
Vai alla pagina Panoramica e copia l'ID applicazione (client) e l'ID directory (tenant), necessari per configurare il feed Google Security Operations.
Fai clic su Autorizzazioni API.
Fai clic su Aggiungi un'autorizzazione e seleziona Microsoft Graph nel nuovo riquadro.
Fai clic su Autorizzazioni applicazione.
Seleziona le autorizzazioni AuditLog.Read.All, Directory.Read.All e SecurityEvents.Read.All. Assicurati che le autorizzazioni siano Autorizzazioni applicazione e non Autorizzazioni delegate.
Fai clic su Concedi il consenso amministratore per la directory predefinita. Le applicazioni sono autorizzate a chiamare le API quando gli utenti o gli amministratori concedono le autorizzazioni nell'ambito della procedura di consenso.
Vai a Impostazioni > Gestisci.
Fai clic su Certificati e secret.
Fai clic su Nuovo segreto client. Nel campo Valore viene visualizzato il client secret.
Copia il valore del client secret. Il valore viene visualizzato solo al momento della creazione ed è necessario per la registrazione dell'app Azure e per configurare il feed Google Security Operations.
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed > Aggiungi nuovo feed
- Hub dei contenuti > Pacchetti di contenuti > Inizia
Come configurare il feed Microsoft Entra ID (Azure AD)
- Fai clic sul pacchetto Azure Platform.
- Individua il tipo di log Azure AD.
Specifica i valori per i seguenti campi:
- Tipo di origine: API di terze parti (consigliato)
- ID client OAUTH: specifica l'ID client che hai ottenuto in precedenza.
- OAUTH client secret: specifica il client secret che hai ottenuto in precedenza.
- ID tenant: specifica l'ID tenant che hai ottenuto in precedenza.
- Percorso completo dell'API: URL dell'endpoint API REST di Microsoft Graph.
- Endpoint di autenticazione API: endpoint di autenticazione di Microsoft Active Directory.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Spazio dei nomi dell'asset: spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Fai clic su Crea feed.
Per ulteriori informazioni sulla configurazione di più feed per diversi tipi di log all'interno di questa famiglia di prodotti, consulta Configurare i feed per prodotto.
Per saperne di più sui feed di Google Security Operations, consulta la documentazione sui feed di Google Security Operations. Per informazioni sui requisiti per ciascun tipo di feed, vedi Configurazione dei feed per tipo.
Riferimento alla mappatura dei campi
Questo codice del parser trasforma i log Azure AD non elaborati in formato JSON in un modello UDM (Unified Data Model). Innanzitutto, normalizza i dati rimuovendo i campi non necessari, poi estrae le informazioni pertinenti, come i dettagli dell'utente, i timestamp e i dettagli dell'evento, mappandoli ai campi UDM corrispondenti per una rappresentazione e un'analisi coerenti.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Note |
|---|---|---|
about |
about |
|
accountEnabled |
user.user_authentication_statususer.attribute.labels.value (chiave: accountEnabled) |
Se accountEnabled è true, user.user_authentication_status è impostato su ACTIVE e viene aggiunta un'etichetta con la chiave accountEnabled e il valore true. In caso contrario, viene aggiunta un'etichetta con la chiave accountEnabled e il valore false. |
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 |
Vengono estratti e mappati più numeri di telefono come voci separate. |
city |
user.personal_address.city |
|
clientCredentialType |
additional.fields |
|
companyName |
user.company_name |
|
country |
user.personal_address.country_or_region |
Se country è vuoto, il valore viene preso da usageLocation. |
createdDateTime |
user.attribute.creation_time |
Convertito in un timestamp dal campo createdDateTime nel log non elaborato utilizzando il formato RFC 3339. |
cribl_pipe |
additional.fields |
|
crossTenantAccessType |
additional.fields |
|
department |
user.department |
Più reparti vengono estratti e mappati come voci separate. |
deviceDetail.displayName |
principal.hostname,principal.asset.hostname |
|
displayName |
user.user_display_name |
|
employeeId |
user.employee_id |
Se employeeId è vuoto, il valore viene preso da extension_employeeNumber. |
employeeType |
user.attribute.labels.value (chiave: employeeType) |
Mappato dal campo employeeType nel log non elaborato e aggiunto come etichetta con la chiave employeeType. |
empmanager-src.accountEnabled |
user.user_authentication_statususer.attribute.labels.value (chiave: accountEnabled) |
Se manager è vuoto e empmanager-src.accountEnabled è true, user.user_authentication_status è impostato su ACTIVE e viene aggiunta un'etichetta con la chiave accountEnabled e il valore true. In caso contrario, viene aggiunta un'etichetta con la chiave accountEnabled e il valore false. |
empmanager-src.onPremisesDistinguishedName |
manager_role.type |
Se gopher-manager è vuoto e la parte dell'unità organizzativa del nome distinto del gestore contiene Users, manager_role.type è impostato su ADMINISTRATOR. Se contiene Service Accounts, manager_role.type è impostato su SERVICE_ACCOUNT. |
empmanager-src.userPrincipalName |
manager_role.type |
Se gopher-manager è vuoto e empmanager-src.userPrincipalName inizia con svc-, manager_role.type è impostato su SERVICE_ACCOUNT. |
errorCode |
security_result.detection_fields |
|
extension_employeeNumber |
user.employee_id |
Mappato a user.employee_id se employeeId è vuoto. |
extension_wfc_AccountingUnitName |
event.idm.entity.entity.labels.value (chiave: extension_wfc_AccountingUnitName) |
Mappato dal campo extension_wfc_AccountingUnitName nel log non elaborato e aggiunto come etichetta con la chiave extension_wfc_AccountingUnitName. |
extension_wfc_AccountType |
event.idm.entity.entity.labels.value (chiave: wfc_AccountType) |
Mappato dal campo extension_wfc_AccountType nel log non elaborato e aggiunto come etichetta con la chiave wfc_AccountType. |
extension_wfc_execDescription |
event.idm.entity.entity.labels.value (chiave: extension_wfc_execDescription) |
Mappato dal campo extension_wfc_execDescription nel log non elaborato e aggiunto come etichetta con la chiave extension_wfc_execDescription. |
extension_wfc_groupDescription |
event.idm.entity.entity.labels.value (chiave: extension_wfc_groupDescription) |
Mappato dal campo extension_wfc_groupDescription nel log non elaborato e aggiunto come etichetta con la chiave extension_wfc_groupDescription. |
extension_wfc_orgDescription |
event.idm.entity.entity.labels.value (chiave: extension_wfc_orgDescription) |
Mappato dal campo extension_wfc_orgDescription nel log non elaborato e aggiunto come etichetta con la chiave extension_wfc_orgDescription. |
failureReason |
security_result.description |
|
federatedCredentialId |
additional.fields |
|
flaggedForReview |
additional.fields |
|
givenName |
user.first_name |
|
gopher-devices |
event.idm.entity.relations |
Ogni dispositivo nell'array gopher-devices è mappato a una voce di relazione separata. deviceId è mappato a product_object_id, operatingSystem e operatingSystemVersion vengono combinati per formare il modello platform_version, che viene mappato direttamente, mentre createdDateTime viene convertito in un timestamp e mappato a created_timestamp. La relazione è impostata su OWNS e la direzione su UNIDIRECTIONAL. |
gopher-groups |
event.idm.entity.relations |
Ogni gruppo nell'array gopher-groups viene mappato a una voce di relazione separata. id è mappato a product_object_id e displayName è mappato a group_display_name. La relazione è impostata su MEMBER e la direzione su UNIDIRECTIONAL. |
gopher-manager.businessPhones |
empmanager.phone_numbers |
Mappato a empmanager.phone_numbers se manager è vuoto. |
gopher-manager.country |
empmanager.personal_address.country_or_region |
Mappato a empmanager.personal_address.country_or_region se manager è vuoto. Se sia gopher-manager.country che gopher-manager.usageLocation sono vuoti, il campo rimane vuoto. |
gopher-manager.department |
empmanager.department |
Mappato a empmanager.department se manager è vuoto. |
gopher-manager.displayName |
empmanager.user_display_name |
Mappato a empmanager.user_display_name se manager è vuoto. |
gopher-manager.employeeId |
empmanager.employee_id |
Mappato a empmanager.employee_id se manager è vuoto e gopher-manager.employeeId non è vuoto. |
gopher-manager.extension_employeeNumber |
empmanager.employee_id |
Mappato a empmanager.employee_id se manager e gopher-manager.employeeId sono vuoti e gopher-manager.extension_employeeNumber non è vuoto. |
gopher-manager.givenName |
empmanager.first_name |
Mappato a empmanager.first_name se manager è vuoto. |
gopher-manager.id |
empmanager.product_object_id |
Mappato a empmanager.product_object_id se manager è vuoto. |
gopher-manager.jobTitle |
empmanager.title |
Mappato a empmanager.title se manager è vuoto. |
gopher-manager.mail |
empmanager.email_addresses |
Mappato a empmanager.email_addresses se manager è vuoto. |
gopher-manager.onPremisesImmutableId |
user.attribute.labels.value (chiave: gopher-manager onPremisesImmutableId) |
Mappato come etichetta con la chiave gopher-manager onPremisesImmutableId. |
gopher-manager.onPremisesSamAccountName |
empmanager.userid |
Mappato a empmanager.userid se manager è vuoto. |
gopher-manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Mappato a empmanager.windows_sid se manager è vuoto. |
gopher-manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Se manager è vuoto, ogni indirizzo nell'array gopher-manager.proxyAddresses viene mappato su empmanager.email_addresses o empmanager.group_identifiers a seconda che inizi con smtp o SMTP. |
gopher-manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (chiave: refreshTokensValidFromDateTime) |
Mappato come etichetta con la chiave refreshTokensValidFromDateTime se manager è vuoto. |
gopher-manager.streetAddress |
empmanager.personal_address.name |
Mappato a empmanager.personal_address.name se manager è vuoto. |
gopher-manager.surname |
empmanager.last_name |
Mappato a empmanager.last_name se manager è vuoto. |
gopher-manager.usageLocation |
user.attribute.labels.value (chiave: manager_src_usageLocation) |
Mappato come etichetta con la chiave manager_src_usageLocation. |
gopher-manager.userType |
empmanager.attribute.roles.name |
Mappato a empmanager.attribute.roles.name se manager è vuoto. |
homeTenantId |
target.resource.attribute.labels |
|
homeTenantName |
target.resource.attribute.labels |
|
id |
user.product_object_id |
|
identities |
user.attribute.labels.value (chiave: signInType)user.attribute.labels.value (chiave: userPrincipalName) |
signInType è mappato come etichetta con la chiave signInType. Se signInType e userPrincipalName non sono vuoti, vengono combinati e mappati come etichetta con la chiave 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 |
Se mail inizia con svc-, user_role.type è impostato su SERVICE_ACCOUNT. |
mail |
user_role.type |
Se mail inizia con svc-, user_role.type è impostato su SERVICE_ACCOUNT. |
mailNickname |
user.attribute.labels.value (chiave: mailNickname) |
Mappato dal campo mailNickname nel log non elaborato e aggiunto come etichetta con la chiave mailNickname. |
manager.businessPhones |
empmanager.phone_numbers |
Mappato a empmanager.phone_numbers se gopher-manager è vuoto. |
manager.city |
empmanager.personal_address.city |
Mappato a empmanager.personal_address.city se gopher-manager è vuoto. |
manager.companyName |
empmanager.company_name |
Mappato a empmanager.company_name se gopher-manager è vuoto. |
manager.country |
empmanager.personal_address.country_or_region |
Mappato a empmanager.personal_address.country_or_region se gopher-manager è vuoto. Se sia manager.country che manager.usageLocation sono vuoti, il campo rimane vuoto. |
manager.department |
empmanager.department |
Mappato a empmanager.department se gopher-manager è vuoto. |
manager.displayName |
empmanager.user_display_name |
Mappato a empmanager.user_display_name se gopher-manager è vuoto. |
manager.employeeId |
empmanager.employee_id |
Mappato a empmanager.employee_id se gopher-manager è vuoto e manager.employeeId non è vuoto. |
manager.extension_employeeNumber |
empmanager.employee_id |
Mappato a empmanager.employee_id se gopher-manager e manager.employeeId sono vuoti e manager.extension_employeeNumber non è vuoto. |
manager.givenName |
empmanager.first_name |
Mappato a empmanager.first_name se gopher-manager è vuoto. |
manager.id |
empmanager.product_object_id |
Mappato a empmanager.product_object_id se gopher-manager è vuoto. |
manager.jobTitle |
empmanager.title |
Mappato a empmanager.title se gopher-manager è vuoto. |
manager.mail |
empmanager.email_addresses |
Mappato a empmanager.email_addresses se gopher-manager è vuoto. |
manager.onPremisesSamAccountName |
empmanager.userid |
Mappato a empmanager.userid se gopher-manager è vuoto. |
manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Mappato a empmanager.windows_sid se gopher-manager è vuoto. |
manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Se gopher-manager è vuoto, ogni indirizzo nell'array manager.proxyAddresses viene mappato su empmanager.email_addresses o empmanager.group_identifiers based on whether it starts withsmtporSMTP`. |
manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (chiave: refreshTokensValidFromDateTime) |
Mappato come etichetta con la chiave refreshTokensValidFromDateTime se gopher-manager è vuoto. |
manager.state |
empmanager.personal_address.state |
Mappato a empmanager.personal_address.state se gopher-manager è vuoto. |
manager.streetAddress |
empmanager.personal_address.name |
Mappato a empmanager.personal_address.name se gopher-manager è vuoto. |
manager.surname |
empmanager.last_name |
Mappato a empmanager.last_name se gopher-manager è vuoto. |
manager.usageLocation |
user.attribute.labels.value (chiave: manager_src_usageLocation)empmanager.personal_address.country_or_region |
Mappato come etichetta con la chiave manager_src_usageLocation. Se manager.country è vuoto, il valore viene mappato anche a empmanager.personal_address.country_or_region. |
manager.userType |
empmanager.attribute.roles.name |
Mappato a empmanager.attribute.roles.name se gopher-manager è vuoto. |
mfaDetail.authDetail |
principal.user.phone_numbers |
|
onPremisesDistinguishedName |
user.attribute.labels.value (chiave: onPremisesDistinguishedName)user.attribute.labels.value (chiave: onPremisesDistinguishedName-OU data) |
Il nome distinto completo viene mappato come etichetta con la chiave onPremisesDistinguishedName. La parte OU del nome distinto viene estratta e mappata come etichetta con la chiave onPremisesDistinguishedName-OU data. Se la parte OU contiene Admin, user_role.type è impostato su ADMINISTRATOR. Se contiene Service Accounts, user_role.type è impostato su SERVICE_ACCOUNT. |
onPremisesDistinguishedName |
user_role.type |
Se la parte OU del nome distinto contiene Admin, user_role.type è impostato su ADMINISTRATOR. Se contiene Service Accounts, user_role.type è impostato su SERVICE_ACCOUNT. |
onPremisesDomainName |
user.group_identifiersuser.attribute.labels.value (chiave: onPremisesDomainName) |
Mappato direttamente a user.group_identifiers e aggiunto come etichetta con la chiave onPremisesDomainName. |
onPremisesImmutableId |
user.attribute.labels.value (chiave: onPremisesImmutableId) |
Mappato dal campo onPremisesImmutableId nel log non elaborato e aggiunto come etichetta con la chiave onPremisesImmutableId. |
onPremisesSamAccountName |
user.useriduser.attribute.labels.value (chiave: onPremisesSamAccountName) |
Mappato a user.userid se sAMAccountName è vuoto. Aggiunto anche come etichetta con la chiave 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 |
Se operatingSystem inizia con Win, Mac o Lin, viene mappato su 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 |
Se properties.SignInBondData.ProtocolDetails.Protocol == WSTrust, viene mappato a security_result.detection_fields, altrimenti a 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 |
Ogni indirizzo nell'array proxyAddresses viene mappato su user.email_addresses o user.group_identifiers a seconda che inizi con smtp o SMTP. Se l'indirizzo inizia con smtp o SMTP, il prefisso smtp: o SMTP: viene rimosso e l'indirizzo email rimanente viene estratto e mappato a user.email_addresses. |
record.CorrelationId |
additional.fields |
|
record.CrossTenantAccessType |
additional.fields |
|
record.DeviceDetail.deviceId |
network.session_id |
|
record.DeviceDetail.operatingSystem |
principal.platform_version |
Se operatingSystem inizia con Win, Mac o Lin, viene mappato su principal.platform. |
record.IsInteractive |
additional.fields |
|
record.level |
security_result.severity_details |
Se record_level si trova in ["INFORMATION", "INFORMATIONAL", "0", "4", "WARNING", "1", "3","ERROR", "2","CRITICAL"], viene mappato a 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 (chiave: refreshTokensValidFromDateTime) |
Mappato dal campo refreshTokensValidFromDateTime nel log non elaborato e aggiunto come etichetta con la chiave 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 |
Se country è vuoto, il valore viene mappato a user.personal_address.country_or_region. |
userDisplayName |
principal.user.user_display_name |
|
userId |
principal.user.product_object_id |
|
userPrincipalName |
user.email_addresses |
Se userPrincipalName inizia con svc-, user_role.type è impostato su SERVICE_ACCOUNT. |
userPrincipalName |
user_role.type |
Se userPrincipalName inizia con svc-, user_role.type è impostato su SERVICE_ACCOUNT. |
userType |
additional.fields |
|
| N/D | event.idm.entity.metadata.vendor_name |
Imposta su Microsoft. |
| N/D | event.idm.entity.metadata.product_name |
Imposta su Azure Active Directory. |
| N/D | event.idm.entity.metadata.entity_type |
Imposta su USER. |
| N/D | event.idm.entity.metadata.collected_timestamp |
Impostato sul campo create_time del log non elaborato. |
Riferimento del delta di mappatura UDM
Il 1° gennaio 2026, Google SecOps ha rilasciato una nuova versione del parser Azure AD, che include modifiche significative al mapping dei campi dei log Azure AD ai campi UDM e modifiche al mapping dei tipi di eventi.
Delta della mappatura dei campi di log
La tabella seguente elenca la differenza di mappatura per i campi di log-to-UDM di Azure AD esposti prima del 1° gennaio 2026 e successivamente (elencati rispettivamente nelle colonne Mappatura precedente e Mappatura attuale):
| Campo log | Mappatura precedente | Mappatura attuale |
|---|---|---|
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 della mappatura dei tipi di eventi
La tabella seguente elenca la differenza per la gestione dei tipi di eventi Azure AD prima del 1° gennaio 2026 e successivamente (elencati rispettivamente nelle colonne Old event_type e Current event-type):
| ID evento dal log | Old event_type | Current event_type | Commento |
|---|---|---|---|
has_resource = true |
GENERIC_EVENT |
USER_RESOURCE_ACCESS |
Il tipo di evento viene mappato a USER_RESOURCE_ACCESS per i casi in cui l'evento riguarda una risorsa (indicata da has_resource = true). |
operationName = Add member to group |
USER_CHANGE_PERMISSIONS |
GROUP_MODIFICATION |
Il tipo di evento corrisponde a GROUP_MODIFICATION per le operazioni che riguardano specificamente l'aggiunta di un membro a un gruppo (dove operationName = Add member to group). |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.