Auth0 + Datadog : monitoring complet de l'authentification

Intégrer Auth0 avec Datadog pour monitorer les métriques d'authentification, créer des dashboards et configurer des alertes sur les anomalies de sécurité.

Par Auth0.Expert · 2025-03-08 · 10 min de lecture

Datadog Monitoring APM

Auth0 + Datadog : monitoring de l'authentification

TL;DR

Datadog est l'outil de monitoring le plus utilisé avec Auth0. Ce guide configure le Log Streaming vers Datadog, crée les métriques clés et les alertes de sécurité essentielles.

---

Configuration Log Streaming vers Datadog

Ce bloc JSON montre comment configurer le streaming des logs Auth0 vers Datadog pour centraliser l'observabilité et la détection d'incidents.

// Dashboard → Monitoring → Streams → Create Stream → Datadog
{
  "name": "Datadog Production",
  "type": "datadog",
  "sink": {
    "datadogRegion": "EU1",
    "datadogApiKey": "your_datadog_api_key"
  },
  "filters": []  // Vide = tous les events
}

---

Pipeline Logs Datadog : parser les logs Auth0

Ce script Datadog permet de parser les logs Auth0 entrants pour extraire les champs pertinents, notamment le type, l’adresse IP, et le statut du login.

# Datadog Logs Pipeline
# Parsing rule pour les logs Auth0

rule = """
auth0_log (%{data::json})
"""

# Processor : extraire les champs utiles
processors = [
    {
        "type": "attribute-remapper",
        "name": "Map type to evt.name",
        "source": "type",
        "target": "evt.name",
    },
    {
        "type": "geo-ip-parser",
        "name": "IP → Géolocalisation",
        "sources": ["ip"],
        "target": "network.client",
    },
    {
        "type": "arithmetic-processor",
        "name": "Login success = 1 if type == 's'",
        "expression": "if(type == 's', 1, 0)",
        "target": "login_success",
    },
]

Ce pipeline automatise l’enrichissement et la préparation des logs Auth0 pour réaliser des visualisations et des alertes sur Datadog.

---

Dashboard Auth0 dans Datadog

Ci-dessous un exemple de configuration pour les widgets clés d’un dashboard Auth0 dans Datadog, afin de suivre le succès des connexions, l’origine géographique et l’activité suspecte.

// Widgets essentiels pour votre dashboard Auth0

[
  {
    "title": "Taux de succès des logins",
    "type": "timeseries",
    "query": "sum:auth0.logs{type:s}.as_count() / (sum:auth0.logs{type:s}.as_count() + sum:auth0.logs{type:f}.as_count()) * 100"
  },
  {
    "title": "Tentatives de login par pays",
    "type": "geomap",
    "query": "sum:auth0.logs{*} by {@network.client.geoip.country.iso_code}.as_count()"
  },
  {
    "title": "Top 10 IPs à risque",
    "type": "top_list",
    "query": "sum:auth0.logs{type:f} by {ip}.as_count()"
  },
  {
    "title": "MFA Events",
    "type": "timeseries",
    "query": "sum:auth0.logs{type IN (gd_start_auth, gd_auth_succeed, gd_auth_failed)}.as_count()"
  }
]

Ces configurations permettent de visualiser en temps réel les métriques de sécurité Auth0 sur votre tableau de bord Datadog.

---

Alertes Datadog recommandées

Voici un exemple d’alertes types à déployer dans Datadog pour détecter rapidement les activités suspectes ou les attaques sur votre portail d’authentification Auth0.

# 1. Alerte brute force
monitors:
  - name: "Auth0 - Brute Force Détecté"
    type: log alert
    query: "logs("source:auth0 @evt.name:limit_wc").rollup("count").last("5m") > 0"
    message: |
      🚨 Attaque brute force détectée sur Auth0
      {{log.message}}
      @slack-security-channel

  - name: "Auth0 - Taux d'échec login > 50%"
    type: metric alert
    query: "sum:auth0.login_failures{*}.as_count() / sum:auth0.login_attempts{*}.as_count() * 100 > 50"
    message: "Le taux d'échec de login dépasse 50% - possible credential stuffing @pagerduty"

  - name: "Auth0 - Mot de passe compromis"
    type: log alert
    query: "logs("source:auth0 @evt.name:pwd_leak").rollup("count").last("15m") > 0"
    message: "Un mot de passe compromis a été utilisé par {{@usr.email}}"

  - name: "Auth0 - Pic de signups"
    type: log alert
    query: "logs("source:auth0 @evt.name:ss").rollup("count").last("10m") > 100"
    message: "Pic de signups anormal - possible bot signup attack"

Ce bloc YAML définit plusieurs monitors Datadog pour une surveillance efficace de la sécurité Auth0.

---

Métriques custom avec DogStatsD

Ce code utilise une Action Auth0 pour envoyer des événements personnalisés à votre backend, puis les relayer à DogStatsD et ainsi obtenir des métriques spécifiques à votre business.

// Envoyer des métriques custom depuis une Action Auth0
// (via votre propre endpoint qui forward vers DogStatsD)

exports.onExecutePostLogin = async (event, api) => {
  // Envoyer la métrique au backend (pas directement à Datadog)
  await fetch(`${event.secrets.METRICS_ENDPOINT}/auth-metric`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      metric: 'auth0.login',
      value: 1,
      tags: [
        `method:${event.connection.strategy}`,
        `plan:${event.user.app_metadata?.plan || 'free'}`,
        `country:${event.request.geoip?.country_code || 'unknown'}`,
        `success:${event.transaction?.protocol ? 'true' : 'false'}`,
      ],
    }),
  });
};

Cette méthode permet de monitorer des KPIs sur mesure, adaptés à vos besoins précis.

---

SLO : objectifs de niveau de service Auth0

Les SLO Auth0 permettent d’engager le service sur des niveaux de performance et de qualité de l’authentification.

# SLOs recommandés pour l'authentification
slos:
  - name: "Auth0 Login Success Rate"
    type: metric
    query:
      numerator: "sum:auth0.login_success{*}.as_count()"
      denominator: "sum:auth0.login_attempts{*}.as_count()"
    target: 99.9
    timeframe: "7d"

  - name: "Auth0 Signup Success Rate"
    type: metric
    target: 99.5
    timeframe: "30d"

  - name: "Auth0 Token Generation Latency < 500ms"
    type: metric
    target: 99.0
    timeframe: "7d"

Ce schéma formalise vos engagements de qualité Auth0 et facilite le pilotage contractuel.

---

Intégration avec APM Datadog

Ce middleware ajoute des tags métier Auth0 sur chaque trace backend remontée à Datadog, pour optimiser le debug et le monitoring applicatif.

// Tracer les appels Auth0 dans votre backend
const tracer = require('dd-trace').init();

app.use(async (req, res, next) => {
  const span = tracer.scope().active();
  if (span && req.auth) {
    span.setTag('auth.user_id', req.auth.sub);
    span.setTag('auth.plan', req.auth['https://yourapp.com/plan']);
    span.setTag('auth.method', req.auth.amr?.[0]);
  }
  next();
});

Ce code enrichit les traces APM Datadog avec les informations d’utilisateur Auth0 pour chaque requête traitée.

---

> 📈 Setup monitoring Auth0 : nous configurons votre stack Datadog complète (dashboards, alertes, SLOs) pour votre implémentation Auth0 en 1 journée.

📞 +33 1 23 45 67 89 · 📧 [email protected]


Autres articles