Bonjour à tous, à la veille du début du cours «CI / CD sur AWS, Azure et Gitlab», nous avons préparé une traduction de matériel intéressant.
Dans cet article, nous expliquerons comment vĂ©rifier les images de conteneurs sur la plate-forme Gitlab CI / CD Ă l'aide de Sysdig Secure .Les images de conteneur qui ne sont pas conformes aux politiques de sĂ©curitĂ© dĂ©finies dans Sysdig Secure ne seront pas publiĂ©es dans le registre de conteneurs et arrĂȘteront le pipeline.
Outil de recherche de vulnérabilité avec Gitlab CI / CD
Gitlab CI / CD est un serveur d'intĂ©gration et de livraison continue open source intĂ©grĂ© Ă la plate-forme de collaboration et de dĂ©veloppement logiciel Gitlab.AprĂšs avoir configurĂ© Gitlab CI / CD pour votre rĂ©fĂ©rentiel, chaque fois que les dĂ©veloppeurs s'engagent dans les branches suivies du rĂ©fĂ©rentiel, les scripts de pipeline s'exĂ©cuteront automatiquement.Ces pipelines peuvent ĂȘtre utilisĂ©s pour automatiser de nombreux processus. Par exemple, pour les tests d'assurance qualitĂ©, la crĂ©ation d'artefacts de distribution de logiciels (tels que des images Docker ou des packages Linux) ou, pour ce dont nous parlerons dans cet article - pour vĂ©rifier la configuration, rechercher des vulnĂ©rabilitĂ©s et vĂ©rifier la conformitĂ©.VĂ©rification des images sur le pipeline Gitlab CI / CD: dĂ©placer la sĂ©curitĂ© vers la gauche
Comme ailleurs dans l'informatique, plus tÎt vous trouvez une vulnérabilité dans un conteneur, plus vite et plus facilement vous pouvez la corriger sans conséquences.L'incorporation de vérifications de vulnérabilité dans votre assemblage de pipeline est une bonne pratique pour plusieurs raisons:- Les vulnérabilités existantes ne seront jamais mises en production;
- «secure-by-default», , , .
- , . , - .
Sysdig Secure propose un ensemble complet d'outils pour vĂ©rifier les conteneurs d'images ainsi que de nombreuses autres fonctions d'inspection de sĂ©curitĂ© des conteneurs telles que le profilage des performances des menaces de temps de dĂ©tection basĂ© sur l'apprentissage automatique et des modĂšles de dĂ©tection de menaces extensibles prĂȘts Ă l'emploi, les PSP Kubernetes forcĂ©s , rĂ©pondant aux incidents et Ă l' expertise sur conformitĂ© . Voyons comment le service Sysdig Secure Image Validation fonctionne avec Gitlab.Exigences de contrĂŽle de sĂ©curitĂ© sur Gitlab
Pour effectuer les étapes suivantes, vous aurez besoin:Configuration du pipeline Gitlab CI / CD pour l'inspection d'images avec Sysdig Secure
Nous verrons en pratique comment intégrer ces deux plateformes. Avec ce guide, vous apprendrez à travailler avec la numérisation Sysdig Secure Image en quelques minutes.Configurer les informations d'identification d'accÚs
Le pipeline Gitlab CI / CD aura besoin d'informations d'identification pour communiquer avec le backend Sysdig Secure. Pour tout faire correctement, copiez le jeton d'accÚs à partir de ParamÚtres de l'interface utilisateur Sysdig> Profil utilisateur .Configurez ensuite une nouvelle variable globale pour votre projet Gitlab:- Dans votre projet, accédez à ParamÚtres> CI / CD et sélectionnez Variables .
- Créez une nouvelle variable
SYSDIG_SECURE_TOKEN
et ajoutez la clé Sysdig Secure API dans le champ de valeur . - Cliquez sur le bouton Masqué pour que votre jeton d'API ne soit pas imprimé dans les journaux du pipeline.
Définition du pipeline Gitlab
Tout d'abord, nous avons besoin d'un fichier Docker qui définit l'image que vous collecterez. Vous pouvez télécharger n'importe quel fichier Docker de votre choix dans votre projet, ou simplement utiliser l'exemple suivant:FROM debian:stretch
RUN apt update && apt install python-pip python-numpy openssh-server -y && rm -rf /var/lib/apt
RUN pip install flask
COPY app.py /app.py
EXPOSE 5000 22
ENTRYPOINT ["python", "./app.py"]
Ensuite, vous devez créer un nouveau fichier .gitlab-ci.yml
à la racine du projet. Ce fichier décrira toutes les étapes (étapes) nécessaires au montage de notre environnement. Il déterminera toutes les étapes nécessaires.Notre pipeline comprend 3 étapes:- Assemblage de l'image du conteneur;
- Analyse d'une image pour détecter des vulnérabilités ou des violations de stratégie;
- Déplacement de l'image vers le référentiel de destination.
variables:
CI_REGISTRY_IMAGE: "sysdiglabs/dummy-vuln-app"
SCAN_IMAGE_NAME: "sysdiglabs/secure_inline_scan:latest"
SYSDIG_SECURE_ENDPOINT: "https://secure.sysdig.com"
docker-build-master:
image: docker:latest
stage: build
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"
- docker push "$CI_REGISTRY_IMAGE"
only:
- master
Créer une image de conteneur
L'assemblage de l'image se produit avec docker build --pull -t "$CI_REGISTRY_NAME"
. Il prend les instructions de votre fichier Docker et génÚre une nouvelle image locale, qui sera vérifiée à l'étape suivante.Recherche de vulnérabilités
L'Ă©tape suivante consiste Ă vĂ©rifier les conteneurs. Ici, nous allons vĂ©rifier l'image pour les vulnĂ©rabilitĂ©s et vĂ©rifier la configuration, en stockant les rĂ©sultats sur le backend Sysdig.L'un des avantages de l'analyse locale Sysdig est que vous ne perdez pas le contrĂŽle de vos images, car l'image n'a pas besoin d'ĂȘtre dĂ©placĂ©e vers un autre registre ou exposĂ©e de l'extĂ©rieur pour effectuer l'analyse. Il a lieu Ă l'intĂ©rieur du runner et seuls les rĂ©sultats sont envoyĂ©s Ă Sysdig Secure.docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"
Ă ce stade, Sysdig Secure renvoie un code d'erreur si l'image remplit l'une des conditions d'arrĂȘt spĂ©cifiĂ©es dans votre stratĂ©gie (par exemple, vulnĂ©rabilitĂ© critique). L'arrĂȘt du pipeline empĂȘchera le transfert d'images vulnĂ©rables vers le registre des conteneurs.
Dans Sysdig Secure, nous pouvons consulter des informations supplémentaires et comprendre pourquoi le contrÎle de sécurité n'a pas abouti:
comme vous pouvez le voir sur la capture d'écran, le conteneur laisse le port 22 ouvert, qui figure dans la liste des ports interdits, et contient également de graves vulnérabilités dans la bibliothÚque Python.Déplacer l'image vers le référentiel de destination
AprĂšs avoir vĂ©rifiĂ© avec succĂšs les vulnĂ©rabilitĂ©s, le pipeline s'arrĂȘtera et l'image sera publiĂ©e dans le registre des conteneurs. Si vous ne spĂ©cifiez pas d'informations d'identification ou de stockage distant, Gitlab utilise la valeur par dĂ©faut .Conclusion
à l' aide de la numérisation d'image Sysdig Secure, vous pouvez vérifier les images sur le pipeline Gitlab CI / CD sans les envoyer de l'infrastructure au registre public ou intermédiaire, vérifier la configuration et éviter la fuite de vulnérabilités en production.Trouvez les vulnérabilités connues et vérifiez la configuration pour vérifier la conformité aux recommandations de sécurité, y compris les instructions Dockerfile, les listes blanches et noires des packages ou des bibliothÚques tierces installées dans l'image de base, tels que les fichiers JAR / WAR en Java ou les gestionnaires de packages linguistiques tels que npm pour Javascript, pip pour Python et gem pour Ruby.En cas d'échec, vous pouvez rapidement le signaler à l'auteur du conteneur pour résoudre rapidement le problÚme et créer une stratégie de sécurité de conteneur sécurisée par défaut. Pour essayer Sysdig Secure, vous pouvez demanderdémo aujourd'hui!C'est tout. En savoir plus sur le cours ici .