0Pricing
DevOps Bootcamp · Leçon

Bonnes pratiques de sécurité des Dockerfiles

Mettez en œuvre des mesures de sécurité dans vos Dockerfiles pour limiter les vulnérabilités et réduire la surface d’attaque.

Bonnes pratiques de sécurité des Dockerfiles est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.

Sécurisez vos Dockerfiles !

Bienvenue dans les bonnes pratiques de sécurité des Dockerfiles ! Une application sécurisée commence par une base sécurisée.

Votre Dockerfile n’est pas qu’un script de construction : c’est un plan directeur pour la sécurité de votre application. De mauvaises pratiques à ce niveau peuvent entraîner d’importantes vulnérabilités.

Dans cette leçon, nous allons découvrir des stratégies essentielles pour renforcer vos images Docker et réduire les surfaces d’attaque potentielles.

Bonnes pratiques de sécurité des Dockerfiles — illustration 1

Commencer par des images de base fiables

L’instruction FROM est votre première ligne de défense. Choisissez toujours des images de base officielles et bien entretenues provenant de sources fiables comme Docker Hub.

  • Images officielles : elles sont vérifiées et régulièrement mises à jour.
  • Étiquettes précises : évitez latest. Utilisez des étiquettes de version précises (par exemple, alpine:3.18) pour garantir prévisibilité et stabilité.
  • Images minimales : privilégiez les versions « slim » ou « alpine ». Elles contiennent moins de paquets, ce qui signifie moins de vulnérabilités potentielles.

Choisir une image de base sécurisée

Découvrez comment le choix d’une image de base minimale et précise peut améliorer la sécurité. Il réduit le nombre de paquets et d’outils susceptibles d’être exploités.

FROM alpine:3.18
# This is better than:
# FROM ubuntu:latest
# FROM python:latest

# Alpine is a minimal Linux distribution,
# making the image smaller and more secure.

Réduire la taille de l’image

Chaque fichier, paquet ou dépendance que vous ajoutez à votre image augmente sa « surface d’attaque ». Moins il y a de logiciels présents, moins il existe de vulnérabilités potentielles.

Installez uniquement ce qui est absolument nécessaire au fonctionnement de votre application. Supprimez les outils de construction et les fichiers temporaires dès qu’ils ne sont plus nécessaires.

Nettoyer après l’installation

Lorsque vous installez des paquets, nettoyez toujours les caches du gestionnaire de paquets et supprimez les fichiers inutiles. Cela réduit la taille finale de l’image et élimine les fuites potentielles d’informations.

Pour les images basées sur Debian (comme Ubuntu), utilisez apt-get clean et supprimez /var/lib/apt/lists/* dans la même instruction RUN.

FROM debian:stable-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends \ 
    curl \ 
    git && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# All in one RUN command to leverage Docker's caching and reduce layers.

N’exécutez pas les processus en tant que superutilisateur !

Par défaut, les processus à l’intérieur d’un conteneur Docker s’exécutent en tant qu’utilisateur root. Il s’agit d’un risque de sécurité majeur !

Si un attaquant prend le contrôle de votre conteneur, il dispose des privilèges du superutilisateur, ce qui peut lui permettre de s’échapper du conteneur ou de compromettre le système hôte.

Créez toujours un utilisateur dédié sans privilèges de superutilisateur et utilisez l’instruction USER pour basculer vers celui-ci.

Configurer un utilisateur sans privilèges de superutilisateur

Voici comment créer un nouvel utilisateur et demander à Docker d’exécuter les commandes suivantes avec cet utilisateur. Cela limite considérablement les dégâts potentiels en cas de compromission du conteneur.

FROM alpine:3.18

# Create a non-root user and group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Switch to the non-root user
USER appuser

CMD ["echo", "Hello from non-root user!"]

Aucun secret dans le Dockerfile !

Ne codez jamais en dur des informations sensibles, comme des clés d’API, des mots de passe de base de données ou des clés privées, directement dans votre Dockerfile et ne les intégrez jamais à votre image.

Ces secrets peuvent facilement être extraits de l’image par toute personne qui y a accès, même si vous les supprimez dans une couche ultérieure.

Utilisez plutôt des méthodes sécurisées comme Docker Secrets, des variables d’environnement (pour les données non sensibles) ou des secrets Kubernetes lors de l’exécution.

Préférer COPY à ADD

Les instructions COPY et ADD copient toutes deux des fichiers dans votre image, mais COPY est généralement préférable pour la sécurité et la clarté.

  • COPY : copie uniquement des fichiers ou des répertoires locaux. Son fonctionnement est simple et prévisible.
  • ADD : peut également récupérer des fichiers depuis des URL et extraire automatiquement des archives compressées (tar, gzip). Ces fonctionnalités supplémentaires présentent des risques de sécurité potentiels, comme le téléchargement de contenu non fiable ou l’extraction d’archives malveillantes.

Utilisez COPY, sauf si vous avez précisément besoin des fonctionnalités avancées de ADD et que vous en comprenez les risques.

Vérification de sécurité !

Laquelle des pratiques suivantes concernant les Dockerfiles constitue une étape essentielle pour réduire la surface d’attaque et limiter les vulnérabilités potentielles ?

Votre parcours vers un Dockerfile sécurisé

Excellent travail ! Vous avez appris les bonnes pratiques essentielles de sécurité des Dockerfiles, qui constituent la base d’une conteneurisation sécurisée :

  • Commencer par des images de base fiables et minimales : utilisez des images officielles, précises et légères.
  • Réduire la taille de l’image : installez uniquement ce qui est nécessaire et nettoyez après les installations.
  • Exécuter les processus avec un utilisateur sans privilèges de superutilisateur : limitez les privilèges afin de réduire l’impact d’éventuelles intrusions.
  • Éviter les secrets : ne codez jamais de données sensibles en dur dans votre Dockerfile.
  • Préférer `COPY` à `ADD` : privilégiez l’instruction `COPY`, plus prévisible et plus sûre.

En appliquant ces pratiques, vous renforcez considérablement la sécurité de vos applications conteneurisées !

Questions Fréquemment Posées

La leçon « Bonnes pratiques de sécurité des Dockerfiles » est-elle gratuite ?

Oui — le texte complet de « Bonnes pratiques de sécurité des Dockerfiles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Bonnes pratiques de sécurité des Dockerfiles » ?

Mettez en œuvre des mesures de sécurité dans vos Dockerfiles pour limiter les vulnérabilités et réduire la surface d’attaque. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?

Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Bonnes pratiques de sécurité des Dockerfiles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?

Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Constructions en plusieurs étapes pour gagner en efficacité
  2. Tirer parti de la mise en cache des constructions
  3. Bonnes pratiques de sécurité des Dockerfiles
  4. Réduire la taille des images avec des bases Slim et Distroless
← Retour à DevOps Bootcamp