Pourquoi je l'ai construit
Kontrol, mon autre projet de gouvernance, vise les grandes organisations : multi-tenant, PostgreSQL, décisions signées, collecteurs cloud. Un cabinet comptable de vingt personnes à Casablanca a besoin de l'inverse. Il a un locataire Microsoft 365, quelques portables Windows, un registre des traitements à tenir pour la CNDP et, s'il est opérateur ou fournisseur d'un opérateur, des incidents à déclarer à la DGSSI. Il n'a ni équipe sécurité, ni budget pour un SaaS facturé en dollars par employé.
Amane fait ce pari : une entreprise par installation, tout en français, deux commandes pour démarrer, et les obligations marocaines traitées comme des outils de travail plutôt que comme une liste d'articles.

Mettre en œuvre une fois, progresser partout
Les trois obligations marocaines se recoupent largement. Chiffrer les portables répond à l'ISO 27001 A.8.1, à l'obligation de sécurité de la loi 09-08 et aux règles de la DNSSI sur les postes. Amane tient une seule bibliothèque de 66 mesures, rédigées en français, chacune reliée à toutes les exigences qu'elle satisfait : avancer sur une mesure fait progresser tous les référentiels qui en dépendent. Le NIST CSF 2.0 et COBIT 2019 s'activent pour les clients qui les demandent ; huit objectifs COBIT sans lien avec la sécurité démarrent exclus, avec la raison écrite.
| Référentiel | Exigences | Couverture |
|---|---|---|
| ISO/IEC 27001:2022 | Clauses 4 à 10 et les 93 mesures de l'Annexe A | Chaque exigence reliée à au moins une mesure |
| Loi 09-08 (CNDP) | 16 obligations, et un registre des traitements avec le statut CNDP | Chaque exigence reliée |
| DNSSI et loi 05-20 | 21 exigences, dont la déclaration des incidents à la DGSSI | Chaque exigence reliée |
| NIST CSF 2.0 (optionnel) | 22 catégories | Toutes reliées |
| COBIT 2019 (optionnel) | 40 objectifs | 32 reliés, 8 exclus avec justification |
La correspondance est vérifiée par les tests : si une exigence d'un référentiel activé perd sa dernière mesure, la suite échoue.
Des preuves collectées, pas déclarées
Chaque portable, toutes les quatre heures
Un agent PowerShell, installé par chaque collaborateur avec une commande depuis son espace, remonte BitLocker, l'antivirus, le pare-feu, les mises à jour, le verrouillage de session, la version de Windows, les droits d'administrateur local et la politique de mots de passe. Il n'a besoin d'aucun droit administrateur et n'envoie que ces résultats, le nom du poste et l'e-mail de l'utilisateur.
La MFA sur chaque compte Microsoft 365
Une application Entra en lecture seule lit les comptes, leurs méthodes d'authentification, les rôles d'administration, les paramètres de sécurité par défaut et les stratégies d'accès conditionnel. Trois contrôles en découlent : MFA enregistrée sur chaque compte, sur chaque administrateur, et imposée au niveau du locataire. Le secret est chiffré en AES-256-GCM et n'est jamais renvoyé au navigateur. Les locataires sans Entra ID P1/P2 sont lus compte par compte.

Le programme lui-même
Politiques acceptées par chacun dans leur version en vigueur, formation de moins d'un an, risques et fournisseurs critiques revus, traitements déclarés à la CNDP, incidents déclarés à la DGSSI, retour d'expérience après chaque incident grave, revues des accès clôturées et retraits réellement faits.
Les obligations marocaines comme outils de travail
Les incidents et la déclaration à la DGSSI
Chaque incident reçoit une échéance de déclaration calculée depuis l'heure de détection, une fiche de déclaration pré-remplie à imprimer ou enregistrer en PDF, et un signal quand des données personnelles sont touchées, pour que l'information de la CNDP soit décidée et tracée. Le contrôle reste rouge tant que la date et la référence de la déclaration ne sont pas saisies.

EBIOS Risk Manager
Valeurs métier, biens supports et événements redoutés ; sources de risque et objectifs visés ; parties prenantes évaluées selon la menace ; scénarios stratégiques et opérationnels ; puis une cartographie gravité × vraisemblance. Un scénario retenu part au registre des risques avec ses mesures, et un nouvel envoi met à jour le même risque au lieu d'en créer un doublon.

