Skip to content
Snippets Groups Projects
Commit 3c4aa822 authored by didier.richard's avatar didier.richard :slight_smile:
Browse files

Initialisation du projet

parents
No related branches found
No related tags found
No related merge requests found
stages:
- scan:image
variables:
ALPINE_3_15_4: alpine:3.15.4
DEBIAN_BULLSEYE: debian:bullseye-slim
PYTHON_IMAGE: python:3.9.12-slim-bullseye
TRIVY_IMAGE: aquasec/trivy:latest
scan_alpine_3_15_4:
stage: scan:image
image:
name: $TRIVY_IMAGE
entrypoint: [""]
script:
- |
trivy --quiet image --exit-code 0 --no-progress --format template --template "@/contrib/junit.tpl" $ALPINE_3_15_4 > junit-report.xml
artifacts:
reports:
junit: junit-report.xml
# found 0 alerts (20/04/2022)
scan_debian_bullseye:
stage: scan:image
image:
name: $TRIVY_IMAGE
entrypoint: [""]
script:
- |
trivy --quiet image --exit-code 0 --no-progress --format template --template "@/contrib/junit.tpl" $DEBIAN_BULLSEYE > junit-report.xml
artifacts:
reports:
junit: junit-report.xml
# found amongst 76 alerts :
# no [CRITICAL]
# libc-bin-2.31-13+deb11u3 [HIGH] CVE-2021-3999
scan_python_bullseye:
stage: scan:image
image:
name: $TRIVY_IMAGE
entrypoint: [""]
script:
- |
trivy --quiet image --exit-code 0 --no-progress --format template --template "@/contrib/junit.tpl" $PYTHON_IMAGE > junit-report.xml
artifacts:
reports:
junit: junit-report.xml
# found amongst 82 alerts :
# no [CRITICAL]
# libc-bin-2.31-13+deb11u3 [HIGH] CVE-2021-3999
scan_trivy:
stage: scan:image
image:
name: $TRIVY_IMAGE
entrypoint: [""]
script:
- |
trivy --quiet image --exit-code 0 --no-progress --format template --template "@/contrib/junit.tpl" $TRIVY_IMAGE > junit-report.xml
artifacts:
reports:
junit: junit-report.xml
# found amongst 2 alerts :
# no [CRITICAL]
# golang.org/x/crypto-v0.0.0-20220208233918-bba287dce954 [HIGH] CVE-2022-27191
# Utilisation de [trivy](https://aquasecurity.github.io/trivy/) pour scanner des images de conteneurs
Ce sont des exemples simples de scans d'images sur [le hub Docker](https://hub.docker.com).
On utilise le rapport de type `junit` qui permet d'avoir les résultats du scan affichés dans le pipeline.
La syntaxe est :
```yaml
aJob:
stage: aStage
image:
name: trivy:latest
entrypoint: [""]
script:
- |
trivy --quiet image --exit-code 0 --no-progress --format template --template "@/contrib/junit.tpl" URI_IMAGE_DOCKER_HUB > junit-report.xml
```
`URI_IMAGE_DOCKER_HUB` prend une valeur comme `debian:latest`.
Pour scanner des images stockées dans le registre de GitLab-forge, la syntaxe est légèrement moins simple :
```yaml
aJob:
stage: aStage
image:
name: trivy:latest
entrypoint: [""]
before_script:
- |
export TRIVY_AUTH_URL=$CI_REGISTRY
export TRIVY_USERNAME=$CI_REGISTRY_USER
export TRIVY_PASSWORD=$CI_REGISTRY_PASSWORD
script:
- |
trivy --quiet image --exit-code 0 --no-progress --format template --template "@/contrib/junit.tpl" URI_IMAGE_GITLABFORGE > junit-report.xml
after_script:
- |
unset TRIVY_AUTH_URL
unset TRIVY_USERNAME
unset TRIVY_PASSWORD
```
`URI_IMAGE_GITLABFORGE` prend une valeur comme `registry.gitlab-forge.din.developpement-durable.gouv.fr/share/devops/docker/mkdocs-material-plusplus/mkdocs-material-plusplus:7.3.6`.
__Les résultats de scans dépendent des images de base qui elles-mêmes sont mises à jour par les développeurs !__
Il faut donc :
1. scanner les images construites par CI/CD pour connaître leurs vulnérabilités ;
2. reconstruire ces images car les images de base peuvent avoir corriger certaines (ou toutes) les vulnérabilités ;
3. Aller en 1. :grin:
La fréquence de reconstruction des images dépend de l'activité du produit (mais au moins une fois par an si le produit est "inactif"), sinon il faut surveiller les alertes !
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment