Recolha registos do Microsoft Azure AD
Este documento descreve como pode recolher registos do Microsoft Azure Active Directory (AD) através da configuração de um feed do Google Security Operations.
O Azure Active Directory (AZURE_AD) chama-se agora Microsoft Entra ID. Os registos de auditoria do Azure AD
(AZURE_AD_AUDIT) são agora registos de auditoria do Microsoft Entra ID.
Para mais informações, consulte o artigo Ingestão de dados no Google Security Operations.
Uma etiqueta de carregamento identifica o analisador que normaliza os dados de registo não processados para o formato UDM estruturado.
Antes de começar
Certifique-se de que cumpre os seguintes pré-requisitos:
- Uma subscrição do Azure na qual pode iniciar sessão
- Uma função de administrador global ou administrador do Azure AD
- Um Azure AD (inquilino) no Azure
Como configurar o Azure AD
- Inicie sessão no portal do Azure.
- Aceda a Página inicial > Registo de apps, selecione uma aplicação registada ou registe uma aplicação se ainda não tiver criado uma.
- Para registar uma aplicação, na secção Registo de apps, clique em Novo registo.
- No campo Nome, indique o nome a apresentar da sua aplicação.
Na secção Tipos de contas suportados, selecione Apenas contas neste diretório organizacional (inquilino único)
- URI de redirecionamento: deixe em branco (não é necessário para a autenticação de diretor de serviço).
Clique em Registar.
Aceda à página Vista geral e copie o ID da aplicação (cliente) e o ID do diretório (inquilino), que são necessários para configurar o feed do Google Security Operations.
Clique em Autorizações da API.
Clique em Adicionar uma autorização e, de seguida, selecione Microsoft Graph no novo painel.
Clique em Autorizações da aplicação.
Selecione as autorizações AuditLog.Read.All, Directory.Read.All e SecurityEvents.Read.All. Certifique-se de que as autorizações são autorizações da aplicação e não autorizações delegadas.
Clique em Conceder consentimento de administrador para o diretório predefinido. As aplicações são autorizadas a chamar APIs quando lhes são concedidas autorizações por utilizadores ou administradores como parte do processo de consentimento.
Aceda a Definições > Gerir.
Clique em Certificados e secrets.
Clique em Novo segredo do cliente. No campo Valor, é apresentado o segredo do cliente.
Copie o valor do segredo do cliente. O valor é apresentado apenas no momento da criação e é necessário para o registo da app Azure e para configurar o feed do Google Security Operations.
Configure feeds
Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:
- Definições do SIEM > Feeds > Adicionar novo feed
- Content Hub > Pacotes de conteúdo > Começar
Como configurar o feed do Microsoft Entra ID (Azure AD)
- Clique no pacote Plataforma Azure.
- Localize o tipo de registo Azure AD.
Especifique valores para os seguintes campos:
- Tipo de origem: API de terceiros (recomendado)
- ID de cliente OAUTH: especifique o ID de cliente que obteve anteriormente.
- Segredo do cliente OAUTH: especifique o segredo do cliente que obteve anteriormente.
- ID do inquilino: especifique o ID do inquilino que obteve anteriormente.
- Caminho completo da API: URL do ponto final da API REST Microsoft Graph.
- Ponto final de autenticação da API: ponto final de autenticação do Microsoft Active Directory.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Espaço de nomes do recurso: espaço de nomes associado ao feed.
- Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.
Para mais informações sobre os feeds do Google Security Operations, consulte a documentação dos feeds do Google Security Operations. Para obter informações sobre os requisitos de cada tipo de feed, consulte o artigo Configuração do feed por tipo.
Referência de mapeamento de campos
Este código do analisador transforma registos do Azure AD não processados no formato JSON num modelo de dados unificado (UDM). Primeiro, normaliza os dados removendo campos desnecessários e, em seguida, extrai informações relevantes, como detalhes do utilizador, datas/horas e especificidades do evento, mapeando-as para os campos da UDM correspondentes para uma representação e uma análise consistentes.
Tabela de mapeamento da UDM
| Campo de registo | Mapeamento do UDM | Observações |
|---|---|---|
about |
about |
|
accountEnabled |
user.user_authentication_statususer.attribute.labels.value (chave: accountEnabled) |
Se accountEnabled for true, user.user_authentication_status é definido como ACTIVE e é adicionada uma etiqueta com a chave accountEnabled e o valor true. Caso contrário, é adicionada uma etiqueta com a chave accountEnabled e o valor 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 |
Vários números de telefone são extraídos e mapeados como entradas separadas. |
city |
user.personal_address.city |
|
clientCredentialType |
additional.fields |
|
companyName |
user.company_name |
|
country |
user.personal_address.country_or_region |
Se country estiver vazio, o valor é retirado de usageLocation. |
createdDateTime |
user.attribute.creation_time |
Convertido numa data/hora a partir do campo createdDateTime no registo não processado através do formato RFC 3339. |
cribl_pipe |
additional.fields |
|
crossTenantAccessType |
additional.fields |
|
department |
user.department |
Vários departamentos são extraídos e mapeados como entradas separadas. |
deviceDetail.displayName |
principal.hostname,principal.asset.hostname |
|
displayName |
user.user_display_name |
|
employeeId |
user.employee_id |
Se employeeId estiver vazio, o valor é retirado de extension_employeeNumber. |
employeeType |
user.attribute.labels.value (chave: employeeType) |
Mapeado a partir do campo employeeType no registo não processado e adicionado como uma etiqueta com a chave employeeType. |
empmanager-src.accountEnabled |
user.user_authentication_statususer.attribute.labels.value (chave: accountEnabled) |
Se manager estiver vazio e empmanager-src.accountEnabled for true, user.user_authentication_status é definido como ACTIVE e é adicionada uma etiqueta com a chave accountEnabled e o valor true. Caso contrário, é adicionada uma etiqueta com a chave accountEnabled e o valor false. |
empmanager-src.onPremisesDistinguishedName |
manager_role.type |
Se gopher-manager estiver vazio e a parte da UO do nome distinto do gestor contiver Users, manager_role.type é definido como ADMINISTRATOR. Se contiver Service Accounts, o valor de manager_role.type é definido como SERVICE_ACCOUNT. |
empmanager-src.userPrincipalName |
manager_role.type |
Se gopher-manager estiver vazio e empmanager-src.userPrincipalName começar com svc-, manager_role.type é definido como SERVICE_ACCOUNT. |
errorCode |
security_result.detection_fields |
|
extension_employeeNumber |
user.employee_id |
Mapeado para user.employee_id se employeeId estiver vazio. |
extension_wfc_AccountingUnitName |
event.idm.entity.entity.labels.value (chave: extension_wfc_AccountingUnitName) |
Mapeado a partir do campo extension_wfc_AccountingUnitName no registo não processado e adicionado como uma etiqueta com a chave extension_wfc_AccountingUnitName. |
extension_wfc_AccountType |
event.idm.entity.entity.labels.value (chave: wfc_AccountType) |
Mapeado a partir do campo extension_wfc_AccountType no registo não processado e adicionado como uma etiqueta com a chave wfc_AccountType. |
extension_wfc_execDescription |
event.idm.entity.entity.labels.value (chave: extension_wfc_execDescription) |
Mapeado a partir do campo extension_wfc_execDescription no registo não processado e adicionado como uma etiqueta com a chave extension_wfc_execDescription. |
extension_wfc_groupDescription |
event.idm.entity.entity.labels.value (chave: extension_wfc_groupDescription) |
Mapeado a partir do campo extension_wfc_groupDescription no registo não processado e adicionado como uma etiqueta com a chave extension_wfc_groupDescription. |
extension_wfc_orgDescription |
event.idm.entity.entity.labels.value (chave: extension_wfc_orgDescription) |
Mapeado a partir do campo extension_wfc_orgDescription no registo não processado e adicionado como uma etiqueta com a chave extension_wfc_orgDescription. |
failureReason |
security_result.description |
|
federatedCredentialId |
additional.fields |
|
flaggedForReview |
additional.fields |
|
givenName |
user.first_name |
|
gopher-devices |
event.idm.entity.relations |
Cada dispositivo na matriz gopher-devices é mapeado para uma entrada de relação separada. O elemento deviceId é mapeado para product_object_id, operatingSystem e operatingSystemVersion são combinados para formar o elemento platform_version, que é mapeado diretamente, e createdDateTime é convertido num registo de data/hora e mapeado para created_timestamp. A relação está definida como OWNS e a direção está definida como UNIDIRECTIONAL. |
gopher-groups |
event.idm.entity.relations |
Cada grupo na matriz gopher-groups é mapeado para uma entrada de relação separada. O endereço id está mapeado para product_object_id e o endereço displayName está mapeado para group_display_name. A relação está definida como MEMBER e a direção está definida como UNIDIRECTIONAL. |
gopher-manager.businessPhones |
empmanager.phone_numbers |
Mapeado para empmanager.phone_numbers se manager estiver vazio. |
gopher-manager.country |
empmanager.personal_address.country_or_region |
Mapeado para empmanager.personal_address.country_or_region se manager estiver vazio. Se ambos os campos gopher-manager.country e gopher-manager.usageLocation estiverem vazios, o campo é deixado vazio. |
gopher-manager.department |
empmanager.department |
Mapeado para empmanager.department se manager estiver vazio. |
gopher-manager.displayName |
empmanager.user_display_name |
Mapeado para empmanager.user_display_name se manager estiver vazio. |
gopher-manager.employeeId |
empmanager.employee_id |
Mapeado para empmanager.employee_id se manager estiver vazio e gopher-manager.employeeId não estiver vazio. |
gopher-manager.extension_employeeNumber |
empmanager.employee_id |
Mapeado para empmanager.employee_id se manager e gopher-manager.employeeId estiverem vazios e gopher-manager.extension_employeeNumber não estiver vazio. |
gopher-manager.givenName |
empmanager.first_name |
Mapeado para empmanager.first_name se manager estiver vazio. |
gopher-manager.id |
empmanager.product_object_id |
Mapeado para empmanager.product_object_id se manager estiver vazio. |
gopher-manager.jobTitle |
empmanager.title |
Mapeado para empmanager.title se manager estiver vazio. |
gopher-manager.mail |
empmanager.email_addresses |
Mapeado para empmanager.email_addresses se manager estiver vazio. |
gopher-manager.onPremisesImmutableId |
user.attribute.labels.value (chave: gopher-manager onPremisesImmutableId) |
Mapeado como uma etiqueta com a chave gopher-manager onPremisesImmutableId. |
gopher-manager.onPremisesSamAccountName |
empmanager.userid |
Mapeado para empmanager.userid se manager estiver vazio. |
gopher-manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Mapeado para empmanager.windows_sid se manager estiver vazio. |
gopher-manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Se manager estiver vazio, cada endereço na matriz gopher-manager.proxyAddresses é mapeado para empmanager.email_addresses ou empmanager.group_identifiers, consoante comece por smtp ou SMTP. |
gopher-manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (chave: refreshTokensValidFromDateTime) |
Mapeado como uma etiqueta com a chave refreshTokensValidFromDateTime se manager estiver vazio. |
gopher-manager.streetAddress |
empmanager.personal_address.name |
Mapeado para empmanager.personal_address.name se manager estiver vazio. |
gopher-manager.surname |
empmanager.last_name |
Mapeado para empmanager.last_name se manager estiver vazio. |
gopher-manager.usageLocation |
user.attribute.labels.value (chave: manager_src_usageLocation) |
Mapeado como uma etiqueta com a chave manager_src_usageLocation. |
gopher-manager.userType |
empmanager.attribute.roles.name |
Mapeado para empmanager.attribute.roles.name se manager estiver vazio. |
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) |
O elemento signInType está mapeado como uma etiqueta com a chave signInType. Se signInType e userPrincipalName não estiverem vazios, são combinados e mapeados como uma etiqueta com a chave 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 começar com svc-, user_role.type é definido como SERVICE_ACCOUNT. |
mail |
user_role.type |
Se mail começar com svc-, user_role.type é definido como SERVICE_ACCOUNT. |
mailNickname |
user.attribute.labels.value (chave: mailNickname) |
Mapeado a partir do campo mailNickname no registo não processado e adicionado como uma etiqueta com a chave mailNickname. |
manager.businessPhones |
empmanager.phone_numbers |
Mapeado para empmanager.phone_numbers se gopher-manager estiver vazio. |
manager.city |
empmanager.personal_address.city |
Mapeado para empmanager.personal_address.city se gopher-manager estiver vazio. |
manager.companyName |
empmanager.company_name |
Mapeado para empmanager.company_name se gopher-manager estiver vazio. |
manager.country |
empmanager.personal_address.country_or_region |
Mapeado para empmanager.personal_address.country_or_region se gopher-manager estiver vazio. Se ambos os campos manager.country e manager.usageLocation estiverem vazios, o campo é deixado vazio. |
manager.department |
empmanager.department |
Mapeado para empmanager.department se gopher-manager estiver vazio. |
manager.displayName |
empmanager.user_display_name |
Mapeado para empmanager.user_display_name se gopher-manager estiver vazio. |
manager.employeeId |
empmanager.employee_id |
Mapeado para empmanager.employee_id se gopher-manager estiver vazio e manager.employeeId não estiver vazio. |
manager.extension_employeeNumber |
empmanager.employee_id |
Mapeado para empmanager.employee_id se gopher-manager e manager.employeeId estiverem vazios e manager.extension_employeeNumber não estiver vazio. |
manager.givenName |
empmanager.first_name |
Mapeado para empmanager.first_name se gopher-manager estiver vazio. |
manager.id |
empmanager.product_object_id |
Mapeado para empmanager.product_object_id se gopher-manager estiver vazio. |
manager.jobTitle |
empmanager.title |
Mapeado para empmanager.title se gopher-manager estiver vazio. |
manager.mail |
empmanager.email_addresses |
Mapeado para empmanager.email_addresses se gopher-manager estiver vazio. |
manager.onPremisesSamAccountName |
empmanager.userid |
Mapeado para empmanager.userid se gopher-manager estiver vazio. |
manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Mapeado para empmanager.windows_sid se gopher-manager estiver vazio. |
manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Se gopher-manager estiver vazio, cada endereço na matriz manager.proxyAddresses é mapeado para empmanager.email_addresses ou empmanager.group_identifiers based on whether it starts withsmtporSMTP`. |
manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (chave: refreshTokensValidFromDateTime) |
Mapeado como uma etiqueta com a chave refreshTokensValidFromDateTime se gopher-manager estiver vazio. |
manager.state |
empmanager.personal_address.state |
Mapeado para empmanager.personal_address.state se gopher-manager estiver vazio. |
manager.streetAddress |
empmanager.personal_address.name |
Mapeado para empmanager.personal_address.name se gopher-manager estiver vazio. |
manager.surname |
empmanager.last_name |
Mapeado para empmanager.last_name se gopher-manager estiver vazio. |
manager.usageLocation |
user.attribute.labels.value (key: manager_src_usageLocation)empmanager.personal_address.country_or_region |
Mapeado como uma etiqueta com a chave manager_src_usageLocation. Se manager.country estiver vazio, o valor também é mapeado para empmanager.personal_address.country_or_region. |
manager.userType |
empmanager.attribute.roles.name |
Mapeado para empmanager.attribute.roles.name se gopher-manager estiver vazio. |
mfaDetail.authDetail |
principal.user.phone_numbers |
|
onPremisesDistinguishedName |
user.attribute.labels.value (key: onPremisesDistinguishedName)user.attribute.labels.value (key: onPremisesDistinguishedName-OU data) |
O nome totalmente distinto é mapeado como uma etiqueta com a chave onPremisesDistinguishedName. A parte OU do nome distinto é extraída e mapeada como uma etiqueta com a chave onPremisesDistinguishedName-OU data. Se a parte OU contiver Admin, a parte user_role.type é definida como ADMINISTRATOR. Se contiver Service Accounts, o valor de user_role.type é definido como SERVICE_ACCOUNT. |
onPremisesDistinguishedName |
user_role.type |
Se a parte OU do nome distinto contiver Admin, o valor user_role.type é definido como ADMINISTRATOR. Se contiver Service Accounts, o valor de user_role.type é definido como SERVICE_ACCOUNT. |
onPremisesDomainName |
user.group_identifiersuser.attribute.labels.value (chave: onPremisesDomainName) |
Mapeado diretamente para user.group_identifiers e adicionado como uma etiqueta com a chave onPremisesDomainName. |
onPremisesImmutableId |
user.attribute.labels.value (chave: onPremisesImmutableId) |
Mapeado a partir do campo onPremisesImmutableId no registo não processado e adicionado como uma etiqueta com a chave onPremisesImmutableId. |
onPremisesSamAccountName |
user.useriduser.attribute.labels.value (chave: onPremisesSamAccountName) |
Mapeado para user.userid se sAMAccountName estiver vazio. Também adicionado como uma etiqueta com a chave 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 |
Lógica |
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 começar por Win, Mac ou Lin, é mapeado para 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, então é mapeado para security_result.detection_fields. Caso contrário, é mapeado para 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 |
Cada endereço na matriz proxyAddresses é mapeado para user.email_addresses ou user.group_identifiers, consoante comece por smtp ou SMTP. Se o endereço começar por smtp ou SMTP, o prefixo smtp: ou SMTP: é removido, e o endereço de email restante é extraído e mapeado para 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 começar por Win, Mac ou Lin, é mapeado para principal.platform. |
record.IsInteractive |
additional.fields |
|
record.level |
security_result.severity_details |
Se record_level estiver em ["INFORMATION", "INFORMATIONAL", "0", "4", "WARNING", "1", "3","ERROR", "2","CRITICAL"], é mapeado para 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 (chave: refreshTokensValidFromDateTime) |
Mapeado a partir do campo refreshTokensValidFromDateTime no registo não processado e adicionado como uma etiqueta com a chave 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 estiver vazio, o valor é mapeado para user.personal_address.country_or_region. |
userDisplayName |
principal.user.user_display_name |
|
userId |
principal.user.product_object_id |
|
userPrincipalName |
user.email_addresses |
Se userPrincipalName começar com svc-, user_role.type é definido como SERVICE_ACCOUNT. |
userPrincipalName |
user_role.type |
Se userPrincipalName começar com svc-, user_role.type é definido como SERVICE_ACCOUNT. |
userType |
additional.fields |
|
| N/A | event.idm.entity.metadata.vendor_name |
Definido como Microsoft. |
| N/A | event.idm.entity.metadata.product_name |
Definido como Azure Active Directory. |
| N/A | event.idm.entity.metadata.entity_type |
Definido como USER. |
| N/A | event.idm.entity.metadata.collected_timestamp |
Definido para o campo create_time do registo não processado. |
Referência delta do mapeamento de UDM
A 1 de janeiro de 2026, o Google SecOps lançou uma nova versão do analisador do Azure AD, que inclui alterações significativas ao mapeamento dos campos de registo do Azure AD para campos da UDM e alterações ao mapeamento dos tipos de eventos.
Delta do mapeamento de campos de registo
A tabela seguinte indica a diferença de mapeamento para os campos de registo do Azure AD expostos antes de 1 de janeiro de 2026 e posteriormente (indicados nas colunas Mapeamento antigo e Mapeamento atual, respetivamente):
| Campo de registo | Mapeamento antigo | Mapeamento atual |
|---|---|---|
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 |
Diferença do mapeamento do tipo de evento
A tabela seguinte lista a diferença no processamento dos tipos de eventos do Azure AD antes de 1 de janeiro de 2026 e posteriormente (indicados nas colunas Old event_type e Current event-type, respetivamente):
| ID do evento do registo | Antigo event_type | Current event_type | Observação |
|---|---|---|---|
has_resource = true |
GENERIC_EVENT |
USER_RESOURCE_ACCESS |
O tipo de evento é mapeado para USER_RESOURCE_ACCESS para os casos em que o evento se refere a um recurso (indicado por has_resource = true). |
operationName = Add member to group |
USER_CHANGE_PERMISSIONS |
GROUP_MODIFICATION |
O tipo de evento é mapeado para GROUP_MODIFICATION para operações que envolvem especificamente a adição de um membro a um grupo (onde operationName = Add member to group). |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.