
Le Docker Bench for Security est un script qui vérifie des dizaines de bonnes pratiques courantes autour du déploiement de conteneurs Docker en production.

Le Docker Bench pour la sécurité est un script qui vérifie des dizaines de bonnes pratiques courantes concernant le déploiement de conteneurs Docker en production. Les tests sont tous automatisés et sont basés sur le CIS Docker Benchmark v1.6.0.
Nous mettons ceci à disposition en tant qu'utilitaire open-source afin que la communauté Docker puisse avoir un moyen simple d'auto-évaluer ses hôtes et conteneurs Docker par rapport à ce benchmark.
| Version | CIS |
|---|---|
| 1.6.0 | 1.6.0 |
| 1.5.0 | 1.5.0 |
| 1.3.6 | 1.4.0 |
| 1.3.5 | 1.2.0 |
| 1.3.3 | 1.1.0 |
| 1.3.0 | 1.13.0 |
Vous pouvez simplement exécuter ce script depuis votre hôte de base en exécutant :
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh
Remarque :
jqest une dépendance optionnelle mais recommandée.
Vous avez deux options si vous souhaitez construire et exécuter ce conteneur vous-même :
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
Suivi d'une commande docker run appropriée comme indiqué ci-dessous.
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker-compose run --rm docker-bench-security
Veuillez noter que l'image docker/docker-bench-security est obsolète et qu'une construction manuelle est nécessaire. Voir #405 pour plus d'informations.
Notez que ce conteneur est exécuté avec beaucoup de privilèges — partage des systèmes de fichiers, des espaces de noms PID et réseau de l'hôte, en raison de parties du benchmark s'appliquant à l'hôte en cours d'exécution.
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc:ro \
-v /usr/bin/containerd:/usr/bin/containerd:ro \
-v /usr/bin/runc:/usr/bin/runc:ro \
-v /usr/lib/systemd:/usr/lib/systemd:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker-bench-security
N'oubliez pas d'ajuster les volumes partagés en fonction de votre système d'exploitation. Quelques exemples sont :
docker.service et docker.secret se trouvent dans le dossier /lib/systemd/system par défaut.docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc:ro \
-v /lib/systemd/system:/lib/systemd/system:ro \
-v /usr/bin/containerd:/usr/bin/containerd:ro \
-v /usr/bin/runc:/usr/bin/runc:ro \
-v /usr/lib/systemd:/usr/lib/systemd:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker-bench-security
Docker Desktop sur macOS n'a pas /usr/lib/systemd ni les binaires Docker mentionnés ci-dessus.sudo touch /etc/hostname
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker-bench-security
Docker bench nécessite Docker 1.13.0 ou ultérieur pour s'exécuter.
Notez que lorsque les distributions ne contiennent pas auditctl, les tests d'audit vérifieront /etc/audit/audit.rules pour voir si une règle est présente à la place.
-b optionnel Ne pas imprimer les couleurs
-h optionnel Afficher ce message d'aide
-l FILE optionnel Journaliser la sortie dans FICHIER, à l'intérieur du conteneur si exécuté avec docker
-u USERS optionnel Liste séparée par des virgules des utilisateur(s) docker de confiance
-c CHECK optionnel Liste séparée par des virgules des identifiants de vérifications spécifiques
-e CHECK optionnel Liste séparée par des virgules des identifiants de vérifications spécifiques à exclure
-i INCLUDE optionnel Liste séparée par des virgules de motifs dans un nom de conteneur ou d'image à vérifier
-x EXCLUDE optionnel Liste séparée par des virgules de motifs dans un nom de conteneur ou d'image à exclure de la vérification
-t LABEL optionnel Liste séparée par des virgules d'étiquettes dans un conteneur ou une image à vérifier
-n LIMIT optionnel Dans la sortie JSON, lors du signalement des listes d'éléments (conteneurs, images, etc.), limiter le nombre d'éléments signalés à LIMITE. Par défaut 0 (aucune limite).
-p PRINT optionnel Désactiver l'impression des mesures de correction. Par défaut : imprimer les mesures de correction.
Par défaut, le script Docker Bench pour la sécurité exécutera tous les tests CIS disponibles et produira des journaux dans le dossier log du répertoire courant, nommés docker-bench-security.log.json et docker-bench-security.log.
Si le conteneur docker est utilisé, les fichiers journaux seront créés à l'intérieur du conteneur à l'emplacement /usr/local/bin/log/. Si vous souhaitez y accéder depuis l'hôte après l'exécution du conteneur, vous devrez monter un volume pour les stocker.
Les vérifications basées sur CIS sont nommées check_<section>_<numéro>, par ex. check_2_6 et les vérifications contribuées par la communauté sont nommées check_c_<numéro>.
sh docker-bench-security.sh -c check_2_2 exécutera uniquement la vérification 2.2 S'assurer que le niveau de journalisation est défini sur 'info'.
sh docker-bench-security.sh -e check_2_2 exécutera toutes les vérifications disponibles sauf 2.2 S'assurer que le niveau de journalisation est défini sur 'info'.
sh docker-bench-security.sh -e docker_enterprise_configuration exécutera toutes les vérifications disponibles sauf le groupe docker_enterprise_configuration
sh docker-bench-security.sh -e docker_enterprise_configuration,check_2_2 exécutera toutes les vérifications disponibles sauf le groupe docker_enterprise_configuration et 2.2 S'assurer que le niveau de journalisation est défini sur 'info'
sh docker-bench-security.sh -c container_images,container_runtime exécutera uniquement les vérifications container_images et container_runtime
sh docker-bench-security.sh -c container_images -e check_4_5 exécutera uniquement les vérifications container_images sauf 4.5 S'assurer que la confiance du contenu pour Docker est activée
Notez que lors de la soumission de vérifications, fournissez des informations expliquant pourquoi il s'agit d'un test raisonnable à ajouter et veuillez inclure une documentation officielle vérifiant ces informations.