Información general

Instrumenta tus servicios y rastrea la actividad de los usuarios para detectar y bloquear a los actores malintencionados.

Añade información de un usuario autenticado a las trazas (traces) para identificar y bloquear a los actores malintencionados que se dirijan a tu superficie de ataque autenticada. Para ello, establece la etiqueta (tag) del ID de usuario en la traza de APM en ejecución, proporcionando la instrumentación necesaria para que la ASM bloquee a los atacantes autenticados. Esto permite que la ASM asocie los ataques y los eventos de la lógica empresarial a los usuarios.

Rastrea los inicios de sesión y la actividad de los usuarios para detectar las apropiaciones de cuentas y los abusos de la lógica empresarial con reglas de detección predefinidas y, en última instancia, bloquear a los atacantes.

Detección automatizada de la actividad de los usuarios: Las bibliotecas de rastreo de Datadog intentan detectar e informar de eventos de la actividad del usuario automáticamente. Para obtener más información, consulta Desactivar el rastreo automático de eventos de la actividad del usuario .

Las actividades personalizadas del usuario para las cuales se dispone de reglas de detección predefinidas son las siguientes:

Nombres de eventos integradosMetadatos necesariosNormas relacionadas
activity.sensitive{ "name": "coupon_use", "required_role": "user" }Tasa de actividad limitada desde la IP
Actividad no autorizada detectada
users.login.successEl ID de usuario es obligatorio, se pueden añadir metadatos opcionalesAtaque de relleno de credenciales
Ataque por la fuerza bruta
Relleno de credenciales distribuido
users.login.failureEl ID de usuario y usr.exists son obligatorios, se pueden añadir metadatos opcionalesAtaque de relleno de credenciales
Ataque por la fuerza bruta
Relleno de credenciales distribuido
users.signup{ "usr.id": "12345" }Excesivas creaciones de cuentas desde una IP
users.delete{ "usr.id": "12345" }Excesiva eliminación de cuentas desde una IP
users.password_reset{ "usr.id": "12345", "exists": true }Intentos de restablecimiento de contraseña por la fuerza bruta
payment.failureNingunoExcesivos errores de pago desde una IP

Añadir información de usuarios autenticados a las trazas y habilitar la capacidad de bloqueo de los usuarios

Puedes añadir etiquetas personalizada a tu tramo (span) raíz o utilizar las funciones de instrumentación descritas a continuación.

Monitoriza las solicitudes autenticadas añadiendo la información del usuario a la traza con la función de set_user ofrecida por el paquete de rastreadores de Python.

En este ejemplo se muestra cómo configurar las etiquetas de monitorización de usuarios y habilitar la capacidad de bloqueo de estos:

from ddtrace.contrib.trace_utils import set_user
from ddtrace import tracer
# Llamada de configuración_usuario() para rastrear el ID de usuario autenticado actualmente
user_id = "som_user_id"
set_user(tracer, user_id, name="John", email="test@test.com", scope="some_scope",
         role="manager", session_id="session_id", propagate=True)
