
Docker Bench for Security — это скрипт, который проверяет десятки общепринятых лучших практик развёртывания контейнеров Docker в production.

Docker Bench for Security — это скрипт, который проверяет десятки общепринятых лучших практик по развертыванию контейнеров Docker в production. Все тесты автоматизированы и основаны на CIS Docker Benchmark v1.6.0.
Мы предоставляем эту утилиту с открытым исходным кодом, чтобы сообщество Docker могло легко самостоятельно оценивать свои хосты и контейнеры Docker на соответствие этому бенчмарку.
| Release | 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 |
Вы можете просто запустить этот скрипт с вашего базового хоста, выполнив:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh
Примечание:
jq— необязательная, но рекомендуемая зависимость.
У вас есть два варианта, если вы хотите собрать и запустить этот контейнер самостоятельно:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
Затем выполните соответствующую команду docker run, как указано ниже.
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker-compose run --rm docker-bench-security
Обратите внимание, что образ docker/docker-bench-security устарел и требуется ручная сборка. Смотрите #405 для получения дополнительной информации.
Обратите внимание, что этот контейнер запускается с большим количеством привилегий — разделяет файловую систему хоста, пространства идентификаторов процессов и сети, так как части бенчмарка применяются к работающему хосту.
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
Не забудьте настроить общие тома в соответствии с вашей операционной системой. Вот несколько примеров:
docker.service и docker.secret по умолчанию находятся в папке /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
Docker Desktop на macOS не содержит /usr/lib/systemd или указанных выше бинарных файлов Docker.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 требует Docker версии 1.13.0 или новее для работы.
Обратите внимание, что если в дистрибутивах отсутствует auditctl, тесты аудита вместо этого будут проверять /etc/audit/audit.rules на наличие правила.
-b optional Не выводить цвета
-h optional Вывести это справочное сообщение
-l FILE optional Записывать вывод в FILE, внутри контейнера при запуске через docker
-u USERS optional Разделенный запятыми список доверенных пользователей docker
-c CHECK optional Разделенный запятыми список идентификаторов конкретных проверок
-e CHECK optional Разделенный запятыми список идентификаторов проверок для исключения
-i INCLUDE optional Разделенный запятыми список шаблонов в имени контейнера или образа для проверки
-x EXCLUDE optional Разделенный запятыми список шаблонов в имени контейнера или образа для исключения из проверки
-t LABEL optional Разделенный запятыми список меток в контейнере или образе для проверки
-n LIMIT optional В JSON-выводе при отчете по спискам элементов (контейнеры, образы и т.д.) ограничить количество отображаемых элементов до LIMIT. По умолчанию 0 (без ограничений).
-p PRINT optional Отключить вывод мер по исправлению. По умолчанию: выводить меры по исправлению.
По умолчанию скрипт Docker Bench для безопасности выполняет все доступные тесты CIS и создает журналы в папке log из текущего каталога, с именами docker-bench-security.log.json и docker-bench-security.log.
Если используется Docker-контейнер, файлы журналов будут созданы внутри контейнера в расположении /usr/local/bin/log/. Если вы хотите получить к ним доступ с хоста после запуска контейнера, вам потребуется смонтировать том для их хранения.
Проверки на основе CIS называются check_<section>_<number>, например, check_2_6, а проверки, предоставленные сообществом, называются check_c_<number>.
sh docker-bench-security.sh -c check_2_2 выполнит только проверку 2.2 Убедитесь, что уровень журналирования установлен на 'info'.
sh docker-bench-security.sh -e check_2_2 выполнит все доступные проверки, кроме 2.2 Убедитесь, что уровень журналирования установлен на 'info'.
sh docker-bench-security.sh -e docker_enterprise_configuration выполнит все доступные проверки, кроме группы docker_enterprise_configuration.
sh docker-bench-security.sh -e docker_enterprise_configuration,check_2_2 выполнит все доступные проверки, кроме группы docker_enterprise_configuration и 2.2 Убедитесь, что уровень журналирования установлен на 'info'.
sh docker-bench-security.sh -c container_images,container_runtime выполнит только проверки container_images и container_runtime.
sh docker-bench-security.sh -c container_images -e check_4_5 выполнит только проверки container_images, кроме 4.5 Убедитесь, что доверие к содержимому Docker включено.
Обратите внимание: при отправке проверок предоставьте информацию о том, почему это разумный тест для добавления, и, пожалуйста, включите какую-либо официальную документацию, подтверждающую эту информацию.