Recoger registros de contexto de Microsoft Azure AD

Disponible en:

En este documento se describe cómo puede recoger 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 Ingestión de datos en Google Security Operations.

Una etiqueta de ingestión identifica el analizador que normaliza los datos de registro sin procesar en formato UDM estructurado.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una suscripción a Azure con la que puedas iniciar sesión
  • Rol de administrador global o de Azure AD
  • Un Azure AD (inquilino) en Azure

Cómo configurar Azure AD

  1. Inicia sesión en el portal de Azure.
  2. Ve a Inicio > Registro de aplicaciones, selecciona una aplicación registrada o registra una si aún no has creado ninguna.
  3. Para registrar una aplicación, en la sección Registro de aplicaciones, haz clic en Nuevo registro.
  4. En el campo Name (Nombre), indica el nombre visible de tu aplicación.
  5. En la sección Tipos de cuentas admitidos, selecciona la opción necesaria para especificar quién puede usar la aplicación o acceder a la API.
  6. Haz clic en Registrarse.
  7. Ve a la página Descripción general y copia el ID de aplicación (cliente) y el ID de directorio (inquilino), que son necesarios para configurar el feed de Google Security Operations.
  8. Haz clic en Permisos de API.
  9. Haz clic en Añadir un permiso y, a continuación, selecciona Microsoft Graph en el nuevo panel.
  10. Haz clic en Permisos de la aplicación.
  11. Selecciona los permisos AuditLog.Read.All, Directory.Read.All y SecurityEvents.Read.All. Asegúrate de que los permisos sean Permisos de aplicación y no Permisos delegados.
  12. Haz clic en Conceder consentimiento de administrador para el directorio predeterminado. Las aplicaciones están autorizadas para llamar a las APIs cuando los usuarios o los administradores les conceden permisos como parte del proceso de consentimiento.
  13. Ve a Ajustes > Gestionar.
  14. Haz clic en Certificados y secretos.
  15. Haz clic en Nuevo secreto de cliente. En el campo Valor, aparece el secreto de cliente.
  16. Copia el valor del secreto de cliente. El valor solo se muestra en el momento de la creación y es necesario para registrar la aplicación de Azure y configurar el feed de Google Security Operations.

Configurar feeds

Hay dos puntos de entrada diferentes para configurar feeds en la plataforma Google SecOps:

  • Configuración de SIEM > Feeds > Añadir nuevo feed
  • Centro de contenido > Paquetes de contenido > Empezar

Cómo configurar el feed de contexto de Microsoft Azure AD

  1. Haz clic en el paquete Plataforma de Azure.
  2. Busca el tipo de registro Contexto organizativo de Azure AD.
  3. Especifique los valores de los siguientes campos:

    • Tipo de fuente: API de terceros (opción recomendada)
    • ID de cliente de OAuth: especifica el ID de cliente que has obtenido anteriormente.
    • Secreto de cliente de OAuth: especifica el secreto de cliente que has obtenido anteriormente.
    • ID de cliente: especifica el ID de cliente que has obtenido anteriormente.
    • Recuperar dispositivos: indica si se debe recuperar la información del dispositivo en el contexto del usuario.
    • Recuperar grupos: indica si se debe recuperar la información de pertenencia a grupos en el contexto del usuario.
    • Ruta completa de la API: URL del endpoint de la API REST de Microsoft Graph.
    • Endpoint de autenticación de la API: endpoint de autenticación de Microsoft Active Directory.

    Opciones avanzadas

    • Nombre del feed: un valor rellenado automáticamente que identifica el feed.
    • Espacio de nombres de recursos: espacio de nombres asociado al feed.
    • Etiquetas de ingestión: etiquetas aplicadas a todos los eventos de este feed.
  4. Haga clic en Crear feed.

Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros en esta familia de productos, consulta el artículo Configurar 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 el artículo Configuración de feeds por tipo. Si tienes problemas al crear feeds, ponte en contacto con el equipo de Asistencia de Google Security Operations.

Referencia de asignación de campos