La revue des accès
Une campagne fige la liste des comptes Microsoft 365 avec leurs rôles et leur MFA. Les responsables conservent, modifient ou retirent chaque accès depuis leur espace, et aucune correction ne s'enregistre sans dire ce qui doit changer. La clôture dépose les décisions comme preuve de la mesure IAM-05 ; un second contrôle reste rouge tant que chaque retrait n'est pas confirmé.

Le montrer aux clients sans l'exposer
Les petites entreprises perdent des marchés sur les questionnaires de sécurité fournisseurs. Le Trust Center est une page publique, mise à jour en continu, qui montre la préparation par référentiel, les mesures en place, les contrôles réussis et les sous-traitants qui traitent des données personnelles. Les politiques sont listées publiquement ; leur texte complet ne s'ouvre que par un lien personnel valable trente jours, après accord d'un administrateur.


Un journal d'activité digne de confiance pour l'auditeur
Chaque action est scellée par un HMAC-SHA256 de son contenu et de l'empreinte de l'entrée précédente, avec une clé secrète du serveur. Modifier, supprimer ou réordonner une entrée rompt la chaîne, et quelqu'un qui copie la base sans la clé ne peut pas la reconstruire. Des déclencheurs SQLite refusent toute modification ou suppression, et la tête de la chaîne est ancrée chaque jour et envoyée par e-mail aux administrateurs : supprimer les dernières entrées est donc détecté aussi. Sept tests jouent l'attaquant : contenu modifié, empreinte recalculée sans la clé, entrée supprimée au milieu, fin du journal tronquée. Tous sont détectés.
L'interface
La première version ressemblait à tous les tableaux de bord générés : dégradés violets, anneaux en dégradé, une main qui fait coucou. Je l'ai refaite autour de surfaces neutres, de filets fins, d'un seul accent terracotta et de la police Geist, embarquée pour que rien ne se charge depuis un CDN. Elle a un thème clair et un thème sombre, une palette de commandes sur Ctrl K qui mène à n'importe quelle page, mesure, politique ou risque, et aucun framework front-end.


Ce que le construire m'a appris
- Mon premier Trust Center exposait les failles. Il listait chaque mesure avec une coche ou un cercle vide : une carte de l'endroit où attaquer. Il ne publie plus que ce qui est en place, et le serveur n'envoie jamais le reste.
- L'agent mentait sur mon propre portable. Sur un poste où Git est installé,
whoamirenvoyait vers la version de Git et le contrôle des droits administrateur passait à tort. L'agent appelle désormais chaque outil Windows par son chemin complet dans System32. - Les accents cassaient sous PowerShell 5.1 jusqu'à ce que le serveur ajoute une marque d'ordre d'octets au script téléchargé. Un test lit maintenant les octets bruts, parce que
fetchretire silencieusement cette marque en décodant le texte. - Les tests ont changé ma façon de construire. La revue des accès a été écrite avec ses neuf tests avant son interface, et la suite repère une correspondance cassée, un secret qui fuit ou une page qui ne se charge plus avant que quoi que ce soit ne soit poussé.
Limites
- Rien n'a été audité. Les scores de préparation sont une auto-évaluation structurée, pas une prédiction du résultat d'une certification.
- Les textes des exigences sont reformulés. L'ISO/IEC 27001 est protégée par le droit d'auteur et les textes marocains sont résumés pour le pilotage ; les textes officiels restent la référence.
- L'échéance DGSSI est un réglage. La loi 05-20 impose une déclaration sans délai ; le nombre d'heures est l'objectif interne de l'organisme, 24 par défaut.
- L'intégration Microsoft 365 a été testée contre une API Graph simulée, avec et sans le rapport P1/P2, pas sur un locataire de production. Les alertes e-mail ont été testées contre un serveur SMTP local.
- Une entreprise par installation, un agent pour Windows uniquement, et pas encore d'authentification unique.
Le code est public sous licence MIT : github.com/omarbabba779xx/amane-grc. npm run demo construit l'entreprise fictive utilisée dans toutes les captures.