Une organisation de défense moderne génère des données à un rythme qui dépasse les hypothèses des bases de données traditionnelles. Une seule plateforme ISR produit des gigaoctets d'imagerie par sortie. Un convoi à forte densité de capteurs génère des milliers de rapports de position CoT par minute. Une seule session de collecte SIGINT peut produire des téraoctets de données I/Q brutes avant tout traitement du signal. Multipliez ces volumes sur l'ensemble d'une force interarmées — des centaines de plateformes, des dizaines de types de capteurs, plusieurs niveaux de classification — et le problème de données qui en résulte n'est plus un problème de base de données. C'est un problème de data lake.
Cet article présente l'architecture complète d'un data lake de défense : comment les données entrent, comment elles sont stockées et structurées, comment les frontières de classification sont appliquées, comment les analystes l'interrogent, et comment les données classifiées sont mises hors service de manière sécurisée. Les schémas présentés ici s'appliquent que vous construisiez un système classifié sur site, un déploiement hybride, ou une plateforme d'analyse connectée au cloud au niveau non classifié ou contrôlé non classifié.
Pourquoi les bases de données traditionnelles ne peuvent pas gérer les données de défense à grande échelle
Les bases de données relationnelles sont conçues autour de schémas structurés et bien définis. Elles excellent dans les charges de travail transactionnelles — créer, lire, mettre à jour et supprimer des enregistrements avec de solides garanties de cohérence. La plupart des données de capteurs de défense ne présentent aucune de ces caractéristiques. Elles arrivent dans des formats hétérogènes : XML CoT des troupes au sol, fichiers de piste radar binaires, vidéo compressée de flux UAV, JSON de pipelines radio définies par logiciel, rapports de renseignement en PDF et transcriptions audio de la surveillance des communications. Forcer tout cela dans un schéma relationnel normalisé n'est pas seulement impraticable opérationnellement — cela détruit la fidélité brute à laquelle les analystes ont parfois besoin de revenir.
Les bases de données NoSQL résolvent le problème de schéma mais en introduisent de nouveaux : la plupart ne sont pas conçues pour les schémas de requêtes analytiques que le travail de renseignement exige (analyses complètes de tables, agrégations sur des millions d'enregistrements, recherches de similarité vectorielle sur des incorporations de documents). Les bases de données de séries temporelles gèrent bien les flux de capteurs à haute fréquence mais s'effondrent sous les jointures analytiques ad hoc. Le schéma de data lake de défense répond à toutes ces lacunes en séparant les préoccupations d'ingestion, de stockage et de requête en couches indépendamment évolutives.
Couche d'ingestion : streaming versus batch
La couche d'ingestion est l'endroit où les données brutes entrent dans le lac. Deux schémas distincts dominent les environnements de défense, et un lac en production a besoin des deux.
Ingestion en streaming
Les flux de capteurs en temps réel — rapports de position, pistes radar, alertes de renseignement sur les signaux, messages de chat, événements d'analyse vidéo — arrivent en continu et doivent être ingérés avec une faible latence. Apache Kafka est le choix open source dominant pour les environnements sur site et en réseau isolé. Les topics Kafka correspondent naturellement aux sources de données : un topic par type de capteur ou flux. Les listes de contrôle d'accès (ACL) au niveau des topics fournissent une première ligne d'application de la classification — un flux de capteurs classifié Secret atterrit dans un topic classifié Secret, et seuls les consommateurs disposant des accréditations appropriées peuvent s'y abonner.
Pour les déploiements hybrides ou connectés au cloud, Azure Event Hubs offre une surface d'API compatible Kafka avec une intégration native dans Azure Data Lake Storage Gen2 et Azure Synapse Analytics. Event Hubs Capture écrit les événements entrants directement dans ADLS Gen2 au format Avro ou Parquet, éliminant un processus consommateur séparé pour la zone de dépose brute. La charge opérationnelle est significativement inférieure à celle de Kafka autogéré, au prix d'un contrôle réduit sur les politiques d'accès au niveau des topics.
Les registres de schémas — Confluent Schema Registry (pour Kafka) ou Azure Schema Registry — doivent être obligatoires pour l'ingestion en streaming. L'enregistrement des schémas au point d'entrée empêche les messages malformés de se propager en aval et fournit un contrat versionné pour l'évolution des schémas. Une mise à jour du firmware d'un capteur qui modifie un nom de champ ou ajoute de nouveaux champs de télémétrie ne devrait jamais casser silencieusement l'analyse en aval.
Ingestion par lots
Toutes les données de défense n'arrivent pas en temps réel. Les dépôts quotidiens de synthèses de renseignement, les enregistrements de signaux archivés, les bases de données de pistes historiques et les données importées depuis des systèmes alliés arrivent généralement sous forme de transferts en masse selon un calendrier défini. Les pipelines d'ingestion par lots sont plus simples que les pipelines de streaming, mais présentent leurs propres défis : les fichiers peuvent arriver dans des formats hérités (imagerie NITF, STANAG 4607 GMTI, exports CSV de systèmes C2 vieillissants), et la taille des fichiers peut varier de quelques kilo-octets à des centaines de gigaoctets par transfert.
Une couche d'ingestion par lots robuste nécessite la détection et la validation des formats au point d'entrée, la vérification des sommes de contrôle pour confirmer l'intégrité du transfert, et un chemin de file morte pour les fichiers qui échouent à la validation. L'ingestion doit être idempotente — exécuter le même job de lot deux fois ne doit pas dupliquer les enregistrements dans la zone structurée. Le journal de transactions de Delta Lake rend l'ingestion par lots idempotente simple : les jobs d'écriture vérifient le journal de transactions avant d'ajouter, et la détection des doublons peut être implémentée avec une clé de ligne déterministe dérivée des identifiants du système source et des horodatages.
Couche de stockage : de la zone de dépose brute à la zone structurée
Un data lake de défense utilise un modèle de stockage multi-zones. Les données transitent par les zones au fur et à mesure qu'elles sont validées, transformées et mises à disposition pour l'analyse.
Zone de dépose brute
La zone de dépose brute est la première destination pour toutes les données entrantes — événements streaming écrits sous forme de fichiers Avro ou JSON line, transferts batch stockés dans leur format d'origine. Rien n'est modifié ici. La zone de dépose est un enregistrement forensique : si une erreur de traitement corrompt un jeu de données en aval, la zone de dépose brute est le point de récupération. Le stockage est un stockage objet compatible S3 — AWS S3, Azure Data Lake Storage Gen2, MinIO pour les déploiements sur site en réseau isolé, ou Ceph pour le stockage objet sur site à grande échelle.
Les objets dans la zone de dépose sont nommés selon un schéma de clé déterministe qui encode le système source, le niveau de classification, le type de données et l'horodatage d'arrivée. Une convention de nommage telle que raw/{classification}/{source}/{year}/{month}/{day}/{hour}/{uuid}.{ext} donne au pipeline de transformation une structure de partitionnement fiable et permet de retraiter une fenêtre temporelle spécifique pour une source unique sans toucher aux données non liées.
Zone structurée : Parquet et Delta Lake
La zone structurée est l'endroit où les données brutes sont transformées en un format que les moteurs analytiques peuvent interroger efficacement. Le standard actuel est celui des fichiers Parquet en colonnes gérés par une couche de format de table Delta Lake ou Apache Iceberg. La disposition en colonnes de Parquet réduit considérablement les E/S pour les requêtes analytiques qui n'accèdent qu'à un sous-ensemble de champs — ce qui est la norme pour l'analyse de renseignement. Une requête portant sur toutes les pistes aériennes dans un rayon de 50 km sur une fenêtre de six heures n'a besoin que des colonnes de latitude, longitude, altitude, horodatage et identifiant de piste, et non du schéma de capteur complet à 80 champs.
Delta Lake ajoute quatre capacités critiques dans un environnement classifié. Premièrement, les transactions ACID garantissent que les écritures concurrentes de plusieurs jobs Spark ne produisent pas de jeux de données partiels ou corrompus. Deuxièmement, le journal de transactions fournit un historique complet de chaque opération d'écriture, de mise à jour et de suppression — une exigence pour la provenance des données dans les systèmes classifiés. Troisièmement, les requêtes de voyage dans le temps permettent aux analystes de reconstruire l'état d'un jeu de données à tout moment passé, ce qui soutient à la fois l'analyse forensique et la revue après action. Quatrièmement, l'application des schémas empêche les erreurs d'ingestion en aval d'écrire silencieusement des enregistrements malformés dans une table de production.
Isolation par classification
Les frontières de classification doivent être appliquées au niveau de la couche de stockage, et pas seulement au niveau de la couche applicative. Chaque niveau de classification (Non classifié, Information Contrôlée Non Classifiée, Confidentiel, Secret, Très Secret/SCI) nécessite des compartiments ou espaces de noms de stockage physiquement séparés. Les compartiments partagés avec une séparation par chemin ne sont pas suffisants — une politique IAM mal configurée ou un bug logiciel dans la couche de contrôle d'accès peut exposer des données entre niveaux de classification si les objets partagent le même compartiment.
Chaque niveau de classification utilise une clé de chiffrement de données (DEK) distincte gérée par un module de sécurité matérielle (HSM) ou un service de gestion des clés avec certification FIPS 140-2 Niveau 3. Le chiffrement est appliqué côté serveur au niveau de la couche de stockage, de sorte que même le retrait du support de stockage n'expose pas les données en clair. Les calendriers de rotation des clés sont définis par niveau de classification et doivent être automatisés — la rotation manuelle des clés à la fréquence requise pour les données classifiées est opérationnellement impraticable.
Catalogue de données et application de la classification
Un data lake sans catalogue est un marécage de données. Les analystes de défense doivent pouvoir découvrir quels jeux de données existent, ce qu'ils contiennent, quand ils ont été mis à jour pour la dernière fois, et quel niveau de classification ils portent — avant d'émettre une requête qui pourrait par inadvertance demander des données dépassant leur habilitation. Un catalogue de métadonnées sert d'index consultable du contenu du lac.
Apache Atlas (couramment déployé avec les piles de l'écosystème Hadoop) et AWS Glue Data Catalog (pour les déploiements cloud ou hybrides) sont les deux options les plus utilisées. Les deux prennent en charge l'enregistrement des schémas, le suivi de la lignée et les attributs de métadonnées personnalisés. Le niveau de classification doit être un attribut de schéma obligatoire — et non une étiquette optionnelle — de sorte que chaque jeu de données dans le catalogue possède une étiquette de classification explicite que la couche de requête peut appliquer.
La visibilité du catalogue doit elle-même respecter la politique d'accès : un analyste habilité au niveau Secret ne doit pas pouvoir parcourir les entrées du catalogue pour les jeux de données Très Secret, même s'il ne peut pas interroger les données sous-jacentes. Cela nécessite d'intégrer la couche d'autorisation du catalogue avec le fournisseur d'identité de l'organisation (Active Directory, LDAP ou un IdP compatible SAML). Chaque événement d'accès au catalogue doit être consigné dans un collecteur d'audit central aux côtés des événements de requête.
Couche de requête : SQL, analytique batch et recherche vectorielle
La couche de requête est l'endroit où les analystes et les systèmes en aval consomment les données du lac. Un data lake de défense en production a besoin d'au moins trois modalités de requête.
SQL ad hoc avec Trino
Trino (anciennement PrestoSQL) est le choix standard pour les requêtes SQL ad hoc sur de grands jeux de données Parquet ou Delta Lake. L'architecture de connecteurs de Trino permet à une seule requête de joindre des données provenant de plusieurs sources — la zone structurée Delta Lake, une base de données opérationnelle PostgreSQL en direct et un index Elasticsearch — dans une seule instruction SQL. Pour l'analytique de défense, cela signifie qu'un analyste peut écrire une requête corrélant les données de pistes historiques du lac avec les rapports de contact en direct de l'image opérationnelle sans exporter de données entre systèmes.
La couche de contrôle d'accès de Trino prend en charge le filtrage au niveau des lignes et le masquage des colonnes via des politiques au niveau des connecteurs. Un filtre de ligne peut restreindre une requête aux seuls enregistrements correspondant à la zone géographique de responsabilité autorisée de l'analyste. Le masquage des colonnes peut expurger les champs sensibles — identifiants du système source, codes de méthode de collecte — pour les analystes dont l'habilitation ne s'étend pas à ces métadonnées. Tous les événements de requête sont consignés dans un collecteur d'audit qui capture le texte de la requête, l'identité de l'utilisateur authentifié, les tables accédées et le niveau de classification des données retournées.
Analytique batch à grande échelle avec Spark
Certaines tâches d'analyse de renseignement sont trop importantes pour le SQL interactif. L'analyse du mode de vie sur six mois de données de position, la corrélation du renseignement sur les signaux avec les mouvements au sol sur l'ensemble d'un théâtre, ou l'entraînement d'un modèle d'apprentissage automatique sur des données de pistes étiquetées nécessitent tous un traitement batch distribué. Apache Spark fonctionnant sur un cluster YARN ou Kubernetes est le moteur standard pour ces charges de travail.
Spark s'intègre nativement avec Delta Lake et peut lire Parquet directement depuis un stockage objet compatible S3. Pour les environnements classifiés, les jobs Spark doivent s'exécuter dans des clusters ou espaces de noms isolés par niveau de classification afin qu'un job de niveau Secret ne puisse pas accidentellement référencer un jeu de données non classifié via une variable de chemin mal configurée. L'exécution des jobs doit être consignée avec le même niveau de détail d'audit que les requêtes interactives : propriétaire du job, niveau de classification des jeux de données d'entrée, niveau de classification des jeux de données de sortie et horodatage d'exécution.
Recherche vectorielle pour les documents de renseignement
Les documents de renseignement non structurés — rapports, transcriptions, intercepts traduits — ne s'adaptent pas bien aux schémas de requêtes SQL. Les analystes ont besoin d'une recherche sémantique : « trouver tous les rapports évoquant des perturbations de routes d'approvisionnement près de cette référence de grille » plutôt que « trouver tous les enregistrements où document_text LIKE '%route d'approvisionnement%' ». Les incorporations vectorielles générées par un modèle de langage et stockées dans une base de données vectorielle (pgvector sur PostgreSQL, ou un service dédié comme Qdrant pour le déploiement sur site) permettent ce type de récupération sémantique.
La couche de recherche vectorielle doit respecter les frontières de classification de la même manière que les couches SQL et Spark. Les pipelines de génération d'incorporations doivent s'exécuter dans le niveau de classification des documents sources, et les index vectoriels résultants doivent être isolés par niveau de classification. La recherche sémantique inter-classification — trouver des documents non classifiés thématiquement similaires à une requête classifiée — nécessite un examen d'architecture de solution inter-domaines (CDS) explicite et n'est pas une capacité par défaut.
Rétention, purge et piste d'audit
Les données dans un data lake de défense ne s'accumulent pas indéfiniment. Les politiques de rétention pilotées par la classification définissent combien de temps chaque type de données est conservé à chaque niveau de classification. Les données opérationnelles de capteurs pourraient avoir une rétention de 90 jours au niveau Secret ; les produits de renseignement stratégique pourraient être conservés pendant 10 ans. Les politiques de rétention sont définies dans un registre de politiques et appliquées par des jobs de gestion du cycle de vie automatisés fonctionnant selon un calendrier défini.
La suppression sécurisée des données classifiées ne peut pas reposer sur la suppression standard du système de fichiers ou l'expiration des objets. La suppression standard marque les blocs de stockage comme disponibles pour réutilisation, mais ne les écrase pas. Pour les données classifiées, l'approche requise est l'effacement cryptographique, également appelé crypto-shredding : chaque niveau de classification utilise une DEK distincte, et lorsqu'une politique de rétention déclenche la suppression, la DEK est tournée et la version précédente de la clé est détruite. Sans la DEK, le texte chiffré stocké est computationnellement indiscernable du bruit aléatoire. Cette approche s'adapte aux jeux de données de l'ordre du pétaoctet sans la pénalité de performance des procédures d'écrasement multi-passes.
Chaque événement de purge doit produire une entrée de journal d'audit immuable. L'entrée d'audit doit enregistrer les clés d'objet ou identifiants de partition qui ont été purgés, la règle de rétention qui a déclenché la purge, l'horodatage de la destruction de la clé, et l'identité du principal automatisé ou humain qui a autorisé l'opération. Le journal d'audit lui-même doit être stocké dans une configuration en écriture unique et inviolable — compartiment S3 en ajout seul avec verrouillage d'objet, ou un service de journal d'audit dédié avec chaînage cryptographique.
Pour plus de détails sur la façon dont les files d'attente de messages prennent en charge la couche d'ingestion en streaming décrite ici, consultez notre article sur l'architecture de file d'attente de messages pour les données de défense à haut débit. Pour les schémas de fusion qui opèrent sur les données une fois qu'elles atteignent la zone structurée, consultez notre guide sur l'architecture de fusion multi-capteurs.
Considérations opérationnelles
Un data lake de défense n'est pas une infrastructure à déployer et oublier. Plusieurs préoccupations opérationnelles méritent une attention explicite lors de l'architecture et des achats.
Compatibilité réseau isolé. De nombreux déploiements classifiés ne peuvent pas maintenir une connectivité Internet persistante. Tous les composants de la pile du lac — Kafka, Spark, Trino, le service de catalogue, le magasin vectoriel — doivent être déployables depuis des miroirs de paquets locaux et des registres de conteneurs. La dépendance vis-à-vis des référentiels de paquets publics au moment de l'exécution est un risque de sécurité et de disponibilité dans les environnements classifiés.
Gouvernance de l'évolution des schémas. Les mises à jour du firmware des capteurs, les nouvelles intégrations de plateformes et l'évolution des exigences de rapportage modifieront les schémas de données au fil du temps. Les modifications de schémas dans la zone structurée doivent passer par un processus de contrôle des modifications qui évalue l'impact en aval : la modification casse-t-elle les requêtes Trino existantes ? Nécessite-t-elle un rechargement des données historiques ? Les contrôles d'évolution de schéma de Delta Lake (option mergeSchema) et la gestion intégrée des versions de schéma d'Iceberg fournissent les mécanismes techniques, mais le processus de gouvernance autour d'eux est tout aussi important.
Surveillance des performances par niveau de classification. Les performances des requêtes peuvent différer significativement entre les niveaux de classification — un analyste de niveau 1 exécutant des requêtes sur un jeu de données Secret à l'échelle du pétaoctet opère dans une enveloppe de performance différente de celle d'un analyste de niveau 3 interrogeant un petit jeu de données non classifié. La surveillance de la latence des requêtes, du volume de données analysé et de l'utilisation des clusters par niveau de classification permet à la planification de capacité de suivre les schémas d'utilisation réels plutôt que les pics théoriques.
Corvus.Head est conçu pour s'intégrer directement aux data lakes de défense multi-sources — en ingérant des flux de capteurs, en fusionnant des pistes entre les niveaux de classification là où les solutions inter-domaines le permettent, et en présentant des analyses exploitables aux opérateurs et aux équipes de renseignement en temps réel.
Découvrir Corvus.Head →