
Das Docker Bench for Security ist ein Skript, das Dutzende gängiger Best Practices für die Bereitstellung von Docker-Containern in der Produktion überprüft.

Der Docker Bench for Security ist ein Skript, das Dutzende gängiger Best Practices für die Bereitstellung von Docker-Containern in der Produktion überprüft. Die Tests sind alle automatisiert und basieren auf dem CIS Docker Benchmark v1.6.0.
Wir stellen dies als Open-Source-Dienstprogramm zur Verfügung, damit die Docker-Community eine einfache Möglichkeit hat, ihre Hosts und Docker-Container selbst gegen diesen Benchmark zu bewerten.
| 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 |
Sie können dieses Skript einfach von Ihrem Basishost aus ausführen, indem Sie Folgendes eingeben:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh
Hinweis:
jqist eine optionale, aber empfohlene Abhängigkeit.
Sie haben zwei Möglichkeiten, wenn Sie diesen Container selbst erstellen und ausführen möchten:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
Anschließend einen entsprechenden docker run-Befehl wie unten angegeben ausführen.
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker-compose run --rm docker-bench-security
Bitte beachten Sie, dass das docker/docker-bench-security-Image veraltet ist und ein manueller Build erforderlich ist. Weitere Informationen finden Sie unter #405.
Beachten Sie, dass dieser Container mit vielen Berechtigungen ausgeführt wird – er teilt das Dateisystem, die PID- und die Netzwerk-Namespaces des Hosts, da Teile des Benchmarks auf den laufenden Host angewendet werden.
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
Vergessen Sie nicht, die gemeinsam genutzten Volumes entsprechend Ihrem Betriebssystem anzupassen. Einige Beispiele sind:
docker.service und docker.secret standardmäßig im Ordner
/lib/systemd/system.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
/etc/hostname fehlt unter macOS, daher muss sie zuerst erstellt werden. Außerdem hat Docker Desktop unter macOS weder /usr/lib/systemd noch die oben genannten Docker-Binärdateien.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 benötigt Docker 1.13.0 oder höher, um ausgeführt zu werden.
Beachten Sie, dass, wenn Distributionen kein auditctl enthalten, die Audit-Tests stattdessen /etc/audit/audit.rules auf das Vorhandensein einer Regel überprüfen.
-b optional Farben nicht ausgeben
-h optional Diese Hilfemeldung anzeigen
-l DATEI optional Ausgabe in DATEI protokollieren, bei Verwendung mit Docker innerhalb des Containers
-u BENUTZER optional Kommagetrennte Liste vertrauenswürdiger Docker-Benutzer
-c CHECK optional Kommagetrennte Liste spezifischer Check-IDs
-e CHECK optional Kommagetrennte Liste spezifischer Check-IDs, die ausgeschlossen werden sollen
-i EINSCHLUSS optional Kommagetrennte Liste von Mustern innerhalb eines Container- oder Imagenamens, die überprüft werden sollen
-x AUSSCHLUSS optional Kommagetrennte Liste von Mustern innerhalb eines Container- oder Imagenamens, die von der Überprüfung ausgeschlossen werden sollen
-t LABEL optional Kommagetrennte Liste von Labels innerhalb eines Containers oder Images, die überprüft werden sollen
-n LIMIT optional Bei JSON-Ausgabe, wenn Listen von Elementen (Container, Images usw.) gemeldet werden, die Anzahl der gemeldeten Elemente auf LIMIT begrenzen. Standard: 0 (keine Begrenzung).
-p DRUCK optional Deaktivieren der Ausgabe von Abhilfemaßnahmen. Standard: Abhilfemaßnahmen ausgeben.
Standardmäßig führt das Docker Bench for Security-Skript alle verfügbaren CIS-Tests aus und erstellt
Protokolle im Protokollordner des aktuellen Verzeichnisses mit den Namen docker-bench-security.log.json und
docker-bench-security.log.
Wenn der Docker-Container verwendet wird, werden die Protokolldateien im Container unter /usr/local/bin/log/ erstellt. Wenn Sie nach der Ausführung des Containers vom Host aus auf sie zugreifen möchten, müssen Sie ein Volume für deren Speicherung einbinden.
Die CIS-basierten Checks heißen check_<section>_<number>, z. B. check_2_6, und von der Community beigetragene Checks heißen check_c_<number>.
sh docker-bench-security.sh -c check_2_2 führt nur den Check 2.2 Ensure the logging level is set to 'info' aus.
sh docker-bench-security.sh -e check_2_2 führt alle verfügbaren Checks außer 2.2 Ensure the logging level is set to 'info' aus.
sh docker-bench-security.sh -e docker_enterprise_configuration führt alle verfügbaren Checks außer der Gruppe docker_enterprise_configuration aus.
sh docker-bench-security.sh -e docker_enterprise_configuration,check_2_2 führt alle verfügbaren Checks außer der Gruppe docker_enterprise_configuration und 2.2 Ensure the logging level is set to 'info' aus.
sh docker-bench-security.sh -c container_images,container_runtime führt nur die Checks container_images und container_runtime aus.
sh docker-bench-security.sh -c container_images -e check_4_5 führt nur die Checks container_images außer 4.5 Ensure Content trust for Docker is Enabled aus.
Beachten Sie, dass Sie beim Einreichen von Checks Informationen darüber angeben, warum es sich um einen sinnvollen Test handelt, und fügen Sie bitte eine offizielle Dokumentation zur Bestätigung dieser Informationen bei.