From 5abfa9114576e4153b4cd5680e59c24324b7598b Mon Sep 17 00:00:00 2001 From: Marc Lasserre Date: Wed, 26 Aug 2026 12:50:42 +0200 Subject: [PATCH] docs(iso) ajout du socle de gouvernance ISO 27001 & runner devSecops --- .gitea/workflows/ci.yml | 25 +++++++++++++++++++++++ .gitea/workflows/test-ci.yml | 39 ------------------------------------ CHANGELOG.md | 19 ++++++++++++++++++ CONTRIBUTING.md | 22 ++++++++++++++++++++ Dockerfile | 16 +++++++++++++++ LICENSE | 7 +++++++ README.md | 29 +++++++++------------------ SECURITY.md | 25 +++++++++++++++++++++++ podman-compose.yml | 34 ------------------------------- 9 files changed, 124 insertions(+), 92 deletions(-) create mode 100644 .gitea/workflows/ci.yml delete mode 100644 .gitea/workflows/test-ci.yml create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 SECURITY.md delete mode 100644 podman-compose.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..495fb08 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,25 @@ +name: Build & Push DevSecOps Runner + +on: + push: + branches: [ main ] + +jobs: + build-and-push-runner: + name: Build & Publish Runner Image to Giteastry + runs-on: host + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Login to Giteastry + run: | + echo "${{ secrets.GITEA_TOKEN }}" | podman login container.rym.local -u ${{ gitea.actor }} --password-stdin + + - name: Build Runner Image + run: | + podman build -t container.rym.local/rym/devsecops-runner:latest . + + - name: Push to Giteastry + run: | + podman push container.rym.local/rym/devsecops-runner:latest diff --git a/.gitea/workflows/test-ci.yml b/.gitea/workflows/test-ci.yml deleted file mode 100644 index 1fe8b62..0000000 --- a/.gitea/workflows/test-ci.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: DevSecOps Pipeline - V1 Infrastructure - -on: [push] - -jobs: - health-check: - name: System & Environment Check - runs-on: host - steps: - - name: System Check - run: | - echo "Pipeline CI/CD opérationnel sur le VPS RYM !" - uname -a - podman --version - - gitleaks-scan: - name: Secret Detection (Gitleaks) - runs-on: host - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Run Gitleaks via Podman - run: | - echo "🔍 Lancement du scan Gitleaks..." - podman run --rm -v "$PWD":/path:z docker.io/zricethezav/gitleaks:v8.18.2 detect --source="/path" -v - - trivy-iac-scan: - name: IaC Security & Vulnerability Scan (Trivy) - runs-on: host - needs: gitleaks-scan - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Run Trivy IaC Scan - run: | - echo "🛡️ Analyse des fichiers d'infrastructure et des vulnérabilités..." - podman run --rm -v "$PWD":/path:z docker.io/aquasec/trivy:0.49.1 config /path diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b77918a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +Toutes les modifications notables apportées à ce projet seront documentées dans ce fichier. + +Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/), +et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/). + +## [Unreleased] + +### Ajouté +* Socle de gouvernance ISO 27001 (`CONTRIBUTING.md`, `SECURITY.md`, `LICENSE`). +* Image Runner CI/CD centralisée (`devsecops-runner`) sur Giteastry. + +### Modifié +* Nettoyage de la dette technique : Suppression de la configuration obsolète Passbolt / Compose. +* Redirection du dépôt `rym_infrastructure` vers l'outillage DevSecOps. + +## [1.0.0] - 2026-08-26 +* Initialisation du dépôt et structuration initiale de la forge. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..af3fbca --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# Guide de Contribution & Gouvernance — RYM + +Ce projet suit des normes strictes d'ingénierie DevSecOps et de conformité ISO 27001. + +## 🔀 Workflow de Branchement (Git Flow / ISO) + +1. **Interdiction de Push Direct** : Aucun commit direct sur `main` ou `staging` n'est autorisé. +2. **Nommage des Branches** : + * `feat/nom-fonctionnalite` : Nouvelle fonctionnalité. + * `fix/nom-du-bug` : Correction de bug. + * `sec/nom-correctif` : Correctif de sécurité. +3. **Cycle des PRs (Pull Requests)** : + * `feat/*` ➔ PR vers `dev` + * `dev` ➔ PR vers `staging` (Validations automatisées) + * `staging` ➔ PR vers `main` (Déploiement effectif) + +## 🛡️ Exigences de Validation (CI/CD) + +Avant toute fusion dans `main`, la PR doit obligatoirement : +* Réussir l'intégralité du pipeline `devsecops-ci.yml` (Lint, Scan Secret, Vulnerability Scan). +* Obtenir la validation d'au moins un membre habilité de l'équipe Infrastructure/Sécurité. +* Respecter la convention **Conventional Commits** (`feat:`, `fix:`, `docs:`, `ci:`). diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..35259d0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM docker.io/alpine:3.19 + +# Dépendances de base et sécurité +RUN apk add --no-cache \ + bash \ + curl \ + git \ + python3 \ + py3-pip \ + docker-cli + +# Outils DevSecOps pré-installés +RUN pip install --no-cache-dir yamllint && \ + curl -sSLo /usr/local/bin/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \ + curl -sSLo /usr/local/bin/helm "https://get.helm.sh/helm-v3.14.0-linux-amd64.tar.gz" && \ + chmod +x /usr/local/bin/kubectl diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8a7289c --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +PROPRIETARY AND CONFIDENTIAL — RYM INFRASTRUCTURE + +Copyright (c) 2026 RYM. Tous droits réservés. + +Ce code source et l'ensemble de ses composants associés sont la propriété exclusive de RYM. +Toute copie, modification, distribution ou utilisation non autorisée par écrit de ce logiciel +est strictement interdite. diff --git a/README.md b/README.md index d33b310..9f2745b 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,17 @@ -# Infrastructure Passbolt — RYM +# Tooling Infrastructure & DevSecOps Runner — RYM -Ce dépôt contient la définition Infrastructure as Code (IaC) pour le déploiement du gestionnaire de secrets **Passbolt CE** sur l'infrastructure RYM. +Ce dépôt contient la définition et le cycle de vie de l'image de build centralisée (**DevSecOps Runner**), stockée sur **Giteastry**. -## 🚀 Composants +Il sert de socle d'outillage hermétique pour l'ensemble des pipelines CI/CD de la forge RYM. -* **Passbolt CE** : Instance applicative principale (Web / API) -* **PostgreSQL 15** : Base de données relationnelle persistante +## 🚀 Composants hébergés -## 🛠️ Déploiement +* **Runner CI/CD Custom** : Image Alpine contenant l'outillage pré-installé (`kubectl`, `helm`, `yamllint`, `gitleaks`). +* **Giteastry Mirror** : Registre local hébergeant les binaires et conteneurs pour garantir une exécution 100 % isolée d'Internet. -### 1. Prérequis -S'assurer que `podman` et `podman-compose` sont installés sur le serveur hôte. +## 🛠️ Usage -### 2. Configuration -Copier le fichier d'exemple et configurer les secrets : -```bash -cp .env.example .env -# Éditer .env avec les identifiants réels de production +L'image est construite automatiquement à chaque fusion sur `main` et publiée sur : +`container.rym.local/rym/devsecops-runner:latest` -3. Lancement -Bash - -podman-compose up -d - -Maintenu par l'équipe Infrastructure RYM. +Maintenu par l'équipe Infrastructure & Sécurité RYM. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..568304c --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,25 @@ +# Politique de Sécurité — RYM + +## 🛡️ Engagement Zero Trust & Confidentialité + +L'infrastructure et les applications RYM sont conçues selon les principes Zero Trust et ISO 27001. Toute vulnérabilité identifiée doit être traitée de manière responsable. + +## 🚨 Signalement d'une Vulnérabilité + +Si vous découvrez une faille de sécurité ou une faiblesse de configuration : + +1. **Ne créez pas de Ticket (Issue) public.** +2. Envoyez un rapport détaillé à l'équipe Sécurité via : + * **Email sécurisé** : `security@rym.local` (ou canal chiffré interne). +3. Incluez dans votre rapport : + * La description du composant impacté. + * Les étapes permettant de reproduire le problème. + * L'impact potentiel identifié. + +## ⏱️ Délais d'intervention (SLA) + +* **Accusé de réception** : Sous 24 heures ouvrées. +* **Évaluation & Analyse d'impact** : Sous 48 heures. +* **Correction (Patch)** : + * *Critique / Élevé* : < 72 heures. + * *Moyen / Faible* : Prochaine itération de release. diff --git a/podman-compose.yml b/podman-compose.yml deleted file mode 100644 index 7d49238..0000000 --- a/podman-compose.yml +++ /dev/null @@ -1,34 +0,0 @@ -version: '3.7' - -services: - db: - image: docker.io/library/postgres:15-alpine - container_name: passbolt_db - environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - volumes: - - /opt/passbolt/db:/var/lib/postgresql/data:Z - restart: unless-stopped - - passbolt: - image: passbolt/passbolt:latest-ce - container_name: passbolt_app - environment: - APP_FULL_BASE_URL: ${PASSBOLT_URL} - DATASOURCES_DEFAULT_DRIVER: Cake\Database\Driver\Postgres - DATASOURCES_DEFAULT_HOST: passbolt_db - DATASOURCES_DEFAULT_PORT: "5432" - DATASOURCES_DEFAULT_USERNAME: ${POSTGRES_USER} - DATASOURCES_DEFAULT_PASSWORD: ${POSTGRES_PASSWORD} - DATASOURCES_DEFAULT_DATABASE: ${POSTGRES_DB} - DATASOURCES_DEFAULT_ENCODING: utf8 - volumes: - - /opt/passbolt/gpg:/etc/passbolt/gpg:Z - - /opt/passbolt/jwt:/etc/passbolt/jwt:Z - ports: - - "127.0.0.1:8080:80" - depends_on: - - db - restart: unless-stopped