diff --git a/.cursor/rules/05-template-governance.mdc b/.cursor/rules/05-template-governance.mdc new file mode 100644 index 0000000..72a0a64 --- /dev/null +++ b/.cursor/rules/05-template-governance.mdc @@ -0,0 +1,17 @@ +--- +alwaysApply: true +--- + +# Gouvernance du template 4NK + +[portée] +Assurer que chaque projet adapte intelligemment le template et que les améliorations génériques reviennent dans `4NK_template`. + +[directives] +- Conserver `security-audit` et `release-guard` dans tous projets. +- Adapter la CI, les docs et `AGENTS.md` au contexte local. +- En cas d'amélioration générique : ouvrir une issue "Template Feedback", prototyper, valider CI, mettre à jour `CHANGELOG.md`/`TEMPLATE_VERSION`. + +[validation] +- Refuser un push/tag si l'adaptation a retiré les vérifications minimales (sécurité, tests, build, version/changelog/tag). +- Exiger une documentation claire dans `docs/TEMPLATE_ADAPTATION.md` et `docs/TEMPLATE_FEEDBACK.md`. \ No newline at end of file diff --git a/.cursor/rules/85-release-guard.mdc b/.cursor/rules/85-release-guard.mdc index 827ef9a..0390d53 100644 --- a/.cursor/rules/85-release-guard.mdc +++ b/.cursor/rules/85-release-guard.mdc @@ -2,10 +2,10 @@ alwaysApply: true --- -# Garde de release: tests, documentation, compilation, version, changelog, tag +# Garde de release: tests, documentation, compilation, sécurité, version, changelog, tag [portée] -Contrôler systématiquement avant push/tag: tests verts, docs mises à jour, build OK, alignement numéro de version ↔ changelog ↔ tag git, mise à jour de déploiement, confirmation utilisateur (latest vs wip). +Contrôler systématiquement avant push/tag: tests verts, docs mises à jour, build OK, audit de sécurité OK, alignement numéro de version ↔ changelog ↔ tag git, mise à jour de déploiement, confirmation utilisateur (latest vs wip). [objectifs] @@ -15,7 +15,7 @@ Contrôler systématiquement avant push/tag: tests verts, docs mises à jour, bu [directives] -- Avant push/tag, exécuter: tests, compilation, lints (si configurés). +- Avant push/tag, exécuter: tests, compilation, lints (si configurés), audit de sécurité (npm audit/cargo audit + scan secrets). - Mettre à jour la documentation et le changelog en conséquence. - Aligner le fichier de version (VERSION ou TEMPLATE_VERSION), l’entrée CHANGELOG et le tag. - Demander confirmation utilisateur: `latest` (release stable) ou `wip` (travail en cours). @@ -27,6 +27,7 @@ Contrôler systématiquement avant push/tag: tests verts, docs mises à jour, bu - Refuser push/tag si: - tests/compilation échouent, + - audit de sécurité échoue (vulnérabilités bloquantes ou secrets détectés), - CHANGELOG non mis à jour, - VERSION/TEMPLATE_VERSION absent ou incohérent, - release type non fourni (ni latest, ni wip). @@ -34,4 +35,3 @@ Contrôler systématiquement avant push/tag: tests verts, docs mises à jour, bu [artefacts concernés] - CHANGELOG.md, VERSION ou TEMPLATE_VERSION, docs/**, .gitea/workflows/**, scripts/**. - diff --git a/.cursor/rules/ruleset-index.md b/.cursor/rules/ruleset-index.md index e70ef69..ac1d0d9 100644 --- a/.cursor/rules/ruleset-index.md +++ b/.cursor/rules/ruleset-index.md @@ -9,7 +9,8 @@ - 60-office-docs.mdc : lecture .docx via docx2txt + repli. - 70-frontend-architecture.mdc : React.lazy/Suspense, état global, couche de services. - 80-versioning-and-release.mdc : CHANGELOG, semver, confirmation push/tag. -- 85-release-guard.mdc : garde de release (tests/doc/build/version/changelog/tag; latest vs wip). +- 85-release-guard.mdc : garde de release (tests/doc/build/sécurité/version/changelog/tag; latest vs wip). +- 05-template-governance.mdc : adaptation locale et feedback vers `4NK_template`. - 90-gitea-and-oss.mdc : fichiers open source, .gitea, CI, Gitea remote. - 95-triage-and-problem-solving.mdc : boucle de diagnostic, REX, non-régression. diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 5dd8de7..560b4d4 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -268,11 +268,28 @@ jobs: exit 1 fi + security-audit: + name: Security Audit + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Ensure scripts executable + run: | + chmod +x scripts/security/audit.sh || true + - name: Run template security audit + run: | + if [ -f scripts/security/audit.sh ]; then + ./scripts/security/audit.sh + else + echo "No security audit script (ok)" + fi + # Job de release guard (cohérence release) release-guard: name: Release Guard runs-on: ubuntu-latest - needs: [code-quality, unit-tests, documentation-tests] + needs: [code-quality, unit-tests, documentation-tests, security-audit] steps: - name: Checkout code uses: actions/checkout@v3 diff --git a/.gitea_template/ISSUE_TEMPLATE/template_feedback.md b/.gitea_template/ISSUE_TEMPLATE/template_feedback.md new file mode 100644 index 0000000..48ca1e7 Binary files /dev/null and b/.gitea_template/ISSUE_TEMPLATE/template_feedback.md differ diff --git a/AGENTS.md b/AGENTS.md index 3350766..e38709e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -206,6 +206,42 @@ Les règles opérationnelles détaillées sont précisées dans `.cursor/rules/` --- +### Agent Sécurité (Responsable) +**Missions** +- Assurer une vigilance continue sécurité sur le code, la config et la CI. +- Orchestrer l’audit de sécurité automatisé: `scripts/security/audit.sh` (cargo audit, npm audit, scan secrets). +- Interdire l’introduction de secrets en clair et exiger la rotation des secrets CI. +- Valider les permissions sensibles (clés, cookies, conf) et la non-exposition d’endpoints privés. +- Bloquer toute release si l’audit de sécurité échoue (intégré au `release-guard`). + +**Artefacts** +- `scripts/security/audit.sh`, `.gitea/workflows/ci.yml` (job `security-audit`), `docs/SECURITY_AUDIT.md`, `docs/CONFIGURATION.md`. + +--- + +### Agent Gouvernance du Template (Accountable) +**Missions** +- Garantir la cohérence d’ensemble du template (règles Cursor, CI, scripts, docs). +- Examiner les issues « Template Feedback », arbitrer et prioriser. +- Orchestrer la montée de version du template (`TEMPLATE_VERSION`) et le `CHANGELOG.md`. +- Communiquer les changements aux projets consommateurs. + +**Artefacts** +- `.cursor/rules/**`, `.gitea_template/**`, `docs/TEMPLATE_*`, `TEMPLATE_VERSION`, `CHANGELOG.md`. + +--- + +### Agent Adaptation Projet (Responsable) +**Missions** +- Accompagner l’adaptation locale du template (CI, docs, `AGENTS.md`). +- S’assurer que `security-audit` et `release-guard` ne sont pas retirés. +- Remonter en feedback toute amélioration générique. + +**Artefacts** +- `.gitea/workflows/ci.yml`, `docs/INDEX.md`, `docs/SECURITY_AUDIT.md`, `AGENTS.md`, `LOCAL_OVERRIDES.yml` (si utilisé). + +--- + ## Agents de synchronisation et dérogations ### Agent Synchronisation de template (Accountable) diff --git a/README.md b/README.md index e5ce5c7..1bf03ea 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# 🚀 title +# 4NK Project Template — Qualité, Sécurité et Open Source -desc +Ce dépôt est le template de référence 4NK. Il formalise la démarche de qualité, de sécurité et d’open source applicable à tous les projets 4NK et fournit des supports initiaux (modèles CI/CD, règles Cursor, scripts, guides). Chaque projet doit l’adapter à ses spécificités, et proposer des améliorations en retour (feedback) vers ce template. ## 📋 Table des Matières @@ -25,6 +25,9 @@ desc ### 📖 Guides Principaux +- docs/TEMPLATE_ADAPTATION.md — Comment adapter ce template à votre projet +- docs/TEMPLATE_FEEDBACK.md — Comment proposer des améliorations au template + ### 🔧 Guides Techniques @@ -107,6 +110,8 @@ desc 4. Push la branche (`git push origin feature/nouvelle-fonctionnalite`) 5. Créer une Pull Request +Pour les améliorations du template lui‑même (règles, CI, scripts), se référer à `docs/TEMPLATE_FEEDBACK.md` et utiliser le type d’issue « Template Feedback ». + ## 📄 Licence Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails. diff --git a/docs/INDEX.md b/docs/INDEX.md index 2453e50..8c2a4ca 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -11,6 +11,11 @@ Index complet de la documentation de l'infrastructure . ### ⚙️ [Guide de Configuration](CONFIGURATION.md) +### 🧭 [Adaptation du Template](TEMPLATE_ADAPTATION.md) +Comment adapter `4NK_template` à votre projet. + +### 🔁 [Feedback vers le Template](TEMPLATE_FEEDBACK.md) +Processus pour remonter des améliorations génériques vers `4NK_template`. ## 🔧 Guides Techniques diff --git a/docs/SECURITY_AUDIT.md b/docs/SECURITY_AUDIT.md index 2478b20..13a88ac 100644 --- a/docs/SECURITY_AUDIT.md +++ b/docs/SECURITY_AUDIT.md @@ -5,7 +5,7 @@ **Date d'audit** : 19 décembre 2024 **Auditeur** : Assistant IA **Version du projet** : 1.0.0 -**Score de sécurité** : 85/100 ✅ +**Score de sécurité** : à évaluer ## 📋 Éléments Audités @@ -108,7 +108,7 @@ HOME=/home/bitcoin ## 🛡️ Recommandations de Sécurité -### **Actions Immédiates** +### **Actions Immédiates (modèle)** #### 1. **Permissions des Fichiers** ```bash @@ -130,7 +130,7 @@ export BLINDBIT_API_KEY="your_api_key" ./tests/run_security_tests.sh ``` -### **Actions Recommandées** +### **Actions Recommandées (modèle)** #### 1. **Chiffrement des Données** - Chiffrer les cookies Bitcoin Core @@ -160,22 +160,22 @@ export BLINDBIT_API_KEY="your_api_key" | **Dépendances** | 80/100 | ✅ Dépendances sécurisées | | **Documentation** | 85/100 | ✅ Bonnes pratiques documentées | -### **Score Global : 85/100** ✅ +### **Score Global :** à établir ## 🚨 Plan d'Action -### **Phase 1 : Immédiat (1-2 jours)** +### **Phase 1 : Immédiat (1-2 jours) — modèle** - [x] Audit de sécurité complet - [x] Vérification des permissions - [x] Nettoyage des fichiers GitHub - [ ] Tests de sécurité automatisés -### **Phase 2 : Court terme (1 semaine)** +### **Phase 2 : Court terme (1 semaine) — modèle** - [ ] Implémentation du chiffrement des cookies - [ ] Ajout de certificats SSL/TLS - [ ] Monitoring de sécurité -### **Phase 3 : Moyen terme (1 mois)** +### **Phase 3 : Moyen terme (1 mois) — modèle** - [ ] Authentification renforcée - [ ] Audit de sécurité automatisé - [ ] Formation sécurité équipe diff --git a/docs/TEMPLATE_ADAPTATION.md b/docs/TEMPLATE_ADAPTATION.md new file mode 100644 index 0000000..c8e0b54 --- /dev/null +++ b/docs/TEMPLATE_ADAPTATION.md @@ -0,0 +1,34 @@ +# Guide d’adaptation du template 4NK + +Ce document décrit comment adapter `4NK_template` à un projet concret. + +## 1. Périmètre et langage +- Choisir les jobs CI pertinents (Rust/Node/Docker) et supprimer ceux non applicables. +- Conserver le job `security-audit` et le `release-guard`. + +## 2. Sécurité +- Activer `scripts/security/audit.sh` (npm audit/cargo audit + scan secrets) et ajuster les seuils si nécessaire. +- Vérifier les permissions de fichiers sensibles et l’absence de secrets en clair. + +## 3. Versionnage & release +- Définir le fichier de version (`VERSION` ou `TEMPLATE_VERSION`). +- Tenir `CHANGELOG.md` comme source de vérité et intégrer au `release-guard`. + +## 4. Documentation +- Adapter `docs/INDEX.md`, `INSTALLATION.md`, `USAGE.md`, `ARCHITECTURE.md` au contexte projet. +- Maintenir `docs/SECURITY_AUDIT.md` conforme à la réalité du dépôt. + +## 5. Règles Cursor +- Conserver `.cursor/rules/*` puis affiner selon le langage et la structure du projet. + +## 6. CI/CD (Gitea) +- Adapter `.gitea/workflows/ci.yml` (jobs, versions, caches) sans retirer `security-audit` ni `release-guard`. +- Ajouter des jobs spécifiques (e2e, perf) si nécessaire. + +## 7. Gouvernance et open source +- Vérifier `LICENSE`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `OPEN_SOURCE_CHECKLIST.md`. +- Utiliser `AGENTS.md` pour clarifier les responsabilités. + +## 8. Synchronisation avec le template +- Documenter toute divergence locale dans `LOCAL_OVERRIDES.yml` si utilisé. +- Proposer les améliorations génériques en feedback (voir `docs/TEMPLATE_FEEDBACK.md`). diff --git a/docs/TEMPLATE_FEEDBACK.md b/docs/TEMPLATE_FEEDBACK.md new file mode 100644 index 0000000..f222ca1 --- /dev/null +++ b/docs/TEMPLATE_FEEDBACK.md @@ -0,0 +1,22 @@ +# Processus de feedback vers le template 4NK + +L’objectif est de canaliser les améliorations génériques découvertes dans les projets vers `4NK_template`. + +## 1. Identifier une amélioration générique +- Règle Cursor utile à plusieurs dépôts +- Étape CI/CD généralisable +- Script ou guide documentaire réutilisable + +## 2. Ouvrir une issue dédiée (Template Feedback) +- Décrire le contexte, l’impact multi‑projets et la proposition +- Joindre des diffs minimaux et des liens vers projets sources + +## 3. Prototyper et valider +- Créer une branche sur `4NK_template` +- Ajouter les nouveaux artefacts (règles/scripts/docs) +- Valider via la CI (incluant `security-audit` et `release-guard`) + +## 4. Finaliser et communiquer +- Mettre à jour `CHANGELOG.md` et `TEMPLATE_VERSION` +- Ajouter une note dans `docs/INDEX.md` +- Annoncer aux projets consommateurs (via issue/PR) diff --git a/scripts/security/audit.sh b/scripts/security/audit.sh new file mode 100644 index 0000000..06632ef --- /dev/null +++ b/scripts/security/audit.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "[security-audit] démarrage" +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd)" +cd "$ROOT_DIR" + +rc=0 + +# 1) Audit Rust (si Cargo.toml présent et cargo disponible) +if command -v cargo >/dev/null 2>&1 && [ -f Cargo.toml ] || find . -maxdepth 2 -name Cargo.toml | grep -q . ; then + echo "[security-audit] cargo audit" + if ! cargo audit --deny warnings; then rc=1; fi || true +else + echo "[security-audit] pas de projet Rust (ok)" +fi + +# 2) Audit npm (si package.json présent) +if [ -f package.json ]; then + echo "[security-audit] npm audit --audit-level=moderate" + if ! npm audit --audit-level=moderate; then rc=1; fi || true +else + echo "[security-audit] pas de package.json (ok)" +fi + +# 3) Recherche de secrets grossiers +echo "[security-audit] scan secrets" +if grep -RIE "(?i)(api[_-]?key|secret|password|private[_-]?key)" --exclude-dir .git --exclude-dir node_modules --exclude-dir target --exclude "*.md" . >/dev/null 2>&1; then + echo "[security-audit] secrets potentiels détectés"; rc=1 +else + echo "[security-audit] aucun secret évident" +fi + +echo "[security-audit] terminé rc=$rc" +exit $rc