Des exemples prêts à lire et à adapter
Le scanner se pilote avec des objets JSON déclaratifs : des jobs, des tags, des réglementations et des résultats. Voici des exemples réels, repris du référentiel du produit. Cliquez les onglets pour explorer chaque format, puis les commandes CLI en bas de page.
{
"job_format_version": "scanner_job/1.3",
"_metadata": {
"job_id": "scan_smb_reg_mixte_001",
"request_id": "REQ-SMB-REGLEM-001",
"generator_version": "job-creator/1.0"
},
"payload": {
"analysis_id": 5,
"analysis_nom": "reglementaire_mixte - SMB",
"type_analyse": "reglementaire_mixte",
"thinking": false,
"source": {
"nom": "Partage SMB Production",
"protocol": { "code": "smb", "endpoint": "192.168.10.100", "port": 445 },
"auth": { "kind": "user_password", "username": "administrator@domain.local", "password": "********" },
"params": { "smb": { "share": "data$", "dialect": "auto" } },
"type_code": "file_server"
},
"scope": {
"analysis": {
"paths": [""],
"exclude_presets": ["default_os", "vcs", "ide_editor", "microsoft_office_temps", "archives_heavy"],
"exclude_globs": ["**/*.log", "**/*.tmp"],
"depth_max": 50,
"file_filter": { "mode": "extensions", "allow": ["all"] },
"max_file_size_bytes": 104857600
}
},
"reglementations": [
{ "id": 101, "nom": "RGPD FR", "version": "v1.0", "criticite": "elevee", "priorite": 1 }
],
"options": { "job_deadline_seconds": 7200, "priorite": 5 }
}
}
Le mot de passe est masqué ici à l'affichage : dans un vrai job, il est chiffré au niveau du champ avant d'atteindre le serveur.
{
"job_format_version": "scanner_job/1.3",
"_metadata": { "job_id": "scan_s3_minio_inventaire_001", "request_id": "REQ-S3-MINIO-INVENT-001" },
"payload": {
"analysis_id": 1004,
"analysis_nom": "inventaire - S3 MinIO",
"type_analyse": "inventaire",
"source": {
"nom": "MinIO local",
"protocol": { "code": "s3", "endpoint": "minio.local", "port": 9000 },
"auth": {
"kind": "aws_signature_v4",
"aws_credentials": { "access_key_id": "minioadmin", "secret_access_key": "********" }
},
"params": { "s3": { "bucket": "documents", "region": "us-east-1", "path_style": true, "skip_verify": true } },
"type_code": "s3"
},
"scope": {
"inventory": {
"paths": [""],
"exclude_presets": ["default_os", "vcs"],
"depth_max": 50,
"file_filter": { "mode": "extensions", "allow": ["all"] }
}
},
"reglementations": [],
"options": { "job_deadline_seconds": 1800, "priorite": 5 }
}
}
Le même schéma s'applique à Cloudflare R2, Backblaze B2, Wasabi, Scaleway ou OVH : il suffit de changer endpoint et port.
// Tag « semi-structured » : regex primary + mots-clés de contexte + exclusion + validateur { "id": 1003, "nom": "PII_PHONE", "description": "Numéro de téléphone français (PII directe)", "format": "semi-structured", "sensibilite": "MOYENNE", "statut": "ACTIVE", "metadata": { "detector": { "normalization": true, "primary_optional": false, "elements": [ { "type": "regex", "role": "primary", "weight": 80, "pattern": "\b(?:\+33|0)[1-9](?:[\s.\-]?\d{2}){4}\b" }, { "type": "keywords", "role": "context", "weight": 20, "window": 6, "keywords": ["tel", "telephone", "téléphone", "mobile", "portable"] }, { "type": "regex", "role": "exclude", "exclude_mode": "soft", "weight": 30, "pattern": "\b0{10}\b|\b1{10}\b" } ], "validators": ["fr_phone"], "thresholds": { "min_score": 85, "min_primary_score": 60 } } }, "categorie": { "id": 1, "nom": "PII", "code": "PII" }, "liaison": { "est_obligatoire": true, "ordre_priorite": 2 } }
Un tag décrit une seule donnée sensible. Le même tag s'exécute par motif déterministe ou peut porter un prompt_detection pour l'analyse IA des formats non-structurés.
// Catalogue : Réglementations → Tags. Extrait : RGPD (email) + PCI-DSS (carte, Luhn) { "version": "1.1", "stats": { "total_reglementations": 2, "total_tags": 4 }, "reglementations": [ { "id": 101, "nom": "RGPD", "description": "Règlement Général sur la Protection des Données (UE 2016/679)", "criticite": "ELEVEE", "statut": "ACTIVE", "base_legale": "Règlement (UE) 2016/679", "tags": [ { "id": 1001, "nom": "PII_EMAIL", "format": "structured", "sensibilite": "MOYENNE", "metadata": { "detector": { "elements": [ { "type": "regex", "role": "primary", "weight": 80, "flags": "i" } ], "thresholds": { "min_score": 60, "min_primary_score": 60 } } } } ] }, { "id": 102, "nom": "PCI-DSS", "criticite": "CRITIQUE", "version": "4.0", "perimetre": "Données de carte bancaire (PAN, CVV) en clair", "tags": [ { "id": 2001, "nom": "PCI_PAN", "format": "structured", "sensibilite": "CRITIQUE", "metadata": { "detector": { "elements": [ { "type": "regex", "role": "primary", "weight": 70, "pattern": "\b(?:\d[ \-]?){12,18}\d\b" } ], "validators": ["luhn"], "thresholds": { "min_score": 70, "min_primary_score": 60 } } }, "categorie": { "id": 2, "nom": "Données financières", "code": "FIN" } } ] } ] }
# Fichier de résultats JSONL produit par le scan, lisible par l'API et l'export { "_metadata": { "schema_version": "1.4", "job_id": "scan_example_001" }, "analyse": { "id": 99, "type": "reglementaire", "statut": "completed", "etape": "2/2" }, "source": { "nom": "Partage SMB Production", "protocole": "smb" }, "resume": { "total_fichiers": 3, "fichiers_analyses": 3, "fichiers_erreur": 0, "taille_totale_humaine": "1.05 KB", "inventory_metrics": { "files_analyzed_done": 3, "files_analyzed_skipped": 0 } }, "fichiers": [ { "identification": { "nom_fichier": "contrat.docx", "extension": "docx", "profondeur": 2 }, "caracteristiques": { "taille_humaine": "512 B", "type_mime_detecte": "…wordprocessingml.document" }, "conformite": { "niveau_risque": "CONFORME", "methode_extraction": "tika", "tags_detectes": [], "details_analyse": { "analysis_mode": "regex_ia", "analysis_regex_ms": 30 } } } ] }
Quand un tag est détecté, il apparaît dans tags_detectes avec son score, ses occurrences et sa preuve masquée. Voir le format de justification de score sur la page Conformité.
# 1) Diagnostiquer une source AVANT de scanner (test de connectivité) scanner.exe diag --job tests/diag/smb.json --config config/config.json → { "smb": { "ok": true } } # 2) Lancer le serveur REST embarqué + le Job Builder scanner.exe serve --config config/config.json → API https://<hote>:<port>/api/v1/* → Doc API https://<hote>:<port>/api/docs → Job Builder https://<hote>:<port>/jobbuilder/ # 3) Exporter un rapport d'audit à partir des résultats scanner.exe export --results data/results/scan_001.jsonl \ --format pdf --out rapport_rgpd.pdf → formats : pdf · docx · xlsx · html · md · zip
Un jeu d'exemples pour chaque source
Le scanner est livré avec des jobs d'exemple par protocole, déclinés sur les différents modes d'analyse, de l'inventaire seul au réglementaire mixte.
SMB / Fichiers
- inventaire
- reglementaire_regex
- reglementaire_mixte
- reglementaire_ia / heuristic
Bases SQL
- PostgreSQL · MySQL · MariaDB
- MSSQL · Oracle
- Analyse du contenu des tables
- Filtres schéma / table / colonne
Stockage objet
- S3, MinIO, R2, B2
- Wasabi, Scaleway, OVH
- Azure Blob · GCS
- Mode inventaire / réglementaire
SSH / FTP
- SSH / SFTP (clé ou mot de passe)
- FTP / FTPS
- plusieurs modes d'analyse
- Vérification de l'hôte connu
Les jobs d'exemple sont fournis avec le scanner et composables sans écrire de JSON via le Job Builder.
Composez votre premier job sans écrire de JSON
Partez de ces exemples, ou assemblez visuellement sources, tags et réglementations dans le Job Builder, puis lancez un inventaire.
