Aller au contenu

Génération de données aléatoires

Pour avoir une idée de ce à quoi ressemble Howler avec des données, et pour tester votre code, vous pouvez utiliser le script d'aide api/howler/odm/random_data.py. Ce script contient des méthodes pour générer des données de test réalistes pour tous les modèles utilisés dans Howler.

Utilisation de base

cd ~/repos/howler/api

# Exécuter sans arguments - tous les index sont effacés et remplis avec des données de test
python howler/odm/random_data.py

# Remplir tous les index sans effacer les données existantes
python howler/odm/random_data.py all --no-wipe

# Remplir uniquement des index spécifiques
python howler/odm/random_data.py users hits analytics

# Remplir des index spécifiques sans effacer
python howler/odm/random_data.py users hits --no-wipe

Index disponibles

Les index suivants peuvent être remplis avec des données de test :

  • users - Comptes utilisateurs avec divers niveaux de permission et clés API
  • templates - Modèles d'affichage de hits pour différentes analytiques et détections
  • overviews - Modèles de vue d'ensemble basés sur Markdown avec support Handlebars
  • views - Requêtes de recherche et filtres sauvegardés
  • hits - Données d'alertes/détections incluant des bundles
  • analytics - Définitions d'analytiques avec règles et paramètres de triage
  • actions - Configurations d'actions automatisées
  • dossiers - Dossiers d'enquête

Données de test générées

Utilisateurs

Le script crée plusieurs utilisateurs prédéfinis pour tester différents scénarios :

Nom d'utilisateur Mot de passe Type Description
admin admin (ou $DEV_ADMIN_PASS) admin, user, automation_basic, automation_advanced Accès admin complet avec plusieurs clés API
user user (ou $DEV_USER_PASS) user Utilisateur standard avec clés d'impersonnalisation
shawn-h shawn-h admin, user Utilisateur admin pour les tests
goose goose admin, user Utilisateur admin pour les tests
huey huey user Utilisateur standard pour les tests
Mots de passe personnalisés

Vous pouvez personnaliser les mots de passe admin et utilisateur en définissant des variables d'environnement :

export DEV_ADMIN_PASS="mon_mot_de_passe_securise"
export DEV_USER_PASS="mon_mot_de_passe_utilisateur"
python howler/odm/random_data.py users

Hits

Par défaut, le script génère 200 hits aléatoires avec des données réalistes incluant :

  • Différents types de détection et analytiques
  • Différents niveaux de statut (ouvert, en cours, résolu)
  • Assignations aléatoires aux utilisateurs
  • Données d'évaluation (escalades et niveaux de scrutiny)
  • Catégories d'événements et métadonnées

Le script crée également des bundles - groupes de hits liés ensemble.

Analytiques

Le script génère des analytiques dans plusieurs catégories :

  • Analytiques existantes à partir des hits - Les analytiques sont automatiquement créées à partir des hits générés
  • Analytiques aléatoires (10 par défaut) - Définitions d'analytiques entièrement aléatoires
  • Analytiques basées sur des règles - Analytiques avec règles Lucene, EQL et Sigma

Chaque analytique inclut :

  • Détections
  • Commentaires (au niveau de l'analytique et de la détection)
  • Notebooks (si activé dans la configuration)
  • Paramètres de triage avec évaluations valides
  • Contributeurs et propriétaires
Règles Sigma

Pour de meilleures données de test utilisant les règles Sigma, exécutez d'abord le générateur de règles Sigma :

python howler/external/generate_sigma_rules.py

Modèles

Les modèles sont générés pour différentes analytiques et détections, incluant :

  • Modèles globaux - Disponibles pour tous les utilisateurs
  • Modèles personnels - Modèles spécifiques à l'utilisateur

Chaque modèle définit quels champs de hit doivent être affichés et dans quel ordre.

Vues d'ensemble

Les modèles de vue d'ensemble utilisent la syntaxe Handlebars pour créer des vues dynamiques basées sur Markdown des hits. Les vues d'ensemble générées incluent des exemples de :

  • Rendu conditionnel basé sur le statut du hit
  • Récupération de données externes via des appels API
  • Affichage d'avatars utilisateur
  • Badges de statut et formatage

Actions

Des actions automatisées aléatoires sont générées avec diverses opérations telles que :

  • Ajustements de priorisation
  • Transitions de statut
  • Mises à jour de champs
  • Opérations en masse

Chaque action inclut une requête pour correspondre aux hits et une série d'opérations à effectuer.

Vues

Des vues sauvegardées sont créées incluant :

  • Vues globales - Requêtes partagées pour des cas d'utilisation courants
  • Vues personnelles - Recherches sauvegardées spécifiques à l'utilisateur
  • Vues en lecture seule - Filtres préconfigurés (par exemple, "Assigné à moi")

Variables d'environnement

Le script respecte plusieurs variables d'environnement :

  • DEV_ADMIN_PASS - Mot de passe pour l'utilisateur admin (défaut : admin)
  • DEV_USER_PASS - Mot de passe pour le compte utilisateur (défaut : user)
  • HWL_PLUGIN_DIRECTORY - Emplacement des plugins Howler (défaut : /etc/howler/plugins)
  • ELASTIC_HIT_SHARDS - Nombre de shards pour l'index des hits (défini à 1 pendant la configuration)
  • ELASTIC_HIT_REPLICAS - Nombre de réplicas pour l'index des hits (défini à 1 pendant la configuration)
  • ELASTIC_USER_REPLICAS - Nombre de réplicas pour l'index utilisateur (défini à 1 pendant la configuration)
  • ELASTIC_USER_AVATAR_REPLICAS - Nombre de réplicas pour l'index des avatars utilisateur (défini à 1 pendant la configuration)

Intégration de plugins

Le générateur de données aléatoires prend en charge les plugins via la fonction run_modifications. Si vous avez des plugins personnalisés qui étendent les modèles de données de Howler, ils seront automatiquement invoqués pendant la génération de données pour remplir les champs spécifiques aux plugins.

Cas d'utilisation

Configuration de l'environnement de développement

Remplir rapidement une instance Howler fraîche avec des données de test réalistes :

python howler/odm/random_data.py all

Tester des fonctionnalités spécifiques

Remplir uniquement les données nécessaires pour votre fonctionnalité :

# Tester les permissions utilisateur
python howler/odm/random_data.py users --no-wipe

# Tester le traitement des hits
python howler/odm/random_data.py hits analytics --no-wipe

# Tester les actions
python howler/odm/random_data.py hits actions --no-wipe

Intégration continue

Utilisez le flag --no-wipe pour ajouter des données de test sans détruire les données existantes pendant les exécutions de tests.