From c4998ddf2333382f08f02dfedb9802fcd1ed668f Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Wed, 27 Aug 2025 14:04:17 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20latest=200.2.2=20+=20s=C3=A9c?= =?UTF-8?q?urit=C3=A9/CI/docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci.yml | 20 ++++++++++++++++++-- AGENTS.md | 7 +++++++ CHANGELOG.md | 4 ++++ VERSION | 1 + docs/SECURITY_AUDIT.md | 6 ++++++ scripts/security/audit.sh | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 VERSION create mode 100644 docs/SECURITY_AUDIT.md create mode 100644 scripts/security/audit.sh diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 0b68cc0..cb6934d 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -258,11 +258,28 @@ jobs: run: | echo "Documentation checks completed" + 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 @@ -333,4 +350,3 @@ jobs: run: | echo "❌ Some tests failed!" exit 1 - diff --git a/AGENTS.md b/AGENTS.md index 0ac2bb2..98ab954 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,3 +3,10 @@ - Compilation régulière: `cargo build`. - Lancement des tests: `cargo test`. - Mise à jour de la documentation dès qu'une fonctionnalité change (`docs/`). + +## Sécurité (vigilance) + +- Exécuter l’audit de sécurité automatisé: `scripts/security/audit.sh` (cargo audit, npm audit si présent, scan de secrets). +- Interdire l’introduction de secrets en clair; rotation des secrets gérés par la CI. +- Vérifier les permissions des fichiers sensibles et l’absence d’endpoints privés exposés. +- La pipeline CI inclut un job `security-audit` et bloque les releases en cas d’échec (intégré au `release-guard`). diff --git a/CHANGELOG.md b/CHANGELOG.md index f9f6381..89e7515 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,3 +16,7 @@ - Refactor vers `src/lib.rs` et service `StorageService` - Ajout `docs/` (README) et `tests/` (test intégration service) - API HTTP Tide conservée; nettoyage TTL périodique 60s + +## [0.2.2] - 2025-08-27 +### Changed +- Release latest (sécurité/CI/docs). diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..f0cfd3b --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v0.2.2 diff --git a/docs/SECURITY_AUDIT.md b/docs/SECURITY_AUDIT.md new file mode 100644 index 0000000..245aa43 --- /dev/null +++ b/docs/SECURITY_AUDIT.md @@ -0,0 +1,6 @@ +# Audit de Sécurité - sdk_storage + +- CI: job `security-audit` exécutant `scripts/security/audit.sh`. +- Portée: cargo audit, npm audit si présent, scan de secrets. +- Release bloquée si findings bloquants (élevé/critique) ou secrets détectés. +- Couplage au `release-guard`. 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