```3

Añadir la información de la lógica empresarial (inicio de sesión correcto, inicio de sesión fallido, cualquier lógica empresarial) a las trazas

Empezando en dd-rastrear-py v1.9.0, se puede utilizar la API del rastreador de Python para rastrear los eventos del usuario.

En los siguientes ejemplos se muestra cómo rastrear los eventos de inicio de sesión o los eventos personalizados (utilizando el registro como ejemplo).

from ddtrace.appsec.trace_utils import track_user_login_success_event
from ddtrace import tracer
metadata = {"custom": "customvalue"}
# name, email, scope, role, session_id and propagate are optional arguments which 
# default to None except propagate that defaults to True. They'll be 
# passed to the set_user() function
track_user_login_success_event(tracer, "userid", metadata)
from ddtrace.appsec.trace_utils import track_user_login_failure_event
from ddtrace import tracer
metadata = {"custom": "customvalue"}
# exists indica si el usuario con el inicio de sesión fallido existe en el sistema
exists = False
# si no hay ningún ID de usuario numérico, servirá cualquier identificador único (nombre de usuario, dirección de correo electrónico...)
track_user_login_failure_event(tracer, "userid", exists, metadata)
from ddtrace.appsec.trace_utils import track_custom_event
from ddtrace import tracer
metadata = {"usr.id": "userid"}
event_name = "users.signup"
track_custom_event(tracer, event_name, metadata)

Rastrear la información de la lógica empresarial sin modificar el código

Si tu servicio tiene la ASM y la Configuración remota habilitadas, puedes crear una regla WAF personalizada para marcar cualquier solicitud que coincida con una etiqueta de lógica empresarial personalizada. No hay que hacer ninguna modificación en la aplicación y se puede hacer completamente desde Datadog.

Para empezar, ve a la Página de la regla WAF personalizada y haz clic en “Crear regla nueva”.

Accede al Menú de las reglas WAF personalizadas desde la página principal de ASM haciendo clic en Protección, luego en WAF en la App y Reglas personalizadas

Se abrirá un menú en el que podrás definir tu regla WAF personalizada. Al seleccionar la categoría “Lógica empresarial”, podrás configurar un tipo de evento (por ejemplo, users.password_reset). A continuación, podrás seleccionar el servicio que desees rastrear y un endpoint específico. También puedes utilizar la condición de la regla para apuntar a un parámetro específico e identificar el flujo de código que desees instrumentar. Cuando la condición coincida, la biblioteca etiquetará la traza y la marcará para reenviarla a ASM. Si no necesitas la condición, puedes configurar una condición amplia para que coincida con todo.

Captura de pantalla de la forma que aparece cuando haces clic en el botón Crear regla nueva

Una vez guardada, la regla se despliega en las instancias del servicio que tienen habilitada la Configuración remota.

Rastreo automático de los eventos de actividad de los usuarios

Cuando la ASM está activada, las bibliotecas de rastreo de Datadog intentan detectar los eventos de actividad del usuario automáticamente.

Los eventos que se pueden detectar automáticamente son los siguientes:

  • users.login.success
  • users.login.failure
  • users.signup

Modos de rastreo automáticos de los eventos de actividad del usuario

El rastreo automático de la actividad del usuario ofrece los siguientes modos:

  • Modo identification (nombre abreviado: ident):
    • Este modo es el predeterminado y siempre recopila el ID de usuario o la mejor posibilidad.
    • El ID de usuario se recopila cuando el inicio de sesión es correcto y cuando es fallido. Cuando es fallido, el ID de usuario se recopila independientemente de si el usuario existe o no.
    • Cuando el marco instrumentado no proporciona claramente un ID de usuario, sino un objeto de usuario estructurado, el ID de usuario se determina sobre la base de la mejor posibilidad basada en los nombres de campo del objeto. Hay que considerar esta lista de nombres de campo, que están ordenados por prioridad:
      • id
      • email
      • username
      • login
      • user
    • Si no hay ID de usuario disponible o este no se encuentra, el evento del usuario no se emite.
  • Modo anonymization (nombre abreviado: anon):
    • Este modo es el mismo que identification, pero anonimiza el ID de usuario.
  • Modo disabled:
    • Las bibliotecas de ASM no recopilan ningún ID de usuario desde sus instrumentaciones automatizadas.
    • Los eventos de inicio de sesión del usuario no se emiten.
Todos los modos solo afectan a la instrumentación automatizada. Los modos no se aplican a la recopilación manual. Esta se configura mediante un SDK, y esos ajustes no se anulan por una instrumentación automatizada.

Las bibliotecas de Datadog permiten configurar la auto-instrumentación utilizando la variable de entorno DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE con el nombre abreviado del modo: ident|anon|disabled.

El modo por defecto es el modo identification (nombre abreviado: ident).

Por ejemplo, DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE=anon.

Modos obsoletos

Los modos anteriores están obsoletos, pero se mantendrá la compatibilidad hasta la próxima versión principal.

Los siguientes modos están obsoletos:

  • Modo safe: La biblioteca de rastreo no incluye ninguna información PII en los metadatos de los eventos. La biblioteca del rastreador intenta recopilar el ID de usuario, y solo si este es un GUID válido.
  • Modo extended: La biblioteca de rastreo intenta recopilar el ID de usuario y el correo electrónico del usuario. En este modo, Datadog no comprueba el tipo para que el ID de usuario sea un GUID. La biblioteca de rastreado reporta cualquier valor que se pueda ser extraer del evento.

Nota: Podrían darse casos en los que la biblioteca de rastreo no sea capaz de extraer ninguna información del evento del usuario. El evento se reportaría con metadatos vacíos. En esos casos, utiliza el SDK para instrumentar manualmente los eventos del usuario.

Desactivar el rastreo automático de los eventos de la actividad del usuario

Si deseas desactivar la detección de estos eventos, debes establecer la variable de entorno DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING_ENABLED en false. Esto debe configurarse en la aplicación que aloja la biblioteca de rastreo de Datadog, y no en el Datadog Agent .

La variable de entorno anterior se denominaba DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING.

Referencias adicionales

PREVIEWING: aaron.hoffman/SDCD-952_write-rollback-cd-docs