Este código de analizador transforma los registros sin procesar con formato JSON de Azure Active Directory en un modelo de datos unificado (UDM). Extrae información de usuarios y administradores, incluidos atributos, roles, relaciones y etiquetas, al tiempo que gestiona varias incoherencias de datos y enriquece el resultado con campos estandarizados.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
businessPhones user.phone_numbers Se asigna directamente desde el campo businessPhones del registro sin procesar. Se extraen varios números de teléfono y se asignan como entradas independientes.
ciudad user.personal_address.city Se asigna directamente desde el campo city del registro sin procesar.
companyName user.company_name Se asigna directamente desde el campo companyName del registro sin procesar.
país user.personal_address.country_or_region Se asigna directamente desde el campo country del registro sin procesar. Si country está vacío, el valor se toma de usageLocation.
createdDateTime user.attribute.creation_time Se ha convertido en una marca de tiempo a partir del campo createdDateTime del registro sin procesar con el formato RFC 3339.
department user.department Se asigna directamente desde el campo department del registro sin procesar. Se extraen varios departamentos y se asignan como entradas independientes.
displayName user.user_display_name Se asigna directamente desde el campo displayName del registro sin procesar.
employeeId user.employee_id Se asigna directamente desde el campo employeeId del registro sin procesar. Si employeeId está vacío, el valor se toma de extension_employeeNumber.
employeeType user.attribute.labels.value (key: employeeType) Se asigna directamente desde el campo employeeType del registro sin procesar y se añade como etiqueta con la clave employeeType.
extension_employeeNumber user.employee_id Se asigna a user.employee_id si employeeId está vacío.
extension_wfc_AccountType event.idm.entity.entity.labels.value (key: wfc_AccountType) Se asigna directamente desde el campo extension_wfc_AccountType del registro sin procesar y se añade como etiqueta con la clave wfc_AccountType.
extension_wfc_AccountingUnitName event.idm.entity.entity.labels.value (key: extension_wfc_AccountingUnitName) Se asigna directamente desde el campo extension_wfc_AccountingUnitName del registro sin procesar y se añade como etiqueta con la clave extension_wfc_AccountingUnitName.
extension_wfc_execDescription event.idm.entity.entity.labels.value (key: extension_wfc_execDescription) Se asigna directamente desde el campo extension_wfc_execDescription del registro sin procesar y se añade como etiqueta con la clave extension_wfc_execDescription.
extension_wfc_groupDescription event.idm.entity.entity.labels.value (key: extension_wfc_groupDescription) Se asigna directamente desde el campo extension_wfc_groupDescription del registro sin procesar y se añade como etiqueta con la clave extension_wfc_groupDescription.
extension_wfc_orgDescription event.idm.entity.entity.labels.value (key: extension_wfc_orgDescription) Se asigna directamente desde el campo extension_wfc_orgDescription del registro sin procesar y se añade como etiqueta con la clave extension_wfc_orgDescription.
givenName user.first_name Se asigna directamente desde el campo givenName del registro sin procesar.
gopher-devices event.idm.entity.relations Cada dispositivo de la matriz gopher-devices se asigna a una entrada de relación independiente. deviceId se asigna a product_object_id, operatingSystem y operatingSystemVersion se combinan para formar platform_version, model se asigna directamente y 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 en UNIDIRECTIONAL.
gopher-groups event.idm.entity.relations Cada grupo de la matriz 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 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 tanto gopher-manager.country como 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 lo está.
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_addresses, empmanager.group_identifiers Si manager está vacío, cada dirección de la matriz gopher-manager.proxyAddresses se asigna a empmanager.email_addresses o empmanager.group_identifiers en función de si empieza por "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.
id user.product_object_id Se asigna directamente desde el campo id del registro sin procesar.
identidades user.attribute.labels.value (key: signInType), user.attribute.labels.value (key: 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.
jobTitle user.title Se asigna directamente desde el campo jobTitle del registro sin procesar.
mail user.email_addresses Se asigna directamente desde el campo mail del registro sin procesar. Si mail empieza por "svc-", user_role.type se define como SERVICE_ACCOUNT.
mailNickname user.attribute.labels.value (clave: mailNickname) Se asigna directamente desde el campo mailNickname del registro sin procesar y se añade como 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 tanto manager.country como 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 lo está.
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_addresses, empmanager.group_identifiers Si gopher-manager está vacío, cada dirección de la matriz manager.proxyAddresses se asigna a empmanager.email_addresses o empmanager.group_identifiers en función de si empieza por "smtp" o "SMTP".
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 (key: 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.
onPremisesDistinguishedName user.attribute.labels.value (clave: onPremisesDistinguishedName), user.attribute.labels.value (clave: onPremisesDistinguishedName-OU data) El nombre distintivo completo se asigna como una etiqueta con la clave onPremisesDistinguishedName. Se extrae la parte de la unidad organizativa del nombre completo y se asigna como etiqueta con la clave onPremisesDistinguishedName-OU data. Si la parte de la unidad organizativa contiene "Admin", el valor de user_role.type es ADMINISTRATOR. Si contiene "Cuentas de servicio", el valor de user_role.type es SERVICE_ACCOUNT.
onPremisesDomainName user.group_identifiers, user.attribute.labels.value (key: onPremisesDomainName) Se asigna directamente a user.group_identifiers y se añade como etiqueta con la clave onPremisesDomainName.
onPremisesImmutableId user.attribute.labels.value (clave: onPremisesImmutableId) Se asigna directamente desde el campo onPremisesImmutableId del registro sin procesar y se añade como etiqueta con la clave onPremisesImmutableId.
onPremisesSamAccountName user.userid, user.attribute.labels.value (key: onPremisesSamAccountName) Se asigna a user.userid si sAMAccountName está vacío. También se añade como etiqueta con la clave onPremisesSamAccountName.
onPremisesSecurityIdentifier user.windows_sid Se asigna directamente desde el campo onPremisesSecurityIdentifier del registro sin procesar.
proxyAddresses user.email_addresses, user.group_identifiers Cada dirección de la matriz proxyAddresses se asigna a user.email_addresses o user.group_identifiers en función de si empieza por "smtp" o "SMTP". Si la dirección empieza por "smtp" o "SMTP", se elimina el prefijo "smtp:" o "SMTP:" y se extrae la dirección de correo restante, que se asigna a user.email_addresses.
refreshTokensValidFromDateTime user.attribute.labels.value (clave: refreshTokensValidFromDateTime) Se asigna directamente desde el campo refreshTokensValidFromDateTime del registro sin procesar y se añade como etiqueta con la clave refreshTokensValidFromDateTime.
sAMAccountName user.userid Se asigna directamente desde el campo sAMAccountName del registro sin procesar.
estado user.personal_address.state Se asigna directamente desde el campo state del registro sin procesar.
streetAddress user.personal_address.name Se asigna directamente desde el campo streetAddress del registro sin procesar.
surname user.last_name Se asigna directamente desde el campo surname del registro sin procesar.
usageLocation user.personal_address.country_or_region Si country está vacío, el valor se asigna a user.personal_address.country_or_region.
userPrincipalName user.email_addresses Se asigna directamente desde el campo userPrincipalName del registro sin procesar. Si userPrincipalName empieza por "svc-", user_role.type se define como SERVICE_ACCOUNT.
userType user.attribute.roles.name Se asigna directamente desde el campo userType del registro sin procesar y se añade a user.attribute.roles.name.
Lógica del analizador Mapeo de UDM Lógica
N/A event.idm.entity.metadata.vendor_name Selecciona "Microsoft".
N/A event.idm.entity.metadata.product_name Selecciona "Azure Active Directory".
N/A event.idm.entity.metadata.entity_type Asigna el valor "USER".
N/A event.idm.entity.metadata.collected_timestamp Asigna el valor del campo create_time del registro sin procesar.
accountEnabled user.user_authentication_status, user.attribute.labels.value (key: accountEnabled) Si accountEnabled es true, user.user_authentication_status se define como "ACTIVE" y se añade una etiqueta con la clave accountEnabled y el valor "true". De lo contrario, se añade una etiqueta con la clave accountEnabled y el valor "false".
empmanager-src.accountEnabled user.user_authentication_status, user.attribute.labels.value (key: accountEnabled) Si manager está vacío y empmanager-src.accountEnabled es "true", user.user_authentication_status se asigna a "ACTIVE" y se añade una etiqueta con la clave accountEnabled y el valor "true". De lo contrario, se añade una etiqueta con la clave accountEnabled y el valor "false".
onPremisesDistinguishedName user_role.type Si la parte de la unidad organizativa del nombre completo contiene "Admin", el valor de user_role.type se define como ADMINISTRATOR. Si contiene "Cuentas de servicio", el valor de user_role.type es SERVICE_ACCOUNT.
userPrincipalName user_role.type Si userPrincipalName empieza por "svc-", user_role.type se define como SERVICE_ACCOUNT.
empmanager-src.onPremisesDistinguishedName manager_role.type Si gopher-manager está vacío y la parte de la unidad organizativa del nombre completo del administrador contiene "Users", manager_role.type se asigna a ADMINISTRATOR. Si contiene "Cuentas de servicio", el valor de manager_role.type es SERVICE_ACCOUNT.
empmanager-src.userPrincipalName manager_role.type Si gopher-manager está vacío y empmanager-src.userPrincipalName empieza por "svc-", manager_role.type se asigna a SERVICE_ACCOUNT.
mail user_role.type Si mail empieza por "svc-", user_role.type se define como SERVICE_ACCOUNT.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.