Validation des images avec Gitlab CI / CD

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:

  1. Dans votre projet, accédez à ParamÚtres> CI / CD et sélectionnez Variables .
  2. Créez une nouvelle variable SYSDIG_SECURE_TOKENet ajoutez la clé Sysdig Secure API dans le champ de valeur .
  3. 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 .

All Articles