Compare commits

..

20 Commits

Author SHA1 Message Date
Marc Lasserre 2f42287b09 Merge pull request 'fix(ci): update files' (#11) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 7s Details
Reviewed-on: #11
2026-08-27 06:29:32 +00:00
Marc Lasserre 0c354d4437
fix(ci): update files 2026-08-27 08:28:41 +02:00
Marc Lasserre e8cab566eb Merge pull request 'fix(ci): update process' (#10) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 8s Details
Reviewed-on: #10
2026-08-26 19:15:15 +00:00
Marc Lasserre 800dc6b783
fix(ci): update process 2026-08-26 21:14:45 +02:00
Marc Lasserre 5f2f76bb10 Merge pull request 'fix(ci): TCP 2375 > TLS port 2376 disabled innside pod' (#9) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 8s Details
Reviewed-on: #9
2026-08-26 19:11:17 +00:00
Marc Lasserre 612048bc41
fix(ci): TCP 2375 > TLS port 2376 disabled innside pod 2026-08-26 21:10:42 +02:00
Marc Lasserre e74f92c265 Merge pull request 'fix(ci): TCP 2375 inside pod' (#8) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 9s Details
Reviewed-on: #8
2026-08-26 19:08:39 +00:00
Marc Lasserre f6078c3f10
fix(ci): TCP 2375 inside pod 2026-08-26 21:07:48 +02:00
Marc Lasserre decc0ab5f8 Merge pull request 'fix(ci): DOCKER_HOST TCP > +' (#7) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 8s Details
Reviewed-on: #7
2026-08-26 19:05:07 +00:00
Marc Lasserre f10de44f29
fix(ci): DOCKER_HOST TCP > + 2026-08-26 21:04:24 +02:00
Marc Lasserre e27ee99cb5 Merge pull request 'fix(ci) point container registry | gorym.net' (#6) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 8s Details
Reviewed-on: #6
2026-08-26 19:01:51 +00:00
Marc Lasserre 202b69feed
fix(ci) point container registry | gorym.net 2026-08-26 21:00:07 +02:00
Marc Lasserre e3463dc1fe Merge pull request 'fix(ci): pass add-host 2 docker build for TLS validatiion' (#5) from dev/m7s into main
Build & Publish DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 47s Details
Reviewed-on: #5
2026-08-26 17:45:56 +00:00
Marc Lasserre ae18eba3d4
fix(ci): pass add-host 2 docker build for TLS validatiion 2026-08-26 19:43:48 +02:00
Marc Lasserre 6edb515c6c Merge pull request 'fix(cicd): add k3s arguents 4 runner' (#4) from dev/m7s into main
Build & Push DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 46s Details
Reviewed-on: #4
2026-08-26 17:31:18 +00:00
Marc Lasserre 619e4d27c5
fix(cicd): add k3s arguents 4 runner 2026-08-26 19:30:15 +02:00
Marc Lasserre 40d44760df Merge pull request 'ci(giteastry): passage au build hermétique dind et image giteastry' (#3) from dev/m7s into main
Build & Push DevSecOps Runner / Build & Publish Runner Image to Giteastry (push) Failing after 46s Details
Reviewed-on: #3
2026-08-26 11:21:02 +00:00
Marc Lasserre f3277b5407
ci(giteastry): passage au build hermétique dind et image giteastry 2026-08-26 13:19:12 +02:00
Marc Lasserre b5bd3edf76 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
Reviewed-on: #2
2026-08-26 10:57:22 +00:00
Marc Lasserre 5abfa91145
docs(iso) ajout du socle de gouvernance ISO 27001 & runner devSecops 2026-08-26 12:50:42 +02:00
10 changed files with 127 additions and 122 deletions

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

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

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

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

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

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