Snyk est un éditeur spécialisé dans l'analyse des vulnérabilités dans le code des fichiers de configuration d'infrastructure, notamment celles présentes dans les conteneurs et les packages applicatifs.

Snyk offre un plateforme cloud d'abord, mais il propose divers produits.

OpenSource Snyk s'intègre via la CLI de l'éditeur dans un flux Git. Une fois lancé, le logiciel détecte vulnérabilités, les classe par degré de sensibilité et corrige automatiquement les erreurs de sécurité connues. Cette fonctionnalité peut être intégrée au cycle de demande d'extraction afin de s'appliquer au code envoyé aux référentiels.

Infrastructures de Snyk comme Code, d'autre part, analyse les vulnérabilités et les corrige dans le JSON et YAML Kubernetes fichiers de configuration. Ici, un moteur de règles permet de paramétrer la sensibilité des détections au sein des référentiels Git en fonction des paramètres décidés par les administrateurs.

Conteneur Snyk permet de tester images docker et registres associés au moment de leur création et après. Le programme peut être intégré dans les CLI, les SCM, les outils CI, les registres de conteneurs et Kubernetes.

Conteneur Snyk

Aujourd'hui, nous allons voir comment utiliser Snyk Container, qui est intégré à Docker pour détecter les vulnérabilités.

Sample docker file

La première chose dont vous avez besoin pour utiliser Snyk pour détecter les vulnérabilités est une image docker. Dans cet exemple, nous utiliserons l'image docker suivante :

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

La première chose que nous devons faire est de générer l'image localement via la commande suivante :

docker build -t 0xyz0/python-app.

Nous avons maintenant une image à analyser.

Scan the image from the Docker client

L'intégration du service Snyk avec Docker rend ce processus incroyablement simple. Pour lancer l'analyse, il vous suffit d'exécuter les opérations suivantes :

docker scan 0***0/python-app

Cela commencera par l'analyse où il renverra une sortie plus ou moins étendue, en fonction des vulnérabilités qu'il trouvera, et avec un résumé final :

Docker scan montre toutes les vulnérabilités de l'image  

Comme vous pouvez le voir, il ne vous indique pas seulement combien de vulnérabilités il a trouvées. Même si vous faites défiler vers le haut, vous pouvez voir ce qu'ils sont et leur criticité, mais il fait des recommandations concernant l'image de base que vous devez utiliser.

Vous pouvez également vérifier les détails de la vulnérabilité à partir du Base de données de vulnérabilité Snyk.

Dans mon cas, il me propose plusieurs alternatives, je vais donc modifier mon Dockerfile avec la première option :

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Si je reconstruis l'image et la scanne :

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Vous verrez que la sortie affiche désormais moins de vulnérabilités, et dans ce cas, elle vous indique que vous utilisez actuellement l'image de base la plus sécurisée :

L'analyse Docker garantit que vous utilisez l'image de base la plus sécurisée

Vous pouvez également obtenir un rapport plus détaillé si vous ajoutez le fichier docker qui génère l'image à la commande :

docker scan -f Dockerfile 0***0/python-app

Et même exclure l'image de base de l'analyse, juste au cas où vous voudriez vous concentrer sur ce que vous avez mal fait :

docker scan -f Dockerfile --exclude-base 0***0/python-app

Ce service peut également être intégré aux référentiels Docker Hub :

Mais pour cela, vous devez avoir l'un des abonnements payants. Cependant, vous pouvez le lancer localement, avec le plan gratuit que vous avez juste pour être connecté à Docker Hub (il a des limites de numérisation claires), pendant que vous développez ou souhaitez vérifier le degré de sécurité d'une image tierce que vous souhaitez utilisation.

Using Snyk with Github Actions

La première chose à faire est de créer un référentiel et à l'intérieur de créer un dossier.

.github / worflows /

Ensuite, utiliser Snyk Container dans Github consiste à créer une nouvelle image ou à prendre cette image que nous avons créée dans Docker Hub. Pour utiliser Snyk, vous devez créer un nouveau secret appelé SNYK_TOKEN, et pour obtenir le token, vous devez créer un compte chez Snyk. À partir des paramètres généraux, où il est écrit API Token, vous pouvez le générer rapidement.

Avec le jeton, vous pouvez créer le secret sur Github et l'utiliser dans l'action. Maintenant, vous devez lui transmettre le nom du référentiel qui a été créé dans Docker Hub. Ensuite, vous devez passer le message qu'il doit envoyer. Vous pouvez accéder aux sorties des étapes à utiliser comme variable dans le message.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Comment exécuter l'intégralité du workflow ? Simple juste en poussant Maître. Github Action détectera le fichier dans .github / workflows /.

Derniers mots 👈

Avec la popularité croissante des conteneurs, les incidents de failles de sécurité deviennent de plus en plus courants, dont la plupart sont dus à des erreurs de configuration lors du déploiement des conteneurs. Snyk fournit un outil efficace et simple qui peut nous aider à éviter les erreurs de configuration et à détecter les vulnérabilités les plus courantes dans images docker.