Académique Documents
Professionnel Documents
Culture Documents
Option TI
Cours de DevSecOps
Atelier 2
Sommaire 1
1. Introduction
Ce rapport expose notre expérience et notre apprentissage lors de l'atelier DevSecOps. L'objectif
principal de cet atelier était d'explorer les meilleures pratiques pour intégrer la sécurité dans notre
processus de développement logiciel. Dans un environnement numérique en constante évolution,
nous avons reconnu l'importance d'adopter une approche proactive pour garantir la sécurité de
notre application dès les premières étapes du développement.
Au cours de cet atelier, nous nous sommes concentrés sur des aspects clés tels que l'utilisation de
conteneurs Docker, l'intégration continue avec GitLab CI, ainsi que la mise en œuvre de tests de
sécurité dynamique (DAST) avec Zed Attack Proxy (ZAP).
Ce rapport détaillera notre parcours à travers ces différentes étapes, mettant en lumière les outils
utilisés et les leçons tirées de l'intégration de pratiques DevSecOps dans notre processus de
développement. Nous examinerons comment ces pratiques ont renforcé la sécurité de notre
application tout en préservant l'efficacité opérationnelle et la rapidité de déploiement.
2. Déployer l’application
2.1. Utilisez un conteneur Docker pour votre application.
Dans le cadre de l'atelier DevSecOps, nous avons débuté par la création d'un conteneur Docker
pour notre application Java. Le fichier Dockerfile fourni définit l'environnement de construction
de l'image
FROM maven:3-jdk-8-alpine
VOLUME /tmp
COPY target/*.jar app.jar
Sommaire 2
2.2. Générez l'image de votre application
Après avoir défini notre Dockerfile, nous avons automatisé le processus de génération de l'image
Docker à l'aide d'un pipeline GitLab CI. Voici ce que nous avons ajouté au fichier .gitlab-
ci.yml pour cette étape :
variables :
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
build_image:
services:
- name: docker:dind
alias: dind
image: docker:20.10.16
stage: container-scanning
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $CI_REGISTRY_IMAGE:latest || true
- docker build --tag $CONTAINER_TEST_IMAGE --tag $CI_REGISTRY_IMAGE:latest .
- docker push $CONTAINER_TEST_IMAGE
- docker push $CI_REGISTRY_IMAGE:latest
needs:
- build_job
Sommaire 3
2.3. Ajoutez l'image à votre registre de conteneurs
Une fois que l'image de notre application a été générée, nous avons procédé à son ajout dans le
registre de conteneurs. Cette étape assure la centralisation et la gestion efficace de nos images
Docker.
include:
- template: Security/Container-Scanning.latest.gitlab-ci.yml
container_scanning:
variables:
CS_IMAGE: $CONTAINER_TEST_IMAGE
Sommaire 4
3.2. Analyse des résultats
Une fois l'analyse de sécurité déclenchée, nous avons examiné les résultats pour identifier toute
vulnérabilité ou problème de sécurité potentiel dans notre image Docker. L'interface graphique
de GitLab CI présente de manière claire et détaillée les résultats de l'analyse, permettant une
action rapide pour remédier aux éventuelles failles de sécurité.
4. Utilisation de Dast
Dans le cadre de notre démarche de sécurité, nous avons mis en œuvre un test de sécurité
dynamique (DAST) pour évaluer la sécurité de notre application déployée à l'aide de l'image
Docker que nous avons générée.
Sommaire 5
4.1. Dans la section services de la tâche DAST, utilisez l'alias
pour définir le nom d'hôte d'accès au service
La configuration du DAST dans le fichier .gitlab-ci.yml est cruciale pour définir les
paramètres nécessaires à l'analyse de sécurité dynamique. La section pertinente du fichier est
présentée ci-dessous :
dast:
services:
- name: $CONTAINER_TEST_IMAGE
alias: demoApp
variables:
CONTAINER_TEST_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
DOCKER_IMAGE: "$CONTAINER_TEST_IMAGE"
DAST_WEBSITE: "http://demoApp:8080/"
DAST_FULL_SCAN_ENABLED: "true"
1. services: La tâche DAST utilise le service correspondant à notre image Docker en lui
attribuant un alias ( demoApp ). Cet alias est ensuite utilisé pour définir le nom d'hôte d'accès
au service dans les tests de sécurité.
Sommaire 6
5. ZAP
Dans le cadre de notre stratégie de sécurité, nous avons configuré et exécuté un scan de sécurité
avec ZAP (Zed Attack Proxy). Cela nous permet de détecter et de remédier aux vulnérabilités
potentielles dans notre application.
variables :
ZAP_WEBSITE: "https://demo.owasp-juice.shop"
run-dast-job:
image: maven:latest
stage: runDASTScanUsingZAP
script:
- apt-get update -qy
- apt-get install -y wget
- wget https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2.14.0_Linux.t
ar.gz
- tar -zxvf ZAP_2.14.0_Linux.tar.gz
Sommaire 7
- ./ZAP_2.14.0/zap.sh -cmd -quickurl $ZAP_WEBSITE -quickout ../zap_report.html
artifacts:
paths:
- zap_report.html
2. run-dast-job: Cette tâche est définie pour exécuter le scan ZAP. Les points clés sont :
script: Contient les commandes à exécuter pour installer ZAP et lancer le scan.
3. artifacts: Définit les artefacts générés par la tâche, dans ce cas, le rapport ZAP.
Sommaire 8
6. BURPSUITE
6.1. Prérequis
Accès à Burp Suite Enterprise Edition en tant qu'administrateur.
Rôle de Mainteneur ou Propriétaire pour les projets GitLab où les issues seront créées.
Sommaire 9
Activation de la licence
Sommaire 10
Configuration du token d'intégration avec GitLab
Sommaire 11
• Connexion de Burp Suite Enterprise Edition à GitLab
Sommaire 12
Configurer l'intégration en spécifiant l'URL de l'API GitLab et en utilisant le token
d'intégration créé précédemment.
Activer la création manuelle d'issues depuis Burp Suite Enterprise Edition en sélectionnant
les projets GitLab et les types d'issues disponibles.
Sommaire 13
6.3. Avantages de l'intégration
Automatisation de la création d'issues : Réduction du temps nécessaire à la création
manuelle d'issues pour chaque vulnérabilité détectée.
Cette intégration entre Burp Suite Enterprise Edition et GitLab offre une solution efficace pour
automatiser la gestion des vulnérabilités, renforçant ainsi la sécurité des applications développées
Sommaire 14
au sein de l'écosystème GitLab.
Sommaire 15
6.5. Créer Gitlab issue
Sommaire 16
Sommaire 17
6.6. Affichage des issues sur Gitlab
Sommaire 18
7. Conclusion
L'atelier DevSecOps a été une plongée immersive dans l'intégration de la sécurité au sein de
notre processus de développement logiciel. En adoptant des conteneurs Docker, nous avons
assuré la portabilité et la reproductibilité de notre application, simplifiant ainsi le déploiement sur
différentes plates-formes.
Zed Attack Proxy (ZAP) a enrichi notre boîte à outils de sécurité en automatisant les tests de
sécurité dynamique. Son intégration dans le pipeline nous a permis de détecter et de remédier
rapidement aux vulnérabilités.
Les rapports générés à chaque étape ont été des guides essentiels, offrant une visibilité
approfondie sur les enjeux de sécurité spécifiques à notre application.
En conclusion, cet atelier nous a équipés pour intégrer la sécurité de manière transparente,
renforçant la confiance des utilisateurs et assurant la pérennité de notre application dans un
paysage numérique en constante évolution.
Sommaire 19