Présentation

Instrumentez vos services et surveillez les activités des utilisateurs pour détecter et bloquer les personnes malveillantes.

Ajoutez les informations des utilisateurs authentifiés aux traces pour identifier et bloquer les personnes malveillantes prenant pour cible votre surface d’attaque après authentification. Pour ce faire, ajoutez le tag d’ID de l’utilisateur à la trace APM en cours d’exécution, offrant ainsi à ASM l’instrumentation nécessaire au blocage des personnes malveillantes authentifiées. Cela permet à ASM d’associer les attaques et les événements de logique opérationnelle à des utilisateurs.

Surveillez les connexions et les activités des utilisateurs pour détecter les piratages de compte et les utilisations abusives de la logique opérationnelle grâce à des règles de détection prêtes à l’emploi dans le but de bloquer les personnes malveillantes.

Détection automatique des activités des utilisateurs : les bibliothèques de tracing de Datadog tentent de détecter et de signaler automatiquement les événements liés aux activités des utilisateurs. Pour en savoir plus, consultez la rubrique Désactiver le suivi automatique des événements liés aux activités des utilisateurs.

Les activités des utilisateurs pour lesquelles des règles de détection prêtes à l’emploi sont disponibles sont les suivantes :

Noms par défaut des événementsMétadonnées requisesRègles associées
activity.sensitive{ "name": "coupon_use", "required_role": "user" }Activité à taux limité depuis une adresse IP
Activité non autorisée détectée
users.login.successL’ID de l’utilisateur est obligatoire, des métadonnées facultatives peuvent être ajoutéesAttaque par bourrage d’identifiants
users.login.failureL’ID de l’utilisateur est obligatoire, des métadonnées facultatives peuvent être ajoutéesAttaque par bourrage d’identifiants
users.signup{ "usr.id": "12345" }Trop de créations de compte depuis une adresse IP
users.delete{ "usr.id": "12345" }Trop de suppressions de compte depuis une adresse IP
users.password_reset{ "usr.id": "12345", "exists": true }Tentatives de réinitialisation de mot de passe par brute force
payment.attempt{ "status": "failed" }Trop d’échecs de paiement depuis une adresse IP

Ajouter les informations des utilisateurs authentifiés aux traces et activer la fonctionnalité de blocage des utilisateurs

Vous pouvez ajouter des tags personnalisés à votre span racine ou utiliser les fonctions d’instrumentation décrites ci-dessous.

Le package du traceur Node fournit la fonction tracer.setUser(user), qui vous permet de surveiller les requêtes authentifiées en ajoutant les informations utilisateur à la trace.

L’exemple ci-dessous montre comment ajouter les tags de surveillance d’utilisateur appropriés et activer la fonctionnalité de blocage des utilisateurs :

const tracer = require('dd-trace').init()

function handle () {
  tracer.setUser({
    id: '123456789', // *REQUIS* Identifiant unique de l'utilisateur.

    // Tous les autres champs sont facultatifs.
    email: 'alice.martin@example.com', // Adresse e-mail de l'utilisateur.
    name: 'Alice Martin', // Nom courant de l'utilisateur.
    session_id: '987654321', // ID de session de l'utilisateur.
    role: 'admin', // Rôle sous lequel l'utilisateur effectue la requête.
    scope: 'read:message, write:files', // Portées ou autorisations actuellement accordées à l'utilisateur.

    // Des champs personnalisés sont également acceptés pour associer des données personnalisées à l'utilisateur (RBAC, Oauth, etc.)
    tag_personnalisé: 'données personnalisées'
  })

// Définir l'utilisateur actuellement authentifié et vérifier s'il est bloqué
if (tracer.appsec.isUserBlocked(user)) {  // définit également l'utilisateur actuellement authentifié
  return tracer.appsec.blockRequest(req, res) // la réponse de blocage est envoyée
  }

}

Pour en savoir plus et connaître les options disponibles, consultez la documentation du traceur Node.js.

Ajouter des informations relatives à la logique opérationnelle (connexion réussie, échec de connexion, tout événement de logique opérationnelle) aux traces

Depuis la version 3.13.1 de dd-trace-js, l’API du traceur Node.js permet de surveiller les événements utilisateur.

Les exemples suivants montrent comment surveiller les événements de connexion ou des événements personnalisés (comme ici, les inscriptions).

const tracer = require('dd-trace')

// Dans un contrôleur :
const user = {
  id: 'id-utilisateur', // L'ID est obligatoire
  email: 'utilisateur@email.com' // Les autres champs sont facultatifs
}
const metadata = { perso: 'valeur' } // Métadonnées facultatives avec des champs personnalisés

// Enregistrer un événement d'authentification réussie de l'utilisateur
tracer.appsec.trackUserLoginSuccessEvent(user, metadata) // Les métadonnées sont facultatives
const tracer = require('dd-trace')

// Dans un contrôleur :
const userId = 'id-utilisateur'
const userExists = true // Si l'utilisateur existe dans la base de données par exemple
const metadata = { perso: 'valeur' } // Métadonnées facultatives avec des champs personnalisés

// Les métadonnées sont facultatives
tracer.appsec.trackUserLoginFailureEvent(userId, userExists, metadata)
const tracer = require('dd-trace')

// Dans un contrôleur :
const eventName = 'users.signup'
const metadata = { 'usr.id': 'id-utilisateur' }

tracer.appsec.trackCustomEvent(eventName, metadata)

Suivi automatique des événements liés aux activités des utilisateurs

Lorsque la solution ASM est activée, les récentes bibliothèques de tracing de Datadog tentent de détecter automatiquement les événements liés aux activités des utilisateurs.

Les événements pouvant être détectés automatiquement sont les suivants :

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

Mode de suivi automatique des événements liés aux activités des utilisateurs

Deux modes de suivi automatique des événements liés aux activités des utilisateurs sont disponibles : safe et extended.

En mode safe, la bibliothèque de tracing n’inclut aucune information personnelle dans les métadonnées des événements. Elle tente de collecter l’ID de l’utilisateur, mais uniquement si cet ID correspond à un GUID valide.

En mode extended, la bibliothèque de tracing tente de collecter l’ID de l’utilisateur et son adresse e-mail. Dans ce mode, elle ne vérifie pas si l’ID de l’utilisateur correspond à un GUID. Elle transmet toute valeur pouvant être extraite de l’événement.

Pour configurer le mode de suivi automatique des événements utilisateur à utiliser, vous pouvez définir la variable d’environnement DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING sur safe ou extended. Par défaut, la bibliothèque de tracing utilise le mode safe.

Remarque : il peut arriver que la bibliothèque de tracing ne puisse pas extraire d’informations de l’événement utilisateur. Ce dernier est alors transmis sans métadonnées. Dans ce cas, nous vous conseillons d’utiliser le SDK pour instrumenter manuellement l’événement utilisateur.

Désactiver le suivi automatique des événements liés aux activités des utilisateurs

Si vous souhaitez désactiver la détection de ces événements, vous pouvez définir la variable d’environnement DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING sur disabled. Cette variable doit être définie au niveau de l’application hébergeant la bibliothèque de tracing de Datadog, et non au niveau de l’Agent Datadog.

Pour aller plus loin

PREVIEWING: brett.blue/reorg-otel
Your Privacy Choices