Я пытаюсь сделать докер на сервере более безопасным. Основная проблема заключается в том, что большинство людей говорят: «Если у человека есть доступ к докеру, он может быть и пользователем root» для нескольких администраторов, это не то, что вам нужно.
Чтобы уточнить, они могут использовать -v
и смонтировать /etc
на /mnt
в контейнере и измените теневой файл и получите доступ к хосту. Они могут использовать -d
, или привилегированный вариант, чтобы сделать больше.
В общем, есть несколько вещей, которые я хочу «попробовать» и ограничить.
--add-cap
-d
(определенные предметы?)Мои идеи на данный момент:
Необязательными элементами могут быть создание контейнеров при фиксации в коде git, и позволить «контролеру» проверять содержимое Dockerfile
и создать для них образ. Затем подпишите этот образ и разверните его автоматически. (но это больше не давало им большой свободы)
Кроме того, удаление переплета - не самое лучшее решение. Было бы намного проще, если бы у нас был плагин для докера, который говорит «вы можете монтировать только на /data
, как пользователь X ", где USER
в Dockerfile
это тот пользователь X.
Что-то вроде docker-novolume-plugin это уже хорошее начало для томов, хотя не ограничивает тома привязки.
В конце концов, возникает вопрос, как я могу позволить пользователям создавать / извлекать / запускать образы докеров как их собственный пользователь / докер и не иметь возможности рутировать систему. Не обязательно быть идеальным, пока работает.
Обеспечение docker
движок требует внимания ко многим различным аспектам, и глубокоэшелонированная защита всегда около слои безопасности.
Одно из перечисленных вами требований - ограничение полномочий пользователей docker
двигатель, который необходимо сделать, вероятно, является одним из самых важных, так как на данный момент docker
движок не реализует контроль авторизации.
Ваши альтернативы включают:
решения с закрытым исходным кодом, такие как Поворотный замок, проект, который реализует RBAC и управление политиками для доступа к docker
API
OpenShift Origin, проект с открытым исходным кодом, который реализует управление доступом на основе ролей в форме ограничения безопасности и детализированные политики авторизации. Его довольно легко развернуть, и он очень поможет получить готовое решение.
Я также предлагаю изучить различные операционные системы docker
Engine может быть развернут на ОС общего назначения, и будет советовать использовать не ОС общего назначения, а специализированную, такую как Атомный. И Atomic, и OpenShift вместе гарантируют, что вы также сможете:
docker
мир в целом.docker
разъем, он будет контролировать, обмен файловыми дескрипторами между контейнерами разрешено, он может назначать разные уровни MCS для каждого контейнера / группы контейнеров, чтобы изолировать их от хоста и от других контейнеров.