Compare commits

..

5 Commits

Author SHA1 Message Date
Marc Lasserre d6459a157f
chore(infra): ajout du fichier .gitignore infrastructure
DevSecOps Pipeline - V1 Infrastructure / Code & Config Linting (Yamllint & Hadolint) (push) Has been cancelled Details
DevSecOps Pipeline - V1 Infrastructure / Code & Config Linting (Yamllint & Hadolint) (pull_request) Has been cancelled Details
DevSecOps Pipeline - V1 Infrastructure / Secret Detection (Gitleaks) (push) Has been cancelled Details
DevSecOps Pipeline - V1 Infrastructure / IaC Security & Vulnerability Scan (Trivy) (push) Has been cancelled Details
DevSecOps Pipeline - V1 Infrastructure / Secret Detection (Gitleaks) (pull_request) Has been cancelled Details
DevSecOps Pipeline - V1 Infrastructure / IaC Security & Vulnerability Scan (Trivy) (pull_request) Has been cancelled Details
2026-08-08 21:58:25 +02:00
Marc Lasserre e561523600
fix(ci): add docker.io registry prefix for yamllint image
DevSecOps Pipeline - V1 Infrastructure / Code & Config Linting (Yamllint & Hadolint) (push) Successful in 8s Details
DevSecOps Pipeline - V1 Infrastructure / Secret Detection (Gitleaks) (push) Successful in 3s Details
DevSecOps Pipeline - V1 Infrastructure / IaC Security & Vulnerability Scan (Trivy) (push) Successful in 6s Details
Explicitly set docker.io domain prefix for yamllint container image to prevent Podman short-name resolution failure.
2026-08-07 01:42:00 +02:00
Marc Lasserre af70194f71
fix(ci): add docker.io registry prefix for yamllint image
Explicitly set docker.io domain prefix for yamllint container image to prevent Podman short-name resolution failure.
2026-08-07 01:38:57 +02:00
Marc Lasserre caf1a19432
sec(ci): add Yamllint and Hadolint stages to pipeline
DevSecOps Pipeline - V1 Infrastructure / Code & Config Linting (Yamllint & Hadolint) (push) Failing after 3s Details
DevSecOps Pipeline - V1 Infrastructure / Secret Detection (Gitleaks) (push) Has been skipped Details
DevSecOps Pipeline - V1 Infrastructure / IaC Security & Vulnerability Scan (Trivy) (push) Has been skipped Details
Integrate linting for YAML and Dockerfiles alongside Gitleaks and Trivy to enforce full DevSecOps compliance.
2026-08-07 01:36:44 +02:00
Marc Lasserre 8f692bce96
feat(infra): test branch protection and CI checks
DevSecOps Pipeline - V1 Infrastructure / System & Environment Check (push) Successful in 1s Details
DevSecOps Pipeline - V1 Infrastructure / Secret Detection (Gitleaks) (push) Successful in 4s Details
DevSecOps Pipeline - V1 Infrastructure / IaC Security & Vulnerability Scan (Trivy) (push) Successful in 5s Details
2026-08-07 01:26:39 +02:00
10 changed files with 122 additions and 127 deletions

View File

@ -1,28 +0,0 @@
name: Build & Publish DevSecOps Runner
on:
push:
branches: [ main ]
env:
DOCKER_HOST: tcp://localhost:2375
jobs:
build-and-push-runner:
name: Build & Publish Runner Image to Giteastry
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Authentification Giteastry
run: |
echo "${{ secrets.GITEA_TOKEN }}" | docker login git.gorym.net -u ${{ gitea.actor }} --password-stdin
- name: Build Image Runner
run: |
docker build -t git.gorym.net/rym/devsecops-runner:latest .
- name: Push vers Giteastry
run: |
docker push git.gorym.net/rym/devsecops-runner:latest

View File

@ -0,0 +1,51 @@
name: DevSecOps Pipeline - V1 Infrastructure
on: [push, pull_request]
jobs:
lint-and-format:
name: Code & Config Linting (Yamllint & Hadolint)
runs-on: host
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Run Yamllint
run: |
echo "🧹 Verification de la syntaxe YAML..."
podman run --rm -v "$PWD":/data:z docker.io/cytopia/yamllint -d "{extends: relaxed, rules: {line-length: disable}}" .
- name: Run Hadolint (Dockerfiles)
run: |
echo "🐳 Analyse des Dockerfiles..."
if [ -n "$(find . -maxdepth 3 -name 'Dockerfile*')" ]; then
podman run --rm -i docker.io/hadolint/hadolint < Dockerfile
else
echo "Aucun Dockerfile détecté, étape ignorée."
fi
gitleaks-scan:
name: Secret Detection (Gitleaks)
runs-on: host
needs: lint-and-format
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 configurations d'infrastructure..."
podman run --rm -v "$PWD":/path:z docker.io/aquasec/trivy:0.49.1 config /path

18
.gitignore vendored
View File

@ -1 +1,19 @@
# Fichiers d'environnement et secrets d'infrastructures
.env
.env.local
*.env
# Volumes de données locaux & Runtime Podman
data/
volumes/
*.log
# Clés et certificats SSL/TLS
*.pem
*.crt
*.key
# OS & IDE
.DS_Store
.vscode/
.idea/

View File

@ -1,19 +0,0 @@
# 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.

View File

@ -1,22 +0,0 @@
# 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:`).

View File

@ -1,16 +0,0 @@
# SOURCE INTERNE STRICTE (Giteastry)
FROM container.rym.local/mirror/alpine:3.19
# Outillage pré-installé dans le runner central
RUN apk add --no-cache \
bash \
curl \
git \
python3 \
py3-pip \
docker-cli
RUN pip install --no-cache-dir yamllint && \
curl -sSLo /usr/local/bin/kubectl "https://dl.k8s.io/release/v1.36.3/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

View File

@ -1,7 +0,0 @@
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,17 +1,26 @@
# Tooling Infrastructure & DevSecOps Runner — RYM
# Infrastructure Passbolt — 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**.
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.
Il sert de socle d'outillage hermétique pour l'ensemble des pipelines CI/CD de la forge RYM.
## 🚀 Composants
## 🚀 Composants hébergés
* **Passbolt CE** : Instance applicative principale (Web / API)
* **PostgreSQL 15** : Base de données relationnelle persistante
* **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.
## 🛠️ Déploiement
## 🛠️ Usage
### 1. Prérequis
S'assurer que `podman` et `podman-compose` sont installés sur le serveur hôte.
L'image est construite automatiquement à chaque fusion sur `main` et publiée sur :
`container.rym.local/rym/devsecops-runner:latest`
### 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
Maintenu par l'équipe Infrastructure & Sécurité RYM.
3. Lancement
Bash
podman-compose up -d
Maintenu par l'équipe Infrastructure RYM.

View File

@ -1,25 +0,0 @@
# 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.

34
podman-compose.yml Normal file
View File

@ -0,0 +1,34 @@
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