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>
This commit is contained in:
@ -1,48 +1,75 @@
|
||||
# ClickHouse Migrations — ja4-platform
|
||||
# Schéma ClickHouse — ja4-platform
|
||||
|
||||
## Migration Order
|
||||
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** :
|
||||
|
||||
Apply these files in numeric order against the ClickHouse server:
|
||||
- **`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
|
||||
clickhouse-client --multiquery < 00_database.sql
|
||||
clickhouse-client --multiquery < 01_raw_tables.sql
|
||||
clickhouse-client --multiquery < 02_dictionaries.sql
|
||||
clickhouse-client --multiquery < 03_anubis_tables.sql
|
||||
clickhouse-client --multiquery < 04_mv_http_logs.sql
|
||||
clickhouse-client --multiquery < 05_aggregation_tables.sql
|
||||
clickhouse-client --multiquery < 06_ml_tables.sql
|
||||
clickhouse-client --multiquery < 07_ai_features_view.sql
|
||||
clickhouse-client --multiquery < 08_users.sql
|
||||
clickhouse-client --multiquery < 09_audit_table.sql
|
||||
./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
|
||||
```
|
||||
|
||||
## File Descriptions
|
||||
### Application manuelle
|
||||
|
||||
| File | Contents |
|
||||
|------|----------|
|
||||
| `00_database.sql` | CREATE DATABASE |
|
||||
| `01_raw_tables.sql` | `http_logs_raw` ingest table |
|
||||
| `02_dictionaries.sql` | ASN geo dict, bot IP/JA4/network reference tables |
|
||||
| `03_anubis_tables.sql` | Anubis crawler rule tables and dictionaries (UA, IP, ASN, country) |
|
||||
| `04_mv_http_logs.sql` | Canonical `http_logs` target table + `mv_http_logs` materialized view with full Anubis enrichment |
|
||||
| `05_aggregation_tables.sql` | `agg_host_ip_ja4_1h`, `agg_header_fingerprint_1h` + their MVs |
|
||||
| `06_ml_tables.sql` | `ml_detected_anomalies`, `ml_all_scores` |
|
||||
| `07_ai_features_view.sql` | `view_ai_features_1h` with Anubis enrichment |
|
||||
| `08_users.sql` | ClickHouse users and grants |
|
||||
| `09_audit_table.sql` | `audit_logs` table for SOC dashboard audit trail |
|
||||
```bash
|
||||
for f in 0*.sql 1*.sql; do
|
||||
clickhouse-client --multiquery < "$f"
|
||||
done
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
## Prérequis
|
||||
|
||||
Place CSV data files in `/var/lib/clickhouse/user_files/`:
|
||||
- `iplocate-ip-to-asn.csv` — IP-to-ASN mapping (from IPLocate)
|
||||
- `bot_ip.csv` — Known bot IP prefixes
|
||||
- `bot_ja4.csv` — Known bot JA4 fingerprints
|
||||
- `asn_reputation.csv` — ASN reputation labels
|
||||
- **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
|
||||
|
||||
- `04_mv_http_logs.sql` is the **canonical** version of the MV, superseding the base version
|
||||
in `services/correlator/sql/init.sql`. It includes full Anubis enrichment.
|
||||
- All migrations are idempotent (use `IF NOT EXISTS` / `IF EXISTS`).
|
||||
- Anubis dictionary passwords in `03_anubis_tables.sql` **must** be changed before production use.
|
||||
- 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`.
|
||||
|
||||
Reference in New Issue
Block a user