docs(iso) ajout du socle de gouvernance ISO 27001 & runner devSecops #2

Merged
M7s merged 1 commits from dev/m7s into main 2026-08-26 10:57:23 +00:00
9 changed files with 124 additions and 92 deletions

25
.gitea/workflows/ci.yml Normal file
View File

@ -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

View File

@ -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

19
CHANGELOG.md Normal file
View File

@ -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.

22
CONTRIBUTING.md Normal file
View File

@ -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:`).

16
Dockerfile Normal file
View File

@ -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

7
LICENSE Normal file
View File

@ -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.

View File

@ -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) ## 🚀 Composants hébergés
* **PostgreSQL 15** : Base de données relationnelle persistante
## 🛠️ 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 ## 🛠️ Usage
S'assurer que `podman` et `podman-compose` sont installés sur le serveur hôte.
### 2. Configuration L'image est construite automatiquement à chaque fusion sur `main` et publiée sur :
Copier le fichier d'exemple et configurer les secrets : `container.rym.local/rym/devsecops-runner:latest`
```bash
cp .env.example .env
# Éditer .env avec les identifiants réels de production
3. Lancement Maintenu par l'équipe Infrastructure & Sécurité RYM.
Bash
podman-compose up -d
Maintenu par l'équipe Infrastructure RYM.

25
SECURITY.md Normal file
View File

@ -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.

View File

@ -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