Cómo recopilar registros de acceso de Azure AD

Compatible con:

En este documento, se explica cómo exportar registros de acceso de Azure AD a Google Security Operations con una cuenta de almacenamiento de Azure. El analizador toma registros sin procesar en formato JSON y los transforma en un formato estructurado que cumple con el modelo de datos unificado (UDM). Extrae campos relevantes, normaliza los valores, controla diferentes marcas de tiempo y enriquece los datos con contexto relacionado con la seguridad, como información del usuario, direcciones IP y políticas de acceso condicional.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener un inquilino de Azure activo.
  • Asegúrate de tener acceso con privilegios a Azure.

Configura la cuenta de Azure Storage

  1. En la consola de Azure, busca Cuentas de almacenamiento.
  2. Haz clic en + Crear.
  3. Especifica valores para los siguientes parámetros de entrada:
    • Subscription: Selecciona la suscripción.
    • Grupo de recursos: Selecciona el grupo de recursos.
    • Región: Selecciona la región.
    • Rendimiento: Selecciona el rendimiento (se recomienda Estándar).
    • Redundancia: Selecciona la redundancia (se recomienda GRS o LRS).
    • Nombre de la cuenta de almacenamiento: Ingresa un nombre para la cuenta de almacenamiento nueva.
  4. Haz clic en Revisar + crear.
  5. Revisa la descripción general de la cuenta y haz clic en Crear.
  6. En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Llaves de acceso en Seguridad y herramientas de redes.
  7. Haz clic en Mostrar junto a clave1 o clave2.
  8. Haz clic en Copiar en el portapapeles para copiar la clave.
  9. Guarda la clave en una ubicación segura para usarla más adelante.
  10. En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Puntos finales en Configuración.
  11. Haz clic en Copiar en el portapapeles para copiar la URL del extremo del servicio de Blob (por ejemplo, https://<storageaccountname>.blob.core.windows.net).
  12. Guarda la URL del extremo en una ubicación segura para usarla más adelante.

Configura la exportación de registros para los registros de acceso de Azure AD

  1. Accede al portal de Azure con tu cuenta con privilegios.
  2. Ve a Microsoft Entra ID > Supervisión > Configuración de diagnóstico.
  3. Haz clic en Agregar parámetro de configuración de diagnóstico.
    • Ingresa un nombre descriptivo para el parámetro de configuración de diagnóstico.
  4. Selecciona Registros de acceso.
  5. Selecciona la casilla de verificación Archivar en una cuenta de almacenamiento como destino.
    • Especifica la Suscripción y la Cuenta de almacenamiento.

Configura un feed en Google SecOps para transferir los registros de acceso de Azure

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de acceso de Azure).
  4. Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
  5. Selecciona Azure Sign-In como el tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:

    • URI de Azure: Es la URL del extremo de blob.
      • ENDPOINT_URL/BLOB_NAME
        • Reemplaza lo siguiente:
        • ENDPOINT_URL: La URL del extremo de blob (https://<storageaccountname>.blob.core.windows.net)
        • BLOB_NAME: Es el nombre del blob (como insights-logs-<logname>).
    • URI is a: Selecciona el TIPO DE URI según la configuración del flujo de registros (Archivo único | Directorio | Directorio que incluye subdirectorios).
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.

    • Clave compartida: Es la clave de acceso a Azure Blob Storage.

    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.

    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.

  8. Haz clic en Siguiente.

  9. Revisa la configuración del nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
AppDisplayName read_only_udm.target.application Se asigna directamente desde el campo AppDisplayName en el registro sin formato.
AppId read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo AppId en el registro sin formato. La clave se establece en appId.
Categoría read_only_udm.security_result.category_details Se asigna directamente desde el campo Category en el registro sin formato.
ConditionalAccessPolicies[].displayName read_only_udm.security_result.rule_name Se asigna directamente desde el campo displayName dentro del array ConditionalAccessPolicies en el registro sin formato.
ConditionalAccessPolicies[].enforcedGrantControls[] read_only_udm.security_result.rule_labels.value Se asignan directamente desde el array enforcedGrantControls dentro del array ConditionalAccessPolicies en el registro sin procesar. La clave se establece en applied_conditional_access_policies_enforced_grant_controls.
ConditionalAccessPolicies[].enforcedSessionControls[] read_only_udm.security_result.rule_labels.value Se asignan directamente desde el array enforcedSessionControls dentro del array ConditionalAccessPolicies en el registro sin procesar. La clave se establece en applied_conditional_access_policies_enforced_session_controls.
ConditionalAccessPolicies[].id read_only_udm.security_result.rule_id Se asigna directamente desde el campo id dentro del array ConditionalAccessPolicies en el registro sin formato.
ConditionalAccessPolicies[].Result read_only_udm.security_result.rule_labels.value Se asigna directamente desde el campo Result dentro del array ConditionalAccessPolicies en el registro sin formato. La clave se establece en applied_conditional_access_policies_result.
ConditionalAccessStatus read_only_udm.additional.fields.value.string_value Se asigna directamente desde el campo ConditionalAccessStatus en el registro sin formato. La clave se establece en conditionalAccessStatus.
CorrelationId read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo CorrelationId en el registro sin formato. La clave se establece en correlationId.
DurationMs read_only_udm.additional.fields.value.string_value Se asigna directamente desde el campo DurationMs en el registro sin formato. La clave se establece en durationMs.
HomeTenantId read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo HomeTenantId en el registro sin formato. La clave se establece en HomeTenantId.
IPAddress read_only_udm.principal.asset.ip, read_only_udm.principal.ip Se asigna directamente desde el campo IPAddress en el registro sin formato.
ID read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo Id en el registro sin formato. La clave se establece en id.
Identidad read_only_udm.target.resource.attribute.labels.value Se asigna directamente desde el campo Identity en el registro sin formato. La clave se establece en identity.
Nivel read_only_udm.security_result.severity, read_only_udm.security_result.severity_details Se asigna directamente desde el campo Level en el registro sin formato. La gravedad se determina en función del valor de Level: Information, Informational, 0 o 4 se asignan a INFORMATIONAL; Warning, 1 o 3 se asignan a MEDIUM; Error o 2 se asignan a ERROR; Critical se asigna a CRITICAL.
OperationName read_only_udm.metadata.product_event_type Se asigna directamente desde el campo OperationName en el registro sin formato.
ResourceGroup read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo ResourceGroup en el registro sin formato. La clave se establece en ResourceGroup.
ResultSignature read_only_udm.additional.fields.value.string_value Se asigna directamente desde el campo ResultSignature en el registro sin formato. La clave se establece en resultSignature.
ResultType read_only_udm.additional.fields.value.string_value Se asigna directamente desde el campo ResultType en el registro sin formato. La clave se establece en resultType.
TenantId read_only_udm.metadata.product_deployment_id Se asigna directamente desde el campo TenantId en el registro sin formato.
TimeGenerated read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos Se asigna directamente desde el campo TimeGenerated en el registro sin formato. El campo se analiza como una marca de tiempo y se usa para propagar los campos seconds y nanos.
TokenIssuerType read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo TokenIssuerType en el registro sin formato. La clave se establece en TokenIssuerType.
UniqueTokenIdentifier read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo UniqueTokenIdentifier en el registro sin formato. La clave se establece en UniqueTokenIdentifier.
UserAgent read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent Se asigna directamente desde el campo UserAgent en el registro sin formato. El campo se analiza como una cadena de usuario-agente y se usa para propagar el objeto parsed_user_agent.
UserDisplayName read_only_udm.target.user.user_display_name Se asigna directamente desde el campo UserDisplayName en el registro sin formato.
UserId read_only_udm.target.user.userid Se asigna directamente desde el campo UserId en el registro sin formato.
UserPrincipalName read_only_udm.target.user.email_addresses Se asigna directamente desde el campo UserPrincipalName en el registro sin procesar, pero solo si coincide con el patrón de dirección de correo electrónico.
UserType read_only_udm.target.user.attribute.roles.name Se asigna directamente desde el campo UserType en el registro sin formato.
_Internal_WorkspaceResourceId read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo _Internal_WorkspaceResourceId en el registro sin formato. La clave se establece en Internal_WorkspaceResourceId.
_ItemId read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo _ItemId en el registro sin formato. La clave se establece en ItemId.
properties.appId read_only_udm.security_result.detection_fields.value Se asignan directamente desde el campo appId dentro del objeto properties en el registro sin procesar. La clave se establece en appId.
properties.authenticationDetails[].authenticationMethod read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo authenticationMethod dentro del array authenticationDetails en el registro sin formato. La clave se establece en authenticationMethod.
properties.authenticationDetails[].authenticationMethodDetail read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo authenticationMethodDetail dentro del array authenticationDetails en el registro sin formato. La clave se establece en authenticationMethodDetail.
properties.authenticationDetails[].authenticationStepDateTime read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo authenticationStepDateTime dentro del array authenticationDetails en el registro sin formato. La clave se establece en authenticationStepDateTime.
properties.authenticationDetails[].authenticationStepRequirement read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo authenticationStepRequirement dentro del array authenticationDetails en el registro sin formato. La clave se establece en authenticationStepRequirement.
properties.authenticationDetails[].authenticationStepResultDetail read_only_udm.security_result.detection_fields.value Se asigna directamente desde el campo authenticationStepResultDetail dentro del array authenticationDetails en el registro sin formato. La clave se establece en authenticationStepResultDetail.
properties.authenticationDetails[].succeeded read_only_udm.security_result.action, read_only_udm.security_result.action_details Se asigna directamente desde el campo succeeded dentro del array authenticationDetails en el registro sin formato. Si el valor es true, la acción se establece en ALLOW; de lo contrario, se establece en BLOCK.
properties.conditionalAccessStatus read_only_udm.additional.fields.value.string_value Se asignan directamente desde el campo conditionalAccessStatus dentro del objeto properties en el registro sin procesar. La clave se establece en conditionalAccessStatus.
properties.id read_only_udm.security_result.detection_fields.value Se asignan directamente desde el campo id dentro del objeto properties en el registro sin formato. La clave se establece en id.
properties.status.errorCode read_only_udm.security_result.action Si el valor es 0, la acción se establece en ALLOW; de lo contrario, se establece en BLOCK.
properties.userId read_only_udm.target.user.userid Se asignan directamente desde el campo userId dentro del objeto properties en el registro sin procesar.
properties.userPrincipalName read_only_udm.target.user.email_addresses Se asigna directamente desde el campo userPrincipalName dentro del objeto properties en el registro sin procesar, pero solo si coincide con el patrón de dirección de correo electrónico.
resourceId read_only_udm.target.resource.name Se asigna directamente desde el campo resourceId en el registro sin formato.
hora read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos Se asigna directamente desde el campo time en el registro sin formato. El campo se analiza como una marca de tiempo y se usa para propagar los campos seconds y nanos.
read_only_udm.extensions.auth.type El valor se establece en AUTHTYPE_UNSPECIFIED.
read_only_udm.metadata.event_type El valor se determina en función de la presencia de los campos principal.ip y target.user.userid: si ambos están presentes, el tipo se establece en USER_LOGIN; si solo está presente principal.ip, el tipo se establece en STATUS_UPDATE; de lo contrario, se establece en GENERIC_EVENT.

Cambios

2024-05-07

  • Analizador creado recientemente

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.