Recopila registros de Microsoft Azure AD
En este documento, se describe cómo puedes recopilar registros de Microsoft Azure Active Directory (AD) configurando un feed de Google Security Operations.
Azure Active Directory (AZURE_AD) ahora se llama Microsoft Entra ID. Los registros de auditoría de Azure AD (AZURE_AD_AUDIT) ahora son registros de auditoría de Microsoft Entra ID.
Para obtener más información, consulta Transferencia de datos a Google Security Operations.
Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar en formato UDM estructurado.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una suscripción a Azure a la que puedas acceder
- Un rol de administrador global o de administrador de Azure AD
- Un directorio de Azure AD (inquilino) en Azure
Cómo configurar Azure AD
- Accede al portal de Azure.
- Ve a Página principal > Registro de la aplicación, selecciona una aplicación registrada o registra una aplicación si aún no creaste una.
- Para registrar una aplicación, en la sección Registro de aplicaciones, haz clic en Nuevo registro.
- En el campo Nombre, proporciona el nombre visible de tu aplicación.
En la sección Tipos de cuentas compatibles, selecciona Cuentas solo en este directorio de la organización (inquilino único).
- URI de redireccionamiento: Déjalo en blanco (no es necesario para la autenticación de la entidad de servicio).
Haz clic en Registrar.
Ve a la página Overview y copia el ID de la aplicación (cliente) y el ID del directorio (inquilino), que son necesarios para configurar el feed de Google Security Operations.
Haz clic en Permisos de la API.
Haz clic en Add a permission y, luego, selecciona Microsoft Graph en el panel nuevo.
Haz clic en Permisos de aplicación.
Selecciona los permisos AuditLog.Read.All, Directory.Read.All y SecurityEvents.Read.All. Asegúrate de que los permisos sean permisos de la aplicación y no permisos delegados.
Haz clic en Grant admin consent for default directory. Las aplicaciones están autorizadas para llamar a las APIs cuando los usuarios o administradores les otorgan permisos como parte del proceso de consentimiento.
Ve a Configuración > Administrar.
Haz clic en Certificados y Secrets.
Haz clic en Nuevo secreto de cliente. En el campo Valor, aparece el secreto del cliente.
Copia el valor del secreto del cliente. El valor solo se muestra en el momento de la creación y es necesario para el registro de la app de Azure y para configurar el feed de Google Security Operations.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds > Agregar un feed nuevo
- Centro de contenido > Paquetes de contenido > Comenzar
Cómo configurar el feed de Microsoft Entra ID (Azure AD)
- Haz clic en el paquete Azure Platform.
- Busca el tipo de registro Azure AD.
Especifica valores para los siguientes campos:
- Tipo de fuente: API de terceros (recomendado)
- ID de cliente de OAUTH: Especifica el ID de cliente que obtuviste antes.
- Secreto del cliente de OAUTH: Especifica el secreto del cliente que obtuviste antes.
- ID de arrendatario: Especifica el ID de arrendatario que obtuviste antes.
- Ruta de acceso completa de la API: URL del extremo de API de REST de Microsoft Graph.
- Extremo de autenticación de la API: Es el extremo de autenticación de Microsoft Active Directory.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Espacio de nombres del recurso: Espacio de nombres asociado al feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Haz clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Configura feeds por producto.
Para obtener más información sobre los feeds de Google Security Operations, consulta la documentación de los feeds de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de feed, consulta Configuración de feeds por tipo.
Referencia de la asignación de campos
Este código del analizador transforma los registros sin procesar de Azure AD en formato JSON en un modelo de datos unificado (UDM). Primero, normaliza los datos quitando los campos innecesarios y, luego, extrae la información pertinente, como los detalles del usuario, las marcas de tiempo y los detalles específicos del evento, y los asigna a los campos correspondientes del UDM para garantizar una representación y un análisis coherentes.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Comentarios |
|---|---|---|
about |
about |
|
accountEnabled |
user.user_authentication_statususer.attribute.labels.value (clave: accountEnabled) |
Si accountEnabled es true, user.user_authentication_status se establece en ACTIVE y se agrega una etiqueta con la clave accountEnabled y el valor true. De lo contrario, se agrega una etiqueta con la clave accountEnabled y el 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 |
Se extraen varios números de teléfono y se asignan como entradas independientes. |
city |
user.personal_address.city |
|
clientCredentialType |
additional.fields |
|
companyName |
user.company_name |
|
country |
user.personal_address.country_or_region |
Si country está vacío, el valor se toma de usageLocation. |
createdDateTime |
user.attribute.creation_time |
Se convirtió en una marca de tiempo del campo createdDateTime en el registro sin procesar con el formato RFC 3339. |
cribl_pipe |
additional.fields |
|
crossTenantAccessType |
additional.fields |
|
department |
user.department |
Se extraen varios departamentos y se asignan como entradas separadas. |
deviceDetail.displayName |
principal.hostname,principal.asset.hostname |
|
displayName |
user.user_display_name |
|
employeeId |
user.employee_id |
Si employeeId está vacío, el valor se toma de extension_employeeNumber. |
employeeType |
user.attribute.labels.value (clave: employeeType) |
Se asigna desde el campo employeeType en el registro sin procesar y se agrega como una etiqueta con la clave employeeType. |
empmanager-src.accountEnabled |
user.user_authentication_statususer.attribute.labels.value (clave: accountEnabled) |
Si manager está vacío y empmanager-src.accountEnabled es true, user.user_authentication_status se establece en ACTIVE y se agrega una etiqueta con la clave accountEnabled y el valor true. De lo contrario, se agrega una etiqueta con la clave accountEnabled y el valor false. |
empmanager-src.onPremisesDistinguishedName |
manager_role.type |
Si gopher-manager está vacío y la parte de la UO del nombre distinguido del administrador contiene Users, manager_role.type se establece en ADMINISTRATOR. Si contiene Service Accounts, manager_role.type se establece en SERVICE_ACCOUNT. |
empmanager-src.userPrincipalName |
manager_role.type |
Si gopher-manager está vacío y empmanager-src.userPrincipalName comienza con svc-, manager_role.type se establece en SERVICE_ACCOUNT. |
errorCode |
security_result.detection_fields |
|
extension_employeeNumber |
user.employee_id |
Se asigna a user.employee_id si employeeId está vacío. |
extension_wfc_AccountingUnitName |
event.idm.entity.entity.labels.value (clave: extension_wfc_AccountingUnitName) |
Se asigna desde el campo extension_wfc_AccountingUnitName en el registro sin procesar y se agrega como una etiqueta con la clave extension_wfc_AccountingUnitName. |
extension_wfc_AccountType |
event.idm.entity.entity.labels.value (clave: wfc_AccountType) |
Se asigna desde el campo extension_wfc_AccountType en el registro sin procesar y se agrega como una etiqueta con la clave wfc_AccountType. |
extension_wfc_execDescription |
event.idm.entity.entity.labels.value (clave: extension_wfc_execDescription) |
Se asigna desde el campo extension_wfc_execDescription en el registro sin procesar y se agrega como una etiqueta con la clave extension_wfc_execDescription. |
extension_wfc_groupDescription |
event.idm.entity.entity.labels.value (clave: extension_wfc_groupDescription) |
Se asigna desde el campo extension_wfc_groupDescription en el registro sin procesar y se agrega como una etiqueta con la clave extension_wfc_groupDescription. |
extension_wfc_orgDescription |
event.idm.entity.entity.labels.value (clave: extension_wfc_orgDescription) |
Se asigna desde el campo extension_wfc_orgDescription en el registro sin procesar y se agrega como una etiqueta con la clave 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 del array gopher-devices se asigna a una entrada de relación independiente. El deviceId se asigna a product_object_id, el operatingSystem y el operatingSystemVersion se combinan para formar el modelo platform_version, que se asigna directamente, y el createdDateTime se convierte en una marca de tiempo y se asigna a created_timestamp. La relación se establece en OWNS y la dirección se establece en UNIDIRECTIONAL. |
gopher-groups |
event.idm.entity.relations |
Cada grupo del array gopher-groups se asigna a una entrada de relación independiente. id se asigna a product_object_id y displayName se asigna a group_display_name. La relación se establece en MEMBER y la dirección se establece en UNIDIRECTIONAL. |
gopher-manager.businessPhones |
empmanager.phone_numbers |
Se asigna a empmanager.phone_numbers si manager está vacío. |
gopher-manager.country |
empmanager.personal_address.country_or_region |
Se asigna a empmanager.personal_address.country_or_region si manager está vacío. Si gopher-manager.country y gopher-manager.usageLocation están vacíos, el campo se deja vacío. |
gopher-manager.department |
empmanager.department |
Se asigna a empmanager.department si manager está vacío. |
gopher-manager.displayName |
empmanager.user_display_name |
Se asigna a empmanager.user_display_name si manager está vacío. |
gopher-manager.employeeId |
empmanager.employee_id |
Se asigna a empmanager.employee_id si manager está vacío y gopher-manager.employeeId no está vacío. |
gopher-manager.extension_employeeNumber |
empmanager.employee_id |
Se asigna a empmanager.employee_id si manager y gopher-manager.employeeId están vacíos, y gopher-manager.extension_employeeNumber no está vacío. |
gopher-manager.givenName |
empmanager.first_name |
Se asigna a empmanager.first_name si manager está vacío. |
gopher-manager.id |
empmanager.product_object_id |
Se asigna a empmanager.product_object_id si manager está vacío. |
gopher-manager.jobTitle |
empmanager.title |
Se asigna a empmanager.title si manager está vacío. |
gopher-manager.mail |
empmanager.email_addresses |
Se asigna a empmanager.email_addresses si manager está vacío. |
gopher-manager.onPremisesImmutableId |
user.attribute.labels.value (clave: gopher-manager onPremisesImmutableId) |
Se asigna como una etiqueta con la clave gopher-manager onPremisesImmutableId. |
gopher-manager.onPremisesSamAccountName |
empmanager.userid |
Se asigna a empmanager.userid si manager está vacío. |
gopher-manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Se asigna a empmanager.windows_sid si manager está vacío. |
gopher-manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Si manager está vacío, cada dirección del array gopher-manager.proxyAddresses se asigna a empmanager.email_addresses o empmanager.group_identifiers según si comienza con smtp o SMTP. |
gopher-manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (clave: refreshTokensValidFromDateTime) |
Se asigna como una etiqueta con la clave refreshTokensValidFromDateTime si manager está vacío. |
gopher-manager.streetAddress |
empmanager.personal_address.name |
Se asigna a empmanager.personal_address.name si manager está vacío. |
gopher-manager.surname |
empmanager.last_name |
Se asigna a empmanager.last_name si manager está vacío. |
gopher-manager.usageLocation |
user.attribute.labels.value (clave: manager_src_usageLocation) |
Se asigna como una etiqueta con la clave manager_src_usageLocation. |
gopher-manager.userType |
empmanager.attribute.roles.name |
Se asigna a empmanager.attribute.roles.name si manager está vacío. |
homeTenantId |
target.resource.attribute.labels |
|
homeTenantName |
target.resource.attribute.labels |
|
id |
user.product_object_id |
|
identities |
user.attribute.labels.value (clave: signInType)user.attribute.labels.value (clave: userPrincipalName) |
El signInType se asigna como una etiqueta con la clave signInType. Si signInType y userPrincipalName no están vacíos, se combinan y se asignan como una etiqueta con la clave userPrincipalName. |
identity |
principal.user.user_display_name |
|
incomingTokenType |
additional.fields |
|
initiatedBy.app.displayName |
principal.application |
|
initiatedBy.app.servicePrincipalId |
principal.resource.product_object_id |
|
initiatedBy.user.homeTenantId |
target.resource.attribute.labels |
|
initiatedBy.user.homeTenantName |
target.resource.attribute.labels |
|
initiatedBy.user.userType |
additional.fields |
|
ipAddressFromResourceProvider |
principal.resource.attribute.labels |
|
isTenantRestricted |
additional.fields |
|
jobTitle |
user.title |
|
loggedByService |
observer.application |
|
mail |
user.email_addresses |
Si mail comienza con svc-, user_role.type se establece en SERVICE_ACCOUNT. |
mail |
user_role.type |
Si mail comienza con svc-, user_role.type se establece en SERVICE_ACCOUNT. |
mailNickname |
user.attribute.labels.value (clave: mailNickname) |
Se asigna desde el campo mailNickname en el registro sin procesar y se agrega como una etiqueta con la clave mailNickname. |
manager.businessPhones |
empmanager.phone_numbers |
Se asigna a empmanager.phone_numbers si gopher-manager está vacío. |
manager.city |
empmanager.personal_address.city |
Se asigna a empmanager.personal_address.city si gopher-manager está vacío. |
manager.companyName |
empmanager.company_name |
Se asigna a empmanager.company_name si gopher-manager está vacío. |
manager.country |
empmanager.personal_address.country_or_region |
Se asigna a empmanager.personal_address.country_or_region si gopher-manager está vacío. Si manager.country y manager.usageLocation están vacíos, el campo se deja vacío. |
manager.department |
empmanager.department |
Se asigna a empmanager.department si gopher-manager está vacío. |
manager.displayName |
empmanager.user_display_name |
Se asigna a empmanager.user_display_name si gopher-manager está vacío. |
manager.employeeId |
empmanager.employee_id |
Se asigna a empmanager.employee_id si gopher-manager está vacío y manager.employeeId no está vacío. |
manager.extension_employeeNumber |
empmanager.employee_id |
Se asigna a empmanager.employee_id si gopher-manager y manager.employeeId están vacíos, y manager.extension_employeeNumber no está vacío. |
manager.givenName |
empmanager.first_name |
Se asigna a empmanager.first_name si gopher-manager está vacío. |
manager.id |
empmanager.product_object_id |
Se asigna a empmanager.product_object_id si gopher-manager está vacío. |
manager.jobTitle |
empmanager.title |
Se asigna a empmanager.title si gopher-manager está vacío. |
manager.mail |
empmanager.email_addresses |
Se asigna a empmanager.email_addresses si gopher-manager está vacío. |
manager.onPremisesSamAccountName |
empmanager.userid |
Se asigna a empmanager.userid si gopher-manager está vacío. |
manager.onPremisesSecurityIdentifier |
empmanager.windows_sid |
Se asigna a empmanager.windows_sid si gopher-manager está vacío. |
manager.proxyAddresses |
empmanager.email_addressesempmanager.group_identifiers |
Si gopher-manager está vacío, cada dirección del array manager.proxyAddresses se asigna a empmanager.email_addresses o empmanager.group_identifiers based on whether it starts withsmtporSMTP`. |
manager.refreshTokensValidFromDateTime |
empmanager.attribute.labels.value (clave: refreshTokensValidFromDateTime) |
Se asigna como una etiqueta con la clave refreshTokensValidFromDateTime si gopher-manager está vacío. |
manager.state |
empmanager.personal_address.state |
Se asigna a empmanager.personal_address.state si gopher-manager está vacío. |
manager.streetAddress |
empmanager.personal_address.name |
Se asigna a empmanager.personal_address.name si gopher-manager está vacío. |
manager.surname |
empmanager.last_name |
Se asigna a empmanager.last_name si gopher-manager está vacío. |
manager.usageLocation |
user.attribute.labels.value (clave: manager_src_usageLocation)empmanager.personal_address.country_or_region |
Se asigna como una etiqueta con la clave manager_src_usageLocation. Si manager.country está vacío, el valor también se asigna a empmanager.personal_address.country_or_region. |
manager.userType |
empmanager.attribute.roles.name |
Se asigna a empmanager.attribute.roles.name si gopher-manager está vacío. |
mfaDetail.authDetail |
principal.user.phone_numbers |
|
onPremisesDistinguishedName |
user.attribute.labels.value (clave: onPremisesDistinguishedName)user.attribute.labels.value (clave: onPremisesDistinguishedName-OU data) |
El nombre completo distinguido se asigna como una etiqueta con la clave onPremisesDistinguishedName. La parte OU del nombre distintivo se extrae y se asigna como una etiqueta con la clave onPremisesDistinguishedName-OU data. Si la parte OU contiene Admin, el user_role.type se establece en ADMINISTRATOR. Si contiene Service Accounts, user_role.type se establece en SERVICE_ACCOUNT. |
onPremisesDistinguishedName |
user_role.type |
Si la parte OU del nombre único contiene Admin, el valor de user_role.type se establece en ADMINISTRATOR. Si contiene Service Accounts, user_role.type se establece en SERVICE_ACCOUNT. |
onPremisesDomainName |
user.group_identifiersuser.attribute.labels.value (clave: onPremisesDomainName) |
Se asigna directamente a user.group_identifiers y se agrega como una etiqueta con la clave onPremisesDomainName. |
onPremisesImmutableId |
user.attribute.labels.value (clave: onPremisesImmutableId) |
Se asigna desde el campo onPremisesImmutableId en el registro sin procesar y se agrega como una etiqueta con la clave onPremisesImmutableId. |
onPremisesSamAccountName |
user.useriduser.attribute.labels.value (clave: onPremisesSamAccountName) |
Se asigna a user.userid si sAMAccountName está vacío. También se agregó como una etiqueta con la clave 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 |
Si operatingSystem comienza con Win, Mac o Lin, se asigna a principal.platform. |
properties.deviceDetail.trustType |
principal.asset.attribute.labels |
|
properties.EventData.AuthenticationPackageName |
security_result.about.resource.name |
|
properties.EventData.CallerProcessId |
principal.process.pid |
|
properties.EventData.CallerProcessName |
principal.process.file.full_path |
|
properties.EventData.CertIssuerName |
additional.fields |
|
properties.EventData.CertSerialNumber |
about.artifact.last_https_certificate.serial_number |
|
properties.EventData.CertThumbprint |
additional.fields |
|
properties.EventData.HandleId |
target.resource.attribute.labels |
|
properties.EventData.ImpersonationLevel |
additional.fields |
|
properties.EventData.IpAddress |
principal.ipprincipal.asset.ip |
|
properties.EventData.IpPort |
principal.port |
|
properties.EventData.KeyLength |
additional.fields |
|
properties.EventData.LmPackageName |
target.resource.attribute.labels |
|
properties.EventData.LogonGuid |
security_result.detection_fields |
|
properties.EventData.LogonProcessName |
target.process.file.names |
|
properties.EventData.LogonType |
extensions.auth.auth_details |
|
properties.EventData.NewSd |
security_result.detection_fields |
|
properties.EventData.ObjectName |
target.resource.name |
|
properties.EventData.ObjectServer |
target.resource.attribute.labels |
|
properties.EventData.ObjectType |
target.resource.resource_subtype |
|
properties.EventData.OldSd |
security_result.detection_fields |
|
properties.EventData.PreAuthType |
extensions.auth.mechanism |
|
properties.EventData.ProcessId |
target.process.pid |
|
properties.EventData.ProcessName" |
target.process.file.full_path |
|
properties.EventData.ServiceName |
target.application |
|
properties.EventData.ServiceSid |
target.resource.user.windows_sid |
|
properties.EventData.Source |
principal.ipprincipal.asset.ip |
|
properties.EventData.Status |
security_result.detection_fields |
|
properties.EventData.SubjectDomainName |
principal.administrative_domain |
|
properties.EventData.SubjectLogonId |
principal.resource.attribute.labels |
|
properties.EventData.SubjectUserName |
principal.user.userid |
|
properties.EventData.SubjectUserSid |
principal.user.windows_sid |
|
properties.EventData.TargetDomainName |
target.administrative_domain |
|
properties.EventData.TargetLogonId |
target.resource.attribute.labels |
|
properties.EventData.TargetSid |
target.user.windows_sid |
|
properties.EventData.TargetUserName |
target.user.userid |
|
properties.EventData.TargetUserSid |
target.user.windows_sid |
|
properties.EventData.TicketEncryptionType |
security_result.detection_fields |
|
properties.EventData.TicketOptions |
security_result.detection_fields" |
|
properties.EventData.TransmittedServices |
security_result.detection_fields |
|
properties.EventData.WorkstationName |
target.hostnametarget.asset.hostname |
|
properties.flaggedForReview |
additional.fields |
|
properties.homeTenantId |
target.resource.attribute.labels |
|
properties.incomingTokenType |
additional.fields |
|
properties.initiatedBy.app.displayName |
principal.user.user_display_name |
|
properties.initiatedBy.user.displayName |
principal.user.user_display_name |
|
properties.initiatedBy.user.id |
principal.user.product_object_id |
|
properties.initiatedBy.user.ipAddress |
principal.ip,principal.asset.ip |
|
properties.ipAddressFromResourceProvider |
principal.resource.attribute.labels |
|
properties.isInteractive |
additional.fields |
|
properties.isTenantRestricted |
additional.fields |
|
properties.isThroughGlobalSecureAccess |
additional.fields |
|
properties.location.geoCoordinates.altitude |
additional.fields |
|
properties.loggedByService |
observer.application |
|
properties.mfaDetail.authDetail |
principal.user.phone_numbers |
|
properties.operationType |
target.resource.attribute.labels |
|
properties.originalRequestId |
network.session_id |
|
properties.originalTransferMethod |
additional.fields |
|
properties.processingTimeInMilliseconds |
additional.fields |
|
properties.RecordId |
metadata.product_log_id |
|
properties.requestId |
security_result.detection_fields |
|
properties.requestMethod |
network.http.method |
|
properties.requestUri |
network.http.referral_url |
|
properties.resourceDisplayName |
target.resource.name |
|
properties.resourceId |
target.resource.attribute.labels |
|
properties.resourceOwnerTenantId |
target.resource.attribute.labels |
|
properties.resourceTenantId |
target.resource.attribute.labels |
|
properties.responseSizeBytes |
network.received_bytes |
|
properties.responseStatusCode |
network.http.response_code |
|
properties.resultReason |
additional.fieldssecurity_result.summary |
|
properties.resultType |
additional.fields |
|
properties.riskDetail |
security_result.detection_fields |
|
properties.riskEventType |
security_result.detection_fields |
|
properties.riskLastUpdatedDateTime |
security_result.detection_fields |
|
properties.riskLevel |
security_result.detection_fields |
|
properties.riskLevelAggregated |
security_result.detection_fields |
|
properties.riskLevelDuringSignIn |
security_result.detection_fields |
|
properties.riskState |
security_result.detection_fields |
|
properties.riskType |
security_result.detection_fields |
|
properties.rngcStatus |
additional.fields |
|
properties.roles |
principal.user.attribute.roles |
|
properties.scopes |
security_result.detection_fields |
|
properties.servicePrincipalCredentialKeyId |
additional.fields |
|
properties.sessionLifetimePolicies |
security_result.detection_fields |
|
properties.signInActivityId |
additional.fields |
|
properties.SignInBondData.DeviceDetails.DeviceTrustType |
principal.asset.attribute.labels |
|
properties.SignInBondData.DeviceDetails.IsCompliant |
security_result.rule_labels |
|
properties.SignInBondData.DeviceDetails.IsManaged |
principal.asset.attribute.labels |
|
properties.SignInBondData.DisplayDetails.AttemptedUsername |
principal.user.email_addresses |
|
properties.SignInBondData.DisplayDetails.ProxyRestrictionTargetTenantName |
additional.fields |
|
properties.SignInBondData.DisplayDetails.ResourceDisplayName |
target.resource.name |
|
properties.SignInBondData.LocationDetails.IPChain |
target.ip |
|
properties.SignInBondData.LocationDetails.Latitude |
additional.fields |
|
properties.SignInBondData.LocationDetails.Longitude |
additional.fields |
|
properties.SignInBondData.MfaDetails |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.AuthenticationMethodsUsed |
extensions.auth.auth_details |
|
properties.SignInBondData.ProtocolDetails.DomainHintPresent |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.IsInteractive |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.LoginHintPresent |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.NetworkLocation |
additional.fields" |
|
properties.SignInBondData.ProtocolDetails.Protocol |
security_result.detection_fields |
Si properties.SignInBondData.ProtocolDetails.Protocol == WSTrust, se asigna a security_result.detection_fields; de lo contrario, se asigna 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 |
Cada dirección del array proxyAddresses se asigna a user.email_addresses o user.group_identifiers según si comienza con smtp o SMTP. Si la dirección comienza con smtp o SMTP, se quita el prefijo smtp: o SMTP:, y se extrae la dirección de correo electrónico restante y se asigna a user.email_addresses. |
record.CorrelationId |
additional.fields |
|
record.CrossTenantAccessType |
additional.fields |
|
record.DeviceDetail.deviceId |
network.session_id |
|
record.DeviceDetail.operatingSystem |
principal.platform_version |
Si operatingSystem comienza con Win, Mac o Lin, se asigna a principal.platform. |
record.IsInteractive |
additional.fields |
|
record.level |
security_result.severity_details |
Si record_level está en ["INFORMATION", "INFORMATIONAL", "0", "4", "WARNING", "1", "3","ERROR", "2","CRITICAL"], se asigna 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 (clave: refreshTokensValidFromDateTime) |
Se asigna desde el campo refreshTokensValidFromDateTime en el registro sin procesar y se agrega como una etiqueta con la clave refreshTokensValidFromDateTime. |
resourceOwnerTenantId |
target.resource.attribute.labels |
|
resourceTenantId |
target.resource.attribute.labels |
|
resultDescription |
security_result.description |
|
resultReason |
additional.fields |
|
resultType |
additional.fields |
|
riskDetail |
security_result.detection_fields |
|
riskLevelAggregated |
security_result.detection_fields |
|
riskLevelDuringSignIn |
security_result.detection_fields |
|
riskState |
security_result.detection_fields |
|
sAMAccountName |
user.userid |
|
servicePrincipalCredentialKeyId |
additional.fields |
|
servicePrincipalCredentialThumbprint |
additional.fields |
|
servicePrincipalId |
target.resource.attribute.labels |
|
servicePrincipalName |
additional.fields |
|
sessionId |
network.session_id |
|
signInIdentifier |
target.user.userid |
|
signInIdentifierType |
additional.fields |
|
signInTokenProtectionStatus |
additional.fields |
|
state |
user.personal_address.state |
|
status.additionalDetails |
additional.fields |
|
streetAddress |
user.personal_address.name |
|
surname |
user.last_name |
|
targets.modifiedProperties |
target.resource.attribute.labels |
|
tokenIssuerName |
additional.fields |
|
tokenIssuerType |
additional.fields |
|
tokenProtectionStatusDetails.signInSessionStatus |
security_result.detection_fields |
|
uniqueTokenIdentifier |
additional.fields |
|
usageLocation |
user.personal_address.country_or_region |
Si country está vacío, el valor se asigna a user.personal_address.country_or_region. |
userDisplayName |
principal.user.user_display_name |
|
userId |
principal.user.product_object_id |
|
userPrincipalName |
user.email_addresses |
Si userPrincipalName comienza con svc-, user_role.type se establece en SERVICE_ACCOUNT. |
userPrincipalName |
user_role.type |
Si userPrincipalName comienza con svc-, user_role.type se establece en SERVICE_ACCOUNT. |
userType |
additional.fields |
|
| N/A | event.idm.entity.metadata.vendor_name |
Se define en Microsoft. |
| N/A | event.idm.entity.metadata.product_name |
Se define en Azure Active Directory. |
| N/A | event.idm.entity.metadata.entity_type |
Se define en USER. |
| N/A | event.idm.entity.metadata.collected_timestamp |
Se establece en el campo create_time del registro sin procesar. |
Referencia del delta de asignación del UDM
El 1 de enero de 2026, Google SecOps lanzó una nueva versión del analizador de Azure AD, que incluye cambios significativos en la asignación de campos de registro de Azure AD a campos del UDM y cambios en la asignación de tipos de eventos.
Delta de la asignación de campos de registro
En la siguiente tabla, se muestra el delta de asignación para los campos de registro de Azure AD a UDM expuestos antes del 1 de enero de 2026 y posteriormente (se enumeran en las columnas Asignación anterior y Asignación actual, respectivamente):
| Campo de registro | Asignación anterior | Asignación actual |
|---|---|---|
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 la asignación de tipos de eventos
En la siguiente tabla, se muestra el delta para el control de los tipos de eventos de Azure AD antes del 1 de enero de 2026 y después (se enumeran en las columnas Old event_type y Current event-type, respectivamente):
| ID del evento del registro | Old event_type | event_type actual | Observación |
|---|---|---|---|
has_resource = true |
GENERIC_EVENT |
USER_RESOURCE_ACCESS |
El tipo de evento se asigna a USER_RESOURCE_ACCESS para los casos en los que el evento pertenece a un recurso (indicado por has_resource = true). |
operationName = Add member to group |
USER_CHANGE_PERMISSIONS |
GROUP_MODIFICATION |
El tipo de evento se asigna a GROUP_MODIFICATION para las operaciones que implican específicamente agregar un miembro a un grupo (donde operationName = Add member to group). |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.