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