PR Sécurité 5 (CI/CD) #5

Open
opened 2025-07-18 09:56:57 +00:00 by nicolas.cantu · 0 comments

PR : Renforcement de la conformité sécurité par l’automatisation des contrôles qualité, dépendances, sécurité et pipelines dans la CI/CD

Objectif

Mettre en place, dans tous les projets du dossier 4NK, une automatisation complète des contrôles de sécurité et de conformité dans la CI/CD, couvrant :

  • Les tests qualité (lint, format, typage)
  • L’audit des dépendances et l’application des correctifs de sécurité
  • Les tests de pénétration automatisés
  • La vérification de l’absence de logs sensibles dans le code
  • La signature des artefacts de build
  • La vérification de la sécurité et de la conformité des pipelines eux-mêmes

1. Tests qualité dans la CI/CD

A. Lint, format, typage

  • Ajout d’un job de lint/format/typage dans la CI/CD :
# .github/workflows/ci.yml ou .gitlab-ci.yml
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install deps
        run: npm ci
      - name: Lint
        run: npm run lint
      - name: Format check
        run: npm run format:check
      - name: Type check
        run: npm run typecheck
  • Scripts à ajouter dans package.json :
"scripts": {
  "lint": "eslint . --ext .ts,.tsx,.js",
  "format:check": "prettier --check .",
  "typecheck": "tsc --noEmit"
}

2. Test dépendances & correctifs sécurité dans la CI/CD

A. Audit automatique des dépendances

  • Ajout d’un job d’audit dans la CI/CD :
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install deps
        run: npm ci
      - name: Audit JS (npm)
        run: npm audit --audit-level=high
      - name: Audit Rust (cargo)
        run: cargo audit || true
      - name: Audit Docker (trivy)
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'docker.io/library/node:20'
  • Blocage du pipeline si des vulnérabilités critiques sont détectées.

  • Exemple de correctif automatique (GitHub Dependabot ou Renovate) :

    • Activation de Dependabot dans .github/dependabot.yml pour les dépendances JS et Rust.

3. Tests de pénétration automatisés dans la CI/CD

A. Intégration de tests DAST/SAST

  • Ajout d’un job de test de pénétration automatisé :
  dast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Start app (en background)
        run: npm run start & # ou docker-compose up -d
      - name: Run OWASP ZAP baseline scan
        uses: zaproxy/action-baseline@v0.10.0
        with:
          target: 'http://localhost:3000'
  • Exemple de SAST (CodeQL, SonarCloud, Snyk) :
    • Ajout d’un job CodeQL ou SonarCloud pour l’analyse statique du code.

4. Vérifier la suppression des logs dans le code dans la CI/CD

A. Recherche automatique de logs dans le code

  • Ajout d’un job de scan de logs :
  check-logs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Scan for console.log/debug
        run: |
          if grep -r --include=*.ts --include=*.js 'console\\.log' src/; then
            echo "console.log found! Please remove debug logs before merge."
            exit 1
          fi
          if grep -r --include=*.ts --include=*.js 'console\\.debug' src/; then
            echo "console.debug found! Please remove debug logs before merge."
            exit 1
          fi
  • Blocage du pipeline si des logs de debug sont présents.

5. Vérifier la signature des artefacts dans la CI/CD

A. Signature automatique des builds

  • Ajout d’un job de signature :
  sign-artifacts:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v4
      - name: Build app
        run: npm run build
      - name: Sign build artifact
        run: |
          gpg --batch --yes --passphrase "$GPG_PASSPHRASE" --output dist/signature.sig --detach-sign dist/index.js
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: build-artifact
          path: dist/
  • Vérification de la signature lors du déploiement ou de la release.

6. Vérification des pipelines CI/CD et du code

A. Audit du pipeline lui-même

  • Utilisation d’outils comme Checkov ou GitHub Actions Linter pour auditer les fichiers de pipeline.
  • Vérification de l’absence de secrets en clair, de jobs non protégés, de permissions trop larges.
  check-pipeline:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lint GitHub Actions workflows
        uses: crazy-max/ghaction-github-workflow-lint@v1
      - name: Checkov scan
        uses: bridgecrewio/checkov-action@v12
        with:
          directory: .

7. Exemples précis de résultats attendus

  • Pipeline échoue si :

    • Un test unitaire ou d’intégration échoue
    • Une vulnérabilité critique est détectée dans les dépendances
    • Un log de debug est présent dans le code
    • Un artefact n’est pas signé
    • Un job du pipeline a des permissions trop larges ou des secrets exposés
  • Pipeline passe si :

    • Tous les tests sont verts
    • Les dépendances sont à jour et sans faille critique
    • Aucun log de debug n’est présent
    • Les artefacts sont signés et vérifiés
    • Le pipeline est conforme aux bonnes pratiques CI/CD

8. Plan d’action

  1. Ajouter/adapter les jobs de contrôle dans la CI/CD de chaque repo du dossier 4NK.
  2. S’assurer que tous les contrôles sont exécutés à chaque push/merge/release.
  3. Bloquer le merge en cas d’échec d’un contrôle.
  4. Documenter la politique de sécurité CI/CD dans le README et la spec technique.
