Merge pull request 'docs(iso) ajout du socle de gouvernance ISO 27001 & runner devSecops' (#2) from dev/m7s into main
Build & Push DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Waiting to run
Details
Build & Push DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Waiting to run
Details
Reviewed-on: #2
This commit is contained in:
commit
b5bd3edf76
|
|
@ -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
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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.
|
||||||
|
|
@ -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:`).
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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.
|
||||||
29
README.md
29
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)
|
## 🚀 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.
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
@ -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
|
|
||||||
Loading…
Reference in New Issue