Docker Bench
Docker Bench
Qu’est-ce que Docker-bench ?
L’outil Docker-bench for Security est un script open source qui analyse de nombreuses bonnes pratiques standard lors du déploiement de conteneurs Docker dans un environnement de production. Les tests entièrement automatisés sont conçus pour localiser les problèmes avec votre configuration sur la base des normes CIS Docker Benchmark v1.3.1. Ces tests sont entièrement automatisés et permettent aux utilisateurs d’auto-évaluer les hôtes et les conteneurs docker où ils résident.
Conditions préalables
- Une instance de Docker en cours d’exécution sur votre serveur
- Un utilisateur administratif avec des autorisations élevées ou un utilisateur associé au groupe docker
- Docker 1.13.0≥ (Si une distribution n’utilise pas auditctl, les tests d’audit inclus vérifieront le fichier /etc/audit/audit.rules pour voir si une règle est présente à la place)
Installation
Il existe deux méthodes pour installer et exécuter Docker bench. La principale méthode consiste à utiliser la commande git clone pour répliquer le script localement, et la seconde consiste à exécuter une version conteneurisée du script.
Clone
Exécutez la commande git clone pour répliquer le script. Une fois téléchargé, cd dans le dossier cloné et exécutez le script.
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh
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/docker-bench-security
Conteneur Docker
Avertissement
Le script docker conteneurisé nécessite des privilèges élevés pour s’exécuter car il utilise le système de fichiers, le pid et les espaces de noms réseau de l’hôte, car les composants du benchmark s’appliqueront à l’hôte en cours d’exécution.
La deuxième méthode pour exécuter le script utilise un petit conteneur Docker préemballé. C’est le moyen le plus simple d’exécuter Docker Bench contre vos hôtes. L’ajustement des volumes partagés est également nécessaire en fonction du système d’exploitation sur lequel le script est exécuté*.
Construire l’image Docker
Les utilisateurs ont deux choix lors de la création de l’image docker, en utilisant git clone ou docker compound. Les deux méthodes sont indiquées ci-dessous.
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker-compose run --rm docker-bench-security
Lancer le script
sh docker-bench-security.sh
Options de scripts
docker-bench-security.sh -h
-b optional Do not print colors
-h optional Print this help message
-l FILE optional Log output in FILE, inside container if run using docker
-u USERS optional Comma delimited list of trusted docker user(s)
-c CHECK optional Comma delimited list of specific check(s) id
-e CHECK optional Comma delimited list of specific check(s) id to exclude
-i INCLUDE optional Comma delimited list of patterns within a container or image name to check
-x EXCLUDE optional Comma delimited list of patterns within a container or image name to exclude from check
-n LIMIT optional In JSON output, when reporting lists of items (containers, images, etc.), limit the number of reported items to LIMIT. Default 0 (no limit).
-p PRINT optional Disable the printing of remediation measures. Default: print remediation measures.
Par défaut, Docker Bench
exécutera tous les tests CIS disponibles. Cela produira deux journaux principaux dans un dossier de journaux dans le répertoire actuel. Vous trouverez ci-dessous les noms des journaux.
- docker-bench-security.sh.log.json
- docker-bench-security.sh.log.
Lorsque le conteneur docker est utilisé, les fichiers journaux seront créés à l’intérieur du conteneur à l’emplacement /usr/local/bin/log/
. Si les utilisateurs souhaitent y accéder à partir de l’hôte après l’exécution du conteneur, un volume de stockage mappé est requis.
Résultats
La sortie du script est divisée en cinq zones principales. Chaque section aborde un domaine de préoccupation différent.
- Configuration de l’hôte
- Configuration du démon Docker
- Fichiers de configuration du démon Docker
- Images de conteneur et fichiers de construction
- Exécution du conteneur
Dans chacun de ces domaines, les tests renverront l’un des trois résultats; Info, Avertissement ou Pass.
Après chaque vérification, un retour est fourni pour chacune des recommandations de configuration. Dans ces résultats, les utilisateurs peuvent tirer parti du document de référence d’origine pour remédier à tout problème.