# PR : Renforcement de la conformité sécurité par l’automatisation des contrôles qualité, dépendances, sécurité et pipelines dans la CI/CD ## Objectif Mettre en place, dans tous les projets du dossier `4NK`, une automatisation complète des contrôles de sécurité et de conformité dans la CI/CD, couvrant : - Les tests qualité (lint, format, typage) - L’audit des dépendances et l’application des correctifs de sécurité - Les tests de pénétration automatisés - La vérification de l’absence de logs sensibles dans le code - La signature des artefacts de build - La vérification de la sécurité et de la conformité des pipelines eux-mêmes --- ## 1. **Tests qualité dans la CI/CD** ### **A. Lint, format, typage** - **Ajout d’un job de lint/format/typage dans la CI/CD** : ```yaml # .github/workflows/ci.yml ou .gitlab-ci.yml jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install deps run: npm ci - name: Lint run: npm run lint - name: Format check run: npm run format:check - name: Type check run: npm run typecheck ``` - **Scripts à ajouter dans package.json** : ```json "scripts": { "lint": "eslint . --ext .ts,.tsx,.js", "format:check": "prettier --check .", "typecheck": "tsc --noEmit" } ``` --- ## 2. **Test dépendances & correctifs sécurité dans la CI/CD** ### **A. Audit automatique des dépendances** - **Ajout d’un job d’audit dans la CI/CD** : ```yaml audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install deps run: npm ci - name: Audit JS (npm) run: npm audit --audit-level=high - name: Audit Rust (cargo) run: cargo audit || true - name: Audit Docker (trivy) uses: aquasecurity/trivy-action@master with: image-ref: 'docker.io/library/node:20' ``` - **Blocage du pipeline** si des vulnérabilités critiques sont détectées. - **Exemple de correctif automatique** (GitHub Dependabot ou Renovate) : - Activation de Dependabot dans `.github/dependabot.yml` pour les dépendances JS et Rust. --- ## 3. **Tests de pénétration automatisés dans la CI/CD** ### **A. Intégration de tests DAST/SAST** - **Ajout d’un job de test de pénétration automatisé** : ```yaml dast: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Start app (en background) run: npm run start & # ou docker-compose up -d - name: Run OWASP ZAP baseline scan uses: zaproxy/action-baseline@v0.10.0 with: target: 'http://localhost:3000' ``` - **Exemple de SAST** (CodeQL, SonarCloud, Snyk) : - Ajout d’un job CodeQL ou SonarCloud pour l’analyse statique du code. --- ## 4. **Vérifier la suppression des logs dans le code dans la CI/CD** ### **A. Recherche automatique de logs dans le code** - **Ajout d’un job de scan de logs** : ```yaml check-logs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Scan for console.log/debug run: | if grep -r --include=*.ts --include=*.js 'console\\.log' src/; then echo "console.log found! Please remove debug logs before merge." exit 1 fi if grep -r --include=*.ts --include=*.js 'console\\.debug' src/; then echo "console.debug found! Please remove debug logs before merge." exit 1 fi ``` - **Blocage du pipeline** si des logs de debug sont présents. --- ## 5. **Vérifier la signature des artefacts dans la CI/CD** ### **A. Signature automatique des builds** - **Ajout d’un job de signature** : ```yaml sign-artifacts: runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 - name: Build app run: npm run build - name: Sign build artifact run: | gpg --batch --yes --passphrase "$GPG_PASSPHRASE" --output dist/signature.sig --detach-sign dist/index.js - name: Upload artifact uses: actions/upload-artifact@v4 with: name: build-artifact path: dist/ ``` - **Vérification de la signature** lors du déploiement ou de la release. --- ## 6. **Vérification des pipelines CI/CD et du code** ### **A. Audit du pipeline lui-même** - **Utilisation d’outils comme [Checkov](https://www.checkov.io/) ou [GitHub Actions Linter](https://github.com/marketplace/actions/github-actions-linter)** pour auditer les fichiers de pipeline. - **Vérification de l’absence de secrets en clair, de jobs non protégés, de permissions trop larges.** ```yaml check-pipeline: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Lint GitHub Actions workflows uses: crazy-max/ghaction-github-workflow-lint@v1 - name: Checkov scan uses: bridgecrewio/checkov-action@v12 with: directory: . ``` --- ## 7. **Exemples précis de résultats attendus** - **Pipeline échoue** si : - Un test unitaire ou d’intégration échoue - Une vulnérabilité critique est détectée dans les dépendances - Un log de debug est présent dans le code - Un artefact n’est pas signé - Un job du pipeline a des permissions trop larges ou des secrets exposés - **Pipeline passe** si : - Tous les tests sont verts - Les dépendances sont à jour et sans faille critique - Aucun log de debug n’est présent - Les artefacts sont signés et vérifiés - Le pipeline est conforme aux bonnes pratiques CI/CD --- ## 8. **Plan d’action** 1. Ajouter/adapter les jobs de contrôle dans la CI/CD de chaque repo du dossier 4NK. 2. S’assurer que tous les contrôles sont exécutés à chaque push/merge/release. 3. Bloquer le merge en cas d’échec d’un contrôle. 4. Documenter la politique de sécurité CI/CD dans le README et la spec technique.
nicolas.cantu changed title from PR Sécurité 5 to PR Sécurité 5 (CI/CD) 2025-07-18 10:11:57 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: 4nk/ihm_client#5
No description provided.