#security #docker #containers
#Безопасность #docker #контейнеры
Вопрос:
Как обеспечить безопасность контейнера docker, особенно при использовании сторонних контейнеров или базовых образов?
- Правильно ли, что при использовании базового образа он может инициировать какие-либо службы или монтировать произвольные разделы файловой системы хоста под капотом и потенциально отправлять конфиденциальные данные злоумышленнику?
- Итак, если я использую сторонний контейнер, какой файл Dockerfile подтверждает безопасность контейнера, должен ли я просмотреть весь связанный список базовых изображений (потенциально очень длинный), чтобы убедиться, что контейнер действительно безопасен и выполняет то, что он намеревается делать?
Как обеспечить надежность контейнера docker систематическим и определенным образом?
Ответ №1:
Рассмотрите изображения Docker, похожие на мобильные приложения для Android / iOS. Вы никогда не можете быть уверены, что они безопасны для запуска, но вероятность того, что они безопасны, выше, если они получены из официального источника, такого как Google Play или App Store. Более конкретно, изображения Docker, поступающие из Docker hub, проходят проверку безопасности, детали которой пока не разглашаются. Таким образом, вероятность вредоносного образа, извлеченного из Docker hub, редка. Однако никогда нельзя быть достаточно параноидальным, когда дело доходит до безопасности. Есть два способа убедиться, что все изображения, поступающие из любого источника, безопасны:
- Проактивная безопасность: проверка исходного кода безопасности каждого файла Dockerfile, соответствующего образу Docker, включая базовые изображения, о которых вы уже говорили
- Реактивная безопасность: запустите Docker bench, с открытым исходным кодом от Docker Inc., который запускается как привилегированный контейнер для поиска известных вредоносных действий контейнеров во время выполнения.
В общем, по возможности используйте образы Docker из Docker hub. Выполните проверку кода безопасности файлов DockerFiles. Запустите Docker bench или любой другой аналогичный инструмент, который может перехватывать вредоносные действия, выполняемые контейнерами.
Ссылки:
- Проверка безопасности Docker, ранее известная как Project Nautilus: https://blog.docker.com/2016/05/docker-security-scanning /
- Стенд Docker: https://github.com/docker/docker-bench-security
- Рекомендации для Dockerfile: https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices /
Ответ №2:
Образы Docker являются автономными, что означает, что, если вы не запустите их внутри контейнера с томами и сетевым режимом, они не смогут получить доступ к какой-либо сети или стеку памяти вашего хоста.
Например, если я запускаю изображение внутри контейнера с помощью команды:
docker run -it --network=none ubuntu:16.04
Это запустит контейнер docker ubuntu: 16.04 без подключения к хранилищу хоста и не будет совместно использовать сетевой стек с хостом. Вы можете проверить это, запустив ifconfig
внутри контейнера и на вашем хосте и сравнив их.
Что касается проверки того, что делает image / base-image, вывод из сказанного выше не наносит вреда вашему хосту (если вы не подключаете свой /improtant/ directory_on_host к контейнеру и после запуска контейнера он их удаляет).
Вы можете проверить, что изображение / базовый образ сохраняется после запуска, проверив их dockerfile(s)
или docker-compose
.yml
файлы.