← L’Héritage numérique
Technique 6 juin 2026 · 5 · par L'équipe SecretVault

Sécuriser les conteneurs Docker avec des images chiffrées : guide pratique

Découvrez comment protéger vos images Docker en les signant et en les chiffrant, afin de garantir l’intégrité et la confidentialité de vos déploiements.

Pourquoi chiffrer les images Docker ?

Les conteneurs Docker sont largement utilisés pour déployer des applications, mais leurs images sont, par défaut, stockées en clair dans les registres. Un accès non autorisé à un registre peut révéler le code source, les bibliothèques tierces, voire des secrets intégrés accidentellement. Le chiffrement des images répond à deux exigences essentielles :

  • Confidentialité : les couches de l’image sont illisibles sans la clé de déchiffrement.
  • Intégrité : la signature numérique garantit que l’image n’a pas été altérée depuis sa création.

En combinant Docker Content Trust (DCT) et un chiffrement au niveau du registre, vous assurez que seules les parties autorisées peuvent télécharger et exécuter vos conteneurs.

Docker Content Trust et Notary : la base de la confiance

Docker Content Trust utilise le projet Notary pour signer les images. Chaque image possède un manifest signé avec une clé privée détenue par le créateur. Lors du docker pull, le client vérifie la signature grâce à la clé publique correspondante.

Activation de Docker Content Trust

# Activer DCT pour la session courante
export DOCKER_CONTENT_TRUST=1
# Désactiver temporairement si besoin
# export DOCKER_CONTENT_TRUST=0

Une fois activé, toutes les opérations push et pull sont soumises à la vérification de signature. Les clés sont stockées dans le répertoire ~/.docker/trust/.

Chiffrement des images au niveau du registre

Le chiffrement proprement dit n’est pas fourni par Docker Engine. Il s’appuie sur le registre qui supporte le encryption-at-rest (ex. Harbor, Quay, ou le registre privé de Docker avec l’option --storage-encryption). Voici comment configurer un registre Docker local avec chiffrement.

Installation du registre avec chiffrement

docker run -d \
  --name registry \
  -p 5000:5000 \
  -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry \
  -e REGISTRY_STORAGE_ENCRYPTION_ENABLED=true \
  -e REGISTRY_STORAGE_ENCRYPTION_KEY=YOUR_32_BYTE_KEY \
  -v registry-data:/var/lib/registry \
  registry:2
  • REGISTRY_STORAGE_ENCRYPTION_ENABLED active le chiffrement des blobs.
  • REGISTRY_STORAGE_ENCRYPTION_KEY doit être une clé de 32 octets (AES‑256) stockée de façon sécurisée, par ex. dans un gestionnaire de secrets.

Flux complet de création, signature et push

  1. Construire l’image
    cat > Dockerfile <<'EOF'
    FROM alpine:3.18
    RUN addgroup -S app && adduser -S -G app app
    WORKDIR /app
    COPY myapp /app/
    CMD ["/app/myapp"]
    EOF
    docker build -t localhost:5000/mon-app:1.0 .
    
  2. Signer l’image (Notary gère les clés automatiquement)
    export DOCKER_CONTENT_TRUST=1
    docker push localhost:5000/mon-app:1.0
    
    Le registre reçoit l’image chiffrée et le manifeste signé.
  3. Vérifier la signature
    docker trust inspect --pretty localhost:5000/mon-app:1.0
    
    Vous voyez la clé publique, le digest et la date de signature.
  4. Récupérer l’image
    docker pull localhost:5000/mon-app:1.0
    
    Le client vérifie la signature ; si la clé publique ne correspond pas, le pull échoue.

Bonnes pratiques pour une chaîne de confiance robuste

  • Gestion des clés : stockez les clés privées de Notary et la clé de chiffrement du registre dans un coffre de secrets (ex. HashiCorp Vault ou Azure Key Vault). Limitez l’accès aux seules personnes ou services qui en ont besoin.
  • Rotation des clés : planifiez une rotation périodique. Notary supporte la création de nouvelles clés de signature ; le registre permet de changer la clé de chiffrement en re‑exportant les blobs.
  • Scannage des images : même si les images sont chiffrées, elles doivent être scannées avant le push pour détecter des vulnérabilités (ex. Trivy, Clair).
  • Audit des accès : conservez les logs du registre et de Notary. Un accès non autorisé aux API du registre doit déclencher une alerte.
  • Documentation : consignez la procédure de création, de signature et de rotation des clés. Cela facilite la transmission sécurisée aux successeurs ou aux équipes d’audit.

Conclusion

En combinant Docker Content Trust pour la signature et le chiffrement au repos du registre, vous créez une chaîne de confiance qui protège la confidentialité et l’intégrité de vos conteneurs. Cette approche répond aux exigences de confidentialité des données, tout en restant compatible avec les workflows CI/CD habituels. La mise en œuvre repose sur des outils standards (Docker, Notary, registre chiffré) et sur des pratiques de gestion des clés éprouvées ; elle constitue donc une solution fiable pour toute organisation soucieuse de la sécurité de ses déploiements conteneurisés.

Envie d’aller plus loin avec SecretVault ?

Découvrir SecretVault