Fermer

septembre 3, 2024

Intégration des outils DevSecOps avec Jenkins

Intégration des outils DevSecOps avec Jenkins


Introduction

Fondamentalement, DevSecOps peut être considéré comme des pratiques de sécurité intégrées à DevOps ; nécessitant une variété d’outils pour garantir la sécurité tout au long du cycle de vie du développement logiciel.

DevSecOps

Souvent, sans le savoir, nous ajoutons des détails à notre code ou utilisons des packages compromis, ce qui entraîne des violations potentielles dans notre système. Pour atténuer cela, nous utilisons divers outils DevSecOps pour garantir qu’il n’y a aucune possibilité de violation après le déploiement de nos livrables.

Dans ce scénario, nous utiliserons Jenkins comme outil CI/CD sur un serveur basé sur Linux (RHEL) avec les outils DevSecOps suivants :

  • Gitleaks
  • SonarQube
  • Vérification des dépendances OWASP
  • Scanner d’images Grype

Conditions préalables

  1. Instance EC2 ou n’importe quelle VM cloud avec au moins 2 vCPU et 2 Gio pour plus d’efficacité.
  2. Jenkins a été installé sur le serveur avec un exemple de pipeline.
  3. SonarQube est installé sur n’importe quel serveur.

1. Gitleaks

Gitleaks est un outil conçu pour la détection des secrets (tels que les clés API, les jetons, les mots de passe et autres informations sensibles) et pour empêcher leur validation dans les systèmes de contrôle de version, principalement les référentiels Git. Cet outil aiderait les développeurs et les équipes de sécurité à garantir que des données sensibles ne soient pas ajoutées à la base de code par inadvertance, ce qui pourrait entraîner des vulnérabilités de sécurité lors de leur exposition.

Étapes pour installer et intégrer :

Exécutez les commandes suivantes pour installer gitleaks :

wget https://github.com/zricethezav/gitleaks/releases/download/v8.10.0/gitleaks-v8.10.0-linux-amd64.tar.gz
tar -xzf gitleaks-v8.10.0-linux-amd64.tar.gz
mv gitleaks /usr/local/bin/

Ajoutez la commande ci-dessous à votre pipeline Jenkins :

gitleaks detect --source=. --report-format=json --report-path=gitleaks-report.json || true
Exemple de rapport Gitleaks

Exemple de rapport Gitleaks

2. SonarQube

SonarQube est une plateforme open source pour l’inspection continue de la qualité du code. Le système fournit des examens automatiques au moyen d’une analyse statique du code pour détecter les bogues, les odeurs de code et les vulnérabilités de sécurité dans un certain nombre de langages de programmation. SonarQube souhaite que les développeurs écrivent du code plus propre et plus sûr en entreprenant des analyses approfondies et en donnant leur avis.

Étapes pour installer et intégrer :

Téléchargez le cli du scanner sonar à partir de ce lien : https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/

Exécutez les commandes suivantes :

sudo mv sonar-scanner-<version>-linux /opt/sonar-scanner
export SONAR_SCANNER_HOME=/opt/sonar-scanner
export PATH=$PATH:$SONAR_SCANNER_HOME/bin
source ~/.bashrc

Exécutez « sonar-scanner -h » pour vérifier s’il est installé, parfois cela ne fonctionnera pas, alors essayez cette commande à la place – /opt/sonar-scanner/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner (Modifiez le numéro de version selon le package téléchargé)

Allez maintenant sur votre SonarQube >> cliquez sur votre profil >> allez sur Mon compte et créez un jeton s’il n’est pas déjà créé.

SonarQube

Accédez maintenant à votre pipeline jenkins et ajoutez les commandes suivantes à votre pipeline :

/opt/sonar-scanner/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner
-Dsonar.projectKey=your-project-key
-Dsonar.sources=.
-Dsonar.host.url=https://yoursonarlink.ttn
-Dsonar.login=$SONAR_TOKEN
  • -Dsonar.projectKey est la clé de votre projet sonarqube
  • -Dsonar.sources est le répertoire où est présent le code qui doit être analysé
  • -Dsonar.host.url est l’URL de votre sonarqube
  • -Dsonar.login est l’endroit où vous transmettez votre jeton sonar qui sera utilisé pour authentifier votre demande

Vous n’avez pas nécessairement besoin de modifier sonar-project.properties pour exécuter le scanner sonar. La clé du projet peut être n’importe quoi qui sera également affiché comme nom de votre projet dans SonarQube.

Rapport SonarQube

Exemple de rapport SonarQube

3. Vérification des dépendances OWASP

OWASP Dependency-Check est l’outil d’évaluation de la conformité de sécurité qui identifie les dépendances du projet, vérifiant la présence de vulnérabilités connues et divulguées publiquement dans ces dépendances. Il s’agit d’un projet open source disponible gratuitement et maintenu par l’Open Web Application Security Project. Il analyse les dépendances du projet, c’est-à-dire les bibliothèques et les frameworks, et crée un rapport de toutes les dépendances utilisées. Il vérifie les dépendances identifiées par rapport à sa base de données de vulnérabilités connues, y compris la base de données nationale sur les vulnérabilités, pour détecter d’éventuels risques de sécurité.

Étapes pour installer et intégrer :

Exécutez les commandes suivantes :

wget https://github.com/jeremylong/DependencyCheck/releases/download/v6.5.3/dependency-check-6.5.3-release.zip
unzip dependency-check-6.5.3-release.zip -d /opt/dependency-check
export PATH=$PATH:/opt/dependency-check/bin
source ~/.bashrc

Exécutez ce « dependency-check –version » pour vérifier s’il est installé, parfois cela ne fonctionnera pas, alors essayez cette commande à la place – /opt/dependency-check/bin/dependency-check.sh –project ‘your-project’

Ajoutez les commandes suivantes à votre pipeline :

/opt/dependency-check/bin/dependency-check.sh --project 'your-project' 
--scan '/var/lib/jenkins/workspace/path/to/job' 
--out '.' 
--format 'HTML' 
--format 'JSON' 
--data '/var/lib/jenkins/your-custom-path/dependency-check-data'
  • –project est le nom de votre projet
  • –scan est le chemin dont les ressources doivent être analysées
  • –out est le répertoire dans lequel les rapports seront générés
  • –format indique le format dans lequel vous souhaitez le rapport
  • –data est le chemin où les données de vérification des dépendances seront stockées. Ces données contiennent des détails sur les vulnérabilités et utiliseront ces données comme référence lors de l’analyse de votre code à la recherche de vulnérabilités et généreront le rapport en conséquence.
Rapport de vérification des dépendances

Vérification des dépendances Exemple de rapport

4. Scanner d’images Grype

Grype est un outil et une bibliothèque simples qui analysent les images de conteneurs et les systèmes de fichiers et génèrent des rapports sur les vulnérabilités détectées dans les progiciels et les bibliothèques. Grype se concentre sur la détection des vulnérabilités dans les dépendances des applications, un peu comme OWASP Dependency-Check, mais se spécialise dans les environnements conteneurisés.

Étapes pour installer et intégrer :

Exécutez les commandes suivantes :

curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

Ajoutez la commande suivante à votre pipeline Jenkins :

grype $IMAGE_NAME:$IMAGE_TAG > grype-report.txt
  • $IMAGE_NAME :$IMAGE_TAG, vous pouvez transmettre ici le nom de l’image et la balise que vous souhaitez numériser.

Si la commande « grype » ne fonctionne pas, vous pouvez la remplacer par « /usr/local/bin/grype ».

Exemple de rapport Grype

Exemple de rapport Grype

Note: Grype est gourmand en ressources et peut planter le serveur lors de l’analyse. Si cela se produit, envisagez d’utiliser Trivy, Clair ou AWS ECR pour numériser des images en remplacement, si possible.

Exemple d’exécution :

Exemple d'exécution

Exemple d’exécution

Objets envoyés par courrier

Objets envoyés par courrier

archiveArtifacts artifacts: '*.html,*.json,*.txt', fingerprint: true
emailext (
subject: "Build Artifacts for ${JOB_NAME} #${BUILD_NUMBER}",
body: """<p>Hi Team,</p>
<p>Attached are the artifacts of Gitleaks, GrypeScanner and OWASP Dependancy-check Reports are from the latest build.</p>
<p> For SonarQube Report, please visit - <your sonar link><br>
<p>Build Details:<br>
Job: ${JOB_NAME}<br>
Build: #${BUILD_NUMBER}<br>
Build URL: ${BUILD_URL}<br>
""",
to: 'youremail@domain.com', 
attachmentsPattern: "**/dependency-check-report.json,**/dependency-check-report.html,**/gitleaks-report.json,**/grype-report.txt",
mimeType: 'text/html'
)
cleanWs()

(Extrait de code pour la notification par e-mail)

Conclusion

DevSecOps garantit que les logiciels sont sécurisés et fiables tout au long de leur développement. Des outils tels que Gitleaks, SonarQube, OWASP-Dependency-Check et Grype peuvent donc aider les organisations à détecter et à réduire les vulnérabilités de sécurité avant leur déploiement, réduisant ainsi considérablement le risque de violation et augmentant la sécurité générale du système.

Gitleaks empêche les informations sensibles de pénétrer par erreur dans les systèmes de contrôle de version. SonarQube fournit une analyse complète de la qualité du code, détectant ainsi les bogues, les odeurs de code et les vulnérabilités de sécurité pour garantir une base de code plus propre et plus sûre. OWASP Dependency-Check analyse les dépendances du projet par rapport aux vulnérabilités. Cela ajoute une grande valeur à une étape de sécurité en garantissant que les bibliothèques et les frameworks peuvent être utilisés en toute sécurité dans un projet. Grype, enfin, se spécialise dans l’analyse des vulnérabilités des images de conteneurs et des systèmes de fichiers. Ces outils peuvent être automatisés dans le cadre du processus de développement continu dans un pipeline CI/CD avec Jenkins, permettant une surveillance continue pour une résolution rapide des problèmes de sécurité potentiels. De cette façon, cette approche entraînera non seulement une amélioration de la posture de sécurité d’une organisation, mais inspirera également une culture de sensibilisation à la sécurité parmi les développeurs et les autres équipes.

Une stratégie DevSecOps construite avec ces outils ou tout autre outil de sécurité garantit que le processus de développement logiciel ne considère pas la sécurité comme une réflexion après coup, car la sécurité a été intégrée au cœur même du développement d’applications plus sécurisées et résilientes.






Source link