Coletar registros do Microsoft Azure AD
Neste documento, descrevemos como coletar registros do Microsoft Azure Active Directory (AD) ao configurar um feed do Google Security Operations.
O Azure Active Directory (AZURE_AD) agora se chama Microsoft Entra ID. Os registros de auditoria do Azure AD
(AZURE_AD_AUDIT) agora são registros de auditoria do ID do Microsoft Entra.
Para mais informações, consulte Ingestão de dados no Google Security Operations.
Um rótulo de ingestão identifica o analisador que normaliza dados de registro brutos para o formato UDM estruturado.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Uma assinatura do Azure em que você pode fazer login
- Uma função de administrador global ou do Azure AD
- Um Azure AD (locatário) no Azure
Como configurar o Azure AD
- Faça login no portal do Azure.
- Acesse Página inicial > Registro de app, selecione um aplicativo registrado ou registre um se ainda não tiver criado um.
- Para registrar um aplicativo, na seção Registro de app, clique em Novo registro.
- No campo Nome, insira o nome de exibição do aplicativo.
Na seção Tipos de conta compatíveis, selecione Somente contas neste diretório organizacional (tenant único).
Clique em Registrar.
Acesse a página Visão geral e copie o ID do aplicativo (cliente) e o ID do diretório (locatário), que são necessários para configurar o feed do Google Security Operations.
Clique em Permissões da API.
Clique em Adicionar uma permissão e selecione Microsoft Graph no novo painel.
Clique em Permissões do aplicativo.
Selecione as permissões AuditLog.Read.All, Directory.Read.All e SecurityEvents.Read.All. Verifique se as permissões são permissões de aplicativo e não permissões delegadas.
Clique em Conceder consentimento de administrador para o diretório padrão. Os aplicativos são autorizados a chamar APIs quando recebem permissões de usuários ou administradores como parte do processo de consentimento.
Acesse Configurações > Gerenciar.
Clique em Certificados e segredos.
Clique em New client secret. No campo Valor, a chave secreta do cliente aparece.
Copie o valor da chave secreta do cliente. O valor é mostrado apenas no momento da criação e é necessário para o registro do app do Azure e para configurar o feed do Google Security Operations.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds > Adicionar novo feed
- Hub de conteúdo > Pacotes de conteúdo > Comece já
Como configurar o feed do ID do Microsoft Entra (Azure AD)
- Clique no pacote Plataforma do Azure.
- Localize o tipo de registro Azure AD.
Especifique valores para os seguintes campos:
- Tipo de origem: API de terceiros (recomendado)
- ID do cliente OAuth: especifique o ID do cliente que você recebeu anteriormente.
- Chave secreta do cliente OAuth: especifique a chave secreta do cliente que você recebeu anteriormente.
- ID do locatário: especifique o ID do locatário que você recebeu anteriormente.
- Caminho completo da API: URL do endpoint de API REST do Microsoft Graph.
- Endpoint de autenticação da API: endpoint de autenticação do Microsoft Active Directory.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar 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 informações sobre os requisitos de cada tipo de feed, consulte Configuração de feed por tipo.
Referência de mapeamento de campos
Esse código de analisador transforma registros brutos do Azure AD no formato JSON em um modelo de dados unificado (UDM). Primeiro, ele normaliza os dados removendo campos desnecessários e extrai informações relevantes, como detalhes do usuário, carimbos de data/hora e especificidades do evento, mapeando-os para os campos correspondentes do UDM para representação e análise consistentes.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Comentários |
|---|---|---|
about |
about |
|
accountEnabled |
user.user_authentication_statususer.attribute.labels.value (chave: accountEnabled) |
Se accountEnabled for true, user.user_authentication_status será definido como ACTIVE e um rótulo com a chave accountEnabled e o valor true será adicionado. Caso contrário, um rótulo com a chave accountEnabled e o valor false será adicionado. |
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 será extraído de usageLocation. |
createdDateTime |
user.attribute.creation_time |
Convertido para um carimbo de data/hora do campo createdDateTime no registro bruto usando o 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 será extraído de extension_employeeNumber. |
employeeType |
user.attribute.labels.value (chave: employeeType) |
Mapeado do campo employeeType no registro bruto e adicionado como um rótulo 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 será definido como ACTIVE e um rótulo com a chave accountEnabled e o valor true será adicionado. Caso contrário, um rótulo com a chave accountEnabled e o valor false será adicionado. |
empmanager-src.onPremisesDistinguishedName |
manager_role.type |
Se gopher-manager estiver vazio e a parte da OU do nome distinto do gerente contiver Users, manager_role.type será definido como ADMINISTRATOR. Se ele contiver Service Accounts, o manager_role.type será 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 será 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 do campo extension_wfc_AccountingUnitName no registro bruto e adicionado como um rótulo com a chave extension_wfc_AccountingUnitName. |
extension_wfc_AccountType |
event.idm.entity.entity.labels.value (chave: wfc_AccountType) |
Mapeado do campo extension_wfc_AccountType no registro bruto e adicionado como um rótulo com a chave wfc_AccountType. |
extension_wfc_execDescription |
event.idm.entity.entity.labels.value (chave: extension_wfc_execDescription) |
Mapeado do campo extension_wfc_execDescription no registro bruto e adicionado como um rótulo com a chave extension_wfc_execDescription. |
extension_wfc_groupDescription |
event.idm.entity.entity.labels.value (chave: extension_wfc_groupDescription) |
Mapeado do campo extension_wfc_groupDescription no registro bruto e adicionado como um rótulo com a chave extension_wfc_groupDescription. |
extension_wfc_orgDescription |
event.idm.entity.entity.labels.value (chave: extension_wfc_orgDescription) |
Mapeado do campo extension_wfc_orgDescription no registro bruto e adicionado como um rótulo 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 deviceId é mapeado para product_object_id, operatingSystem e operatingSystemVersion são combinados para formar o modelo platform_version, que é mapeado diretamente, e createdDateTime é convertido em um carimbo de data/hora e mapeado para created_timestamp. A relação é definida como OWNS e a direção como UNIDIRECTIONAL. |
gopher-groups |
event.idm.entity.relations |
Cada grupo na matriz gopher-groups é mapeado para uma entrada de relação separada. O id é mapeado para product_object_id, e o displayName é mapeado para group_display_name. A relação é definida como MEMBER e a direção 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 gopher-manager.country e gopher-manager.usageLocation estiverem vazios, o campo será deixado em branco. |
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. |
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. |
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 um rótulo 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 será mapeado para empmanager.email_addresses ou empmanager.group_identifiers, dependendo se ele começa com smtp ou SMTP. |
gopher-manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (chave: refreshTokensValidFromDateTime) |
Mapeado como um rótulo 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 um rótulo 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 (chave: signInType)user.attribute.labels.value (chave: userPrincipalName) |
O signInType é mapeado como um rótulo com a chave signInType. Se signInType e userPrincipalName não estiverem vazios, eles serão combinados e mapeados como um rótulo 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-, o user_role.type será definido como SERVICE_ACCOUNT. |
mail |
user_role.type |
Se mail começar com svc-, o user_role.type será definido como SERVICE_ACCOUNT. |
mailNickname |
user.attribute.labels.value (chave: mailNickname) |
Mapeado do campo mailNickname no registro bruto e adicionado como um rótulo 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 manager.country e manager.usageLocation estiverem vazios, o campo será deixado em branco. |
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. |
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. |
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 será 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 um rótulo 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 (chave: manager_src_usageLocation)empmanager.personal_address.country_or_region |
Mapeado como um rótulo com a chave manager_src_usageLocation. Se manager.country estiver vazio, o valor também será 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 (chave: onPremisesDistinguishedName)user.attribute.labels.value (chave: onPremisesDistinguishedName-OU data) |
O nome distinto completo é mapeado como um rótulo com a chave onPremisesDistinguishedName. A parte OU do nome distinto é extraída e mapeada como um rótulo com a chave onPremisesDistinguishedName-OU data. Se a parte OU contiver Admin, o user_role.type será definido como ADMINISTRATOR. Se ele contiver Service Accounts, o user_role.type será definido como SERVICE_ACCOUNT. |
onPremisesDistinguishedName |
user_role.type |
Se a parte OU do nome distinto contiver Admin, o user_role.type será definido como ADMINISTRATOR. Se ele contiver Service Accounts, o user_role.type será definido como SERVICE_ACCOUNT. |
onPremisesDomainName |
user.group_identifiersuser.attribute.labels.value (chave: onPremisesDomainName) |
Mapeado diretamente para user.group_identifiers e adicionado como um rótulo com a chave onPremisesDomainName. |
onPremisesImmutableId |
user.attribute.labels.value (chave: onPremisesImmutableId) |
Mapeado do campo onPremisesImmutableId no registro bruto e adicionado como um rótulo com a chave onPremisesImmutableId. |
onPremisesSamAccountName |
user.useriduser.attribute.labels.value (chave: onPremisesSamAccountName) |
Mapeado para user.userid se sAMAccountName estiver vazio. Também adicionado como um rótulo 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 com Win, Mac ou Lin, ele será 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, ele será mapeado para security_result.detection_fields. Caso contrário, será 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 como user.email_addresses ou user.group_identifiers, dependendo se começa com smtp ou SMTP. Se o endereço começar com smtp ou SMTP, o prefixo smtp: ou SMTP: será removido, e o restante do endereço de e-mail será 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 com Win, Mac ou Lin, ele será 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"], ele será 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 do campo refreshTokensValidFromDateTime no registro bruto e adicionado como um rótulo 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 será 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-, o user_role.type será definido como SERVICE_ACCOUNT. |
userPrincipalName |
user_role.type |
Se userPrincipalName começar com svc-, o user_role.type será definido como SERVICE_ACCOUNT. |
userType |
additional.fields |
|
| N/A | event.idm.entity.metadata.vendor_name |
Defina como Microsoft. |
| N/A | event.idm.entity.metadata.product_name |
Defina como Azure Active Directory. |
| N/A | event.idm.entity.metadata.entity_type |
Defina como USER. |
| N/A | event.idm.entity.metadata.collected_timestamp |
Definido como o campo create_time do registro bruto. |
Referência delta do mapeamento da UDM
Em 1º de janeiro de 2026, o Google SecOps lançou uma nova versão do analisador do Azure AD, que inclui mudanças significativas no mapeamento de campos de registro do Azure AD para campos do UDM e no mapeamento de tipos de eventos.
Delta de mapeamento de campo de registro
A tabela a seguir lista o delta de mapeamento para campos de registro do Azure AD para UDM expostos antes de 1º de janeiro de 2026 e posteriormente (listados nas colunas Mapeamento antigo e Mapeamento atual, respectivamente):
| Campo de registro | 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 |
Delta de mapeamento de tipo de evento
A tabela a seguir lista o delta para o processamento de tipos de eventos do Azure AD antes de 1º de janeiro de 2026 e depois (listados nas colunas Old event_type e Current event-type, respectivamente):
| ID do evento do registro | Old event_type | event_type atual | Observação |
|---|---|---|---|
has_resource = true |
GENERIC_EVENT |
USER_RESOURCE_ACCESS |
O tipo de evento é mapeado para USER_RESOURCE_ACCESS nos 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 em operações que envolvem especificamente a adição de um membro a um grupo (em que operationName = Add member to group). |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.