Sécurité — Règles essentielles pour le développement
Règles de sécurité pour le développement d'applications de l'État, générées par la DINUM en s'appuyant sur 13 guides publiés par l'ANSSI. La liste des guides, leur version et la correspondance avec chaque domaine figurent dans references/sources.md.
Source : https://cyber.gouv.fr/reglementation/cybersecurite-systemes-dinformation/
Deux modes d'usage
Mode conseil — pendant le développement
Quand on écrit du code, qu'on configure un serveur, un reverse proxy, une base de données ou un pipeline CI/CD, appliquer directement les règles du ou des domaines concernés, sans produire de rapport.
- Consulter le ou les domaines pertinents de
references/checklist.md.
- Dès qu'une valeur concrète est en jeu — version de TLS, suite cryptographique, taille de clé, courbe elliptique, fonction de dérivation de mot de passe, durée de rétention des journaux — la reprendre depuis
references/valeurs-anssi.md. Ne jamais inventer ni approximer ces valeurs de mémoire.
- Signaler à l'utilisateur la règle appliquée et sa source ANSSI quand elle contraint un choix technique.
Mode audit — évaluation de conformité
Quand l'utilisateur demande un audit, un rapport de conformité, ou de vérifier la sécurité d'un projet existant, dérouler le workflow ci-dessous.
Hors périmètre
Pour une question de sécurité hors des 14 domaines — architecture réseau, pare-feu, DNS, Active Directory, remédiation, systèmes industriels, IA générative… — utiliser la skill anssi-guides, qui cherche dans l'ensemble du catalogue ANSSI (126 guides).
Même à l'intérieur des 14 domaines, quand la règle applicable est marquée [DINUM] — faute de source dans les 13 guides — vérifier dans anssi-guides si le catalogue complet couvre le sujet : plusieurs de ces angles morts y ont un guide dédié (OpenID Connect et authentification déléguée, conteneurs Docker, sauvegarde). Appliquer la règle [DINUM] et, si un guide existe, le signaler.
Workflow d'audit
- Analyser le projet (code source, configuration, infrastructure, CI/CD)
- Sélectionner les modules applicables (voir ci-dessous) — aucun module n'est chargé par défaut
- Parcourir les 14 domaines de la checklist détaillée dans
references/checklist.md, puis les modules retenus
- Pour chaque règle, attribuer un statut :
- OK — Règle respectée
- KO — Règle non respectée (identifier le problème et le risque)
- NA — Non applicable (justifier)
- Partiel — Partiellement respectée (préciser ce qui manque)
- Qualifier l'exploitabilité de chaque KO : distinguer une faille exploitable (activable en l'état → chemin d'attaque réel) d'une bonne pratique manquante (défense en profondeur, sans exploitation directe). Cette qualification alimente la priorité.
- Valider les non-conformités : avant de finaliser, re-vérifier chaque KO contre le code et la configuration réels. Écarter les faux positifs, ou requalifier le statut/l'exploitabilité si le constat ne tient pas. Ne conserver que les constats étayés par une preuve concrète (fichier, ligne, réglage).
- Produire le rapport structuré selon le format défini dans
references/rapport.md
- Exporter le rapport : écrire le rapport dans un fichier Markdown ET l'afficher dans la conversation (règles d'export dans
references/rapport.md). Une sortie structurée JSON optionnelle est disponible au format securite-developpement-AAAA-MM-JJ.json (schéma : references/findings-schema.json).
Les 14 domaines du socle
| # |
Domaine |
# |
Domaine |
| 1 |
TLS / HTTPS |
8 |
Sécurité navigateur et API |
| 2 |
Cryptographie |
9 |
Cloisonnement système |
| 3 |
Gestion des secrets |
10 |
Conteneurs et déploiement |
| 4 |
Authentification, MFA et mots de passe |
11 |
Chaîne de développement (CI/CD) |
| 5 |
Validation des entrées et bases de données |
12 |
Poste de développement |
| 6 |
Dépendances et composants tiers |
13 |
Sauvegarde et continuité |
| 7 |
Journalisation |
14 |
Gestion des incidents |
Sélection des modules conditionnels
Les modules ne sont ni chargés ni audités par défaut. Détecter la stack du projet et ne retenir que les modules dont le déclencheur est effectivement présent :
| Module |
Charger si |
references/modules/langage-c.md |
présence de fichiers *.c (ou configuration de build compilant effectivement du C) |
references/modules/langage-rust.md |
présence de Cargo.toml / Cargo.lock |
references/modules/cms.md |
CMS détecté : wp-config.php (WordPress), Drupal, Joomla, ou hébergement CMS géré |
Un module non chargé n'apparaît pas dans le rapport et ne compte pas dans le résultat global.
Traçabilité des règles
Chaque règle de la checklist porte entre crochets l'origine de son exigence :
[TLS R3], [MFA R29], [CRYPTO R5]… — recommandation numérotée d'un guide ANSSI, citée par son identifiant exact. Les suffixes - et -- (ex. [MFA R29-]) désignent des alternatives dégradées, à n'utiliser que si la recommandation nominale est hors d'atteinte.
[ESS-DEVSECOPS], [ESS-BDD], [ESS-LIBRE], [ESS-CMS] — les « Essentiels » de l'ANSSI ne numérotent pas leurs recommandations : elles sont citées par guide, le libellé exact figurant dans references/sources.md.
[DINUM] — bonne pratique de place retenue par la DINUM, sans équivalent dans les guides ANSSI. Ne jamais la présenter comme une exigence de l'ANSSI.
Références
| Fichier |
Contenu |
references/checklist.md |
Les 14 domaines du socle (règles à vérifier, avec leur source) |
references/valeurs-anssi.md |
Valeurs chiffrées à citer sans les réinventer (crypto, TLS, mots de passe, journaux) |
references/sources.md |
Les 13 guides ANSSI : version, URL, date de consultation, domaines alimentés |
references/modules/ |
Modules conditionnels : langage C, Rust, CMS |
references/rapport.md |
Format du rapport, grille de priorités, export, sortie JSON optionnelle |
references/findings-schema.json |
JSON Schema de la sortie structurée optionnelle (securite-developpement-AAAA-MM-JJ.json) |
1---2name: securite-developpement3description: Règles essentielles de sécurité pour le développement d'applications de l'État, générées par la DINUM en s'appuyant sur 13 guides produits par l'ANSSI. 14 domaines couvrant TLS, cryptographie, secrets, authentification multifacteur, entrées et bases de données, dépendances, journalisation, sécurité navigateur et API, cloisonnement système, conteneurs, chaîne CI/CD, poste de développement, sauvegarde et incidents — plus des modules pour le langage C, Rust et les CMS. Utiliser cette skill quand l'utilisateur développe une application web, une API ou tout service exposé, quand il mentionne la sécurité, l'ANSSI, le durcissement, la cryptographie, le chiffrement, le DevSecOps ou le cloisonnement, et quand on configure un serveur, un reverse proxy, une base de données ou un pipeline CI/CD.4---56# Sécurité — Règles essentielles pour le développement78Règles de sécurité pour le développement d'applications de l'État, générées par la DINUM en s'appuyant sur 13 guides publiés par l'ANSSI. La liste des guides, leur version et la correspondance avec chaque domaine figurent dans [`references/sources.md`](references/sources.md).910Source : https://cyber.gouv.fr/reglementation/cybersecurite-systemes-dinformation/1112---1314## Deux modes d'usage1516### Mode conseil — pendant le développement1718Quand on écrit du code, qu'on configure un serveur, un reverse proxy, une base de données ou un pipeline CI/CD, appliquer directement les règles du ou des domaines concernés, **sans produire de rapport**.1920- Consulter le ou les domaines pertinents de [`references/checklist.md`](references/checklist.md).21- Dès qu'une valeur concrète est en jeu — version de TLS, suite cryptographique, taille de clé, courbe elliptique, fonction de dérivation de mot de passe, durée de rétention des journaux — la reprendre depuis [`references/valeurs-anssi.md`](references/valeurs-anssi.md). **Ne jamais inventer ni approximer ces valeurs de mémoire.**22- Signaler à l'utilisateur la règle appliquée et sa source ANSSI quand elle contraint un choix technique.2324### Mode audit — évaluation de conformité2526Quand l'utilisateur demande un audit, un rapport de conformité, ou de vérifier la sécurité d'un projet existant, dérouler le workflow ci-dessous.2728### Hors périmètre2930Pour une question de sécurité hors des 14 domaines — architecture réseau, pare-feu, DNS, Active Directory, remédiation, systèmes industriels, IA générative… — utiliser la skill [`anssi-guides`](../anssi-guides/SKILL.md), qui cherche dans l'ensemble du catalogue ANSSI (126 guides).3132Même à l'intérieur des 14 domaines, quand la règle applicable est marquée `[DINUM]` — faute de source dans les 13 guides — vérifier dans [`anssi-guides`](../anssi-guides/SKILL.md) si le catalogue complet couvre le sujet : plusieurs de ces angles morts y ont un guide dédié (OpenID Connect et authentification déléguée, conteneurs Docker, sauvegarde). Appliquer la règle `[DINUM]` **et**, si un guide existe, le signaler.3334---3536## Workflow d'audit37381. **Analyser le projet** (code source, configuration, infrastructure, CI/CD)392. **Sélectionner les modules applicables** (voir ci-dessous) — aucun module n'est chargé par défaut403. **Parcourir les 14 domaines** de la checklist détaillée dans [`references/checklist.md`](references/checklist.md), puis les modules retenus414. **Pour chaque règle**, attribuer un statut :42 - **OK** — Règle respectée43 - **KO** — Règle non respectée (identifier le problème et le risque)44 - **NA** — Non applicable (justifier)45 - **Partiel** — Partiellement respectée (préciser ce qui manque)465. **Qualifier l'exploitabilité de chaque KO** : distinguer une faille **exploitable** (activable en l'état → chemin d'attaque réel) d'une **bonne pratique manquante** (défense en profondeur, sans exploitation directe). Cette qualification alimente la priorité.476. **Valider les non-conformités** : avant de finaliser, re-vérifier chaque KO contre le code et la configuration réels. Écarter les faux positifs, ou requalifier le statut/l'exploitabilité si le constat ne tient pas. Ne conserver que les constats étayés par une preuve concrète (fichier, ligne, réglage).487. **Produire le rapport structuré** selon le format défini dans [`references/rapport.md`](references/rapport.md)498. **Exporter le rapport** : écrire le rapport dans un fichier Markdown ET l'afficher dans la conversation (règles d'export dans [`references/rapport.md`](references/rapport.md)). Une sortie structurée JSON optionnelle est disponible au format `securite-developpement-AAAA-MM-JJ.json` (schéma : [`references/findings-schema.json`](references/findings-schema.json)).5051---5253## Les 14 domaines du socle5455| # | Domaine | # | Domaine |56|---|---------|---|---------|57| 1 | TLS / HTTPS | 8 | Sécurité navigateur et API |58| 2 | Cryptographie | 9 | Cloisonnement système |59| 3 | Gestion des secrets | 10 | Conteneurs et déploiement |60| 4 | Authentification, MFA et mots de passe | 11 | Chaîne de développement (CI/CD) |61| 5 | Validation des entrées et bases de données | 12 | Poste de développement |62| 6 | Dépendances et composants tiers | 13 | Sauvegarde et continuité |63| 7 | Journalisation | 14 | Gestion des incidents |6465## Sélection des modules conditionnels6667Les modules ne sont **ni chargés ni audités par défaut**. Détecter la stack du projet et ne retenir que les modules dont le déclencheur est effectivement présent :6869| Module | Charger si |70|--------|-----------|71| [`references/modules/langage-c.md`](references/modules/langage-c.md) | présence de fichiers `*.c` (ou configuration de build compilant effectivement du C) |72| [`references/modules/langage-rust.md`](references/modules/langage-rust.md) | présence de `Cargo.toml` / `Cargo.lock` |73| [`references/modules/cms.md`](references/modules/cms.md) | CMS détecté : `wp-config.php` (WordPress), Drupal, Joomla, ou hébergement CMS géré |7475Un module non chargé n'apparaît pas dans le rapport et ne compte pas dans le résultat global.7677---7879## Traçabilité des règles8081Chaque règle de la checklist porte entre crochets l'origine de son exigence :8283- `[TLS R3]`, `[MFA R29]`, `[CRYPTO R5]`… — recommandation numérotée d'un guide ANSSI, citée par son identifiant exact. Les suffixes `-` et `--` (ex. `[MFA R29-]`) désignent des alternatives dégradées, à n'utiliser que si la recommandation nominale est hors d'atteinte.84- `[ESS-DEVSECOPS]`, `[ESS-BDD]`, `[ESS-LIBRE]`, `[ESS-CMS]` — les « Essentiels » de l'ANSSI **ne numérotent pas** leurs recommandations : elles sont citées par guide, le libellé exact figurant dans [`references/sources.md`](references/sources.md).85- `[DINUM]` — bonne pratique de place retenue par la DINUM, **sans équivalent dans les guides ANSSI**. Ne jamais la présenter comme une exigence de l'ANSSI.8687---8889## Références9091| Fichier | Contenu |92|---------|---------|93| [`references/checklist.md`](references/checklist.md) | Les 14 domaines du socle (règles à vérifier, avec leur source) |94| [`references/valeurs-anssi.md`](references/valeurs-anssi.md) | Valeurs chiffrées à citer sans les réinventer (crypto, TLS, mots de passe, journaux) |95| [`references/sources.md`](references/sources.md) | Les 13 guides ANSSI : version, URL, date de consultation, domaines alimentés |96| [`references/modules/`](references/modules/) | Modules conditionnels : langage C, Rust, CMS |97| [`references/rapport.md`](references/rapport.md) | Format du rapport, grille de priorités, export, sortie JSON optionnelle |98| [`references/findings-schema.json`](references/findings-schema.json) | JSON Schema de la sortie structurée optionnelle (`securite-developpement-AAAA-MM-JJ.json`) |