Files
ja4-platform/shared/clickhouse/README.md
toto 8f5e771096 docs: réécriture complète de la documentation base de données en français
Réécriture des 3 fichiers de documentation de la base de données ClickHouse :

- docs/database/schema.md : couverture complète des 2 bases, 14+ tables,
  7 dictionnaires, 8 MVs, 8 vues, TTL, partitions, moteurs et colonnes
- docs/database/migrations.md : 13 fichiers SQL (ajout 10-12), prérequis
  mis à jour (ClickHouse 24.8+, 5 CSV), deploy_schema.sh, init-stack.sh,
  vérification et rollback complets
- shared/clickhouse/README.md : référence rapide des 13 fichiers,
  deploy_schema.sh, patron double-base, prérequis

Suppression des références obsolètes : dict_anubis_ua, dict_anubis_country,
anubis_ua_rules, anubis_country_rules.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-09 22:03:37 +02:00

76 lines
3.2 KiB
Markdown

# Schéma ClickHouse — ja4-platform
Ce répertoire contient les 13 fichiers SQL définissant le schéma complet
de la plateforme. Le schéma utilise un **patron double-base** :
- **`ja4_logs`** — ingestion brute et logs HTTP parsés
- **`ja4_processing`** — agrégations, ML, vues, dictionnaires, audit
Les noms de base sont configurables via variables d'environnement
(`CLICKHOUSE_DB_LOGS`, `CLICKHOUSE_DB_PROCESSING`).
## Fichiers SQL
Appliquer dans l'ordre numérique :
| Fichier | Contenu |
|---------|---------|
| `00_database.sql` | Création des bases `ja4_logs` et `ja4_processing` |
| `01_raw_tables.sql` | Table d'ingestion `http_logs_raw` |
| `02_dictionaries.sql` | Dictionnaire `dict_iplocate_asn`, tables `ref_bot_networks`, `bot_ip`, `bot_ja4` |
| `03_anubis_tables.sql` | Tables de règles Anubis (`anubis_ip_rules`, `anubis_asn_rules`) et dictionnaires (`dict_anubis_ip`, `dict_anubis_asn`) |
| `04_mv_http_logs.sql` | Table `http_logs` + vue matérialisée `mv_http_logs` (parse JSON + enrichissement Anubis IP→ASN) |
| `05_aggregation_tables.sql` | Dictionnaires de réputation (`dict_bot_ip`, `dict_bot_ja4`, `dict_browser_ja4`, `dict_asn_reputation`) + tables d'agrégation + MVs |
| `06_ml_tables.sql` | Tables ML (`ml_detected_anomalies`, `ml_all_scores`) + vue `view_ip_recurrence` |
| `07_ai_features_view.sql` | Vue `view_ai_features_1h` (~65+ features ML) |
| `08_users.sql` | Utilisateurs `data_writer` et `analyst` avec permissions |
| `09_audit_table.sql` | Table `audit_logs` pour le journal d'audit SOC |
| `10_perf_indexes.sql` | Index secondaires et projections de performance |
| `11_views.sql` | Vues dashboard (entités, user-agents, force brute, rotation JA4, cascade) |
| `12_thesis_features.sql` | Tables d'agrégation thèse (§5) + vue `view_thesis_features_1h` |
## Déploiement
### Méthode recommandée
Utiliser `deploy_schema.sh` qui applique les 13 fichiers avec substitution
automatique des noms de base :
```bash
./deploy_schema.sh
# Ou avec configuration personnalisée :
CLICKHOUSE_DB_LOGS=my_logs \
CLICKHOUSE_DB_PROCESSING=my_proc \
CLICKHOUSE_HOST=clickhouse-server \
CLICKHOUSE_PASSWORD='secret' \
./deploy_schema.sh
```
### Application manuelle
```bash
for f in 0*.sql 1*.sql; do
clickhouse-client --multiquery < "$f"
done
```
## Prérequis
- **ClickHouse 24.8+** (support `deduplicate_merge_projection_mode`)
- **Fichiers CSV** dans `/var/lib/clickhouse/user_files/` :
- `iplocate-ip-to-asn.csv` — correspondance IP→ASN (~714K entrées)
- `bot_ip.csv` — préfixes IP de bots connus (~3,5K CIDR)
- `bot_ja4.csv` — empreintes JA4 de bots (~31 entrées)
- `browser_ja4.csv` — empreintes JA4 de navigateurs (~1,2K entrées)
- `asn_reputation.csv` — labels de réputation ASN (~82K entrées)
- **Mots de passe Anubis** : remplacer `CHANGE_ME` dans `03_anubis_tables.sql`
## Notes
- Toutes les migrations sont **idempotentes** (`IF NOT EXISTS` / `CREATE OR REPLACE`).
- `04_mv_http_logs.sql` est la version **canonique** de la vue matérialisée.
- Les références inter-bases existent : les MVs dans `ja4_processing` lisent
depuis `ja4_logs.http_logs`.
- Documentation complète : `docs/database/schema.md` et `docs/database/migrations.md`.