Наконец, вы так сильно любите Docker, что хотите перенести свои критически важные для бизнеса производственные системы с конфиденциальными данными клиентов в Docker Swarm. Некоторые, возможно, уже сделали это. Другая организация не может себе этого позволить из-за политики, запрещающей производственные процессы, работающие в режиме root.
Что может быть контрольным списком строительных блоков для рабочей среды Docker? Один не нуждается во всех из них, но все они должны быть важны для оценки.
Отказ от ответственности: я знаю, что есть политика SE, чтобы избежать «больших бесконечных списков», но я думаю, что этот контрольный список не может быть очень большим ... и в настоящее время бесконечным.
Итак - что это за строительные блоки?
- Если он еще не развернут, рассмотрите возможность запуска хост-системы Linux с расширенными настройками безопасности - усиленным ядром, SELinux и т. Д.
- Подумайте об использовании крошечного базового образа Docker, такого как alpine, busybox или даже нуля, например, начните с пустого базового образа
- Используйте настройки USER, отличные от root
- Тщательно оцените, чтобы еще больше сократить уже сжатый набор возможностей ядра, предоставленных контейнеру.
- Для запуска процесса рекомендуется иметь только один исполняемый двоичный файл на контейнер, в идеале статически связанный
- Те, кто хочет сломать вашу систему, чтобы получить доступ к оболочке, могут задаться вопросом, обнаружили ли они, что в вашем контейнере отключены все оболочки
- Монтируйте тома только для чтения там, где это возможно
Вопрос: что еще?
devsecops
?Consider using a tiny Docker base image, like alpine, busybox or even scratch e.g. start with an empty base image
повышает безопасность?Ответы:
Хост, на котором работают контейнеры
Запустите скамью безопасности докера на каждом узле, на котором запускаются докерские контейнеры https://github.com/docker/docker-bench-security
Выполнение следующей команды на узле, который запускает контейнеры Docker:
возвращает список проверок:
Цитата из репозитория README:
Некоторые из проблем, о которых сообщает стенд безопасности, можно решить, прочитав официальную статью о безопасности докера и сравнив ее с маркерами, определенными в вопросе, также важны следующие вещи:
DOCKER_CONTENT_TRUST
переменнойисточник
Докер все еще находится в разработке.
Как и в случае любых других программных ошибок в dev, могут быть добавлены небезопасные функции, могут быть недостатки архитектуры, которые ведут к нарушениям безопасности. Не стоит недооценивать это! Ваша система сегодня может быть полностью безопасной, но с патчем со следующей недели кто-то находит ошибку, пишет эксплойт, и вдруг ваша система становится широко открытой.
Если не требуется, не обновляйте до последней версии. Вместо этого используйте последнюю проверенную версию.
Докер это не виртуализация
Если кто-то сбегает из контейнера Docker, этот злоумышленник немедленно оказывается на реальной машине. Нет второго выхода, подобного виртуализации, который предотвратит нарушение.
Относитесь к контейнеру Docker как к любой другой программе. Запустите с минимально возможными правами пользователя, заблокируйте весь сетевой трафик, который не требуется, виртуализируйте весь хост Docker, если производительность позволяет.
Докер не имеет защиты
Какой бы код ни выполнялся внутри контейнеров Docker, он запускается без вопросов из Docker. Любой злоумышленник может просто установить свое программное обеспечение внутри контейнера, и Docker запустит его, как и любой другой код.
Помимо того, что вы упомянули в вопросе, рассмотрите возможность использования метрик и оповещений, чтобы получать уведомления, если какое-либо изображение Docker делает странные вещи. Есть ли внезапный, продолжающийся всплеск процессора? Программа внезапно сканирует сетевые порты? Есть ли подозрительный доступ к диску? Вы должны получить уведомление, если что-то из этого случится. Есть много инструментов для измерения этих вещей, вы должны их использовать.
источник
Докер изображения сам
Дополнительным вариантом является использование Clair .
источник
В дополнение к пунктам в этой теме; Следующее было бы моей рекомендацией:
источник
Если вы заполняете свою точку входа в докер
sed
командами, рассмотрите эту практику:Confd будет считывать данные из многих поддерживаемых хранилищ значений ключей и динамически отображать шаблоны конфигурации.
источник
Можно использовать A2D, чтобы превратить приложение в образ докера, принимая во внимание определенные вещи, например, не-root, разрешения, местоположение приложения:
возвращает:
источник