Как обезопасить хост докера, чтобы не допустить рутирования

Я пытаюсь сделать докер на сервере более безопасным. Основная проблема заключается в том, что большинство людей говорят, что "если у человека есть доступ к докеру, он тоже может быть пользователем root" для нескольких администраторов это совсем не то, что вы хотели бы.

Чтобы уточнить, они могут использовать -v и смонтировать /etc на /mnt в контейнере и измените теневой файл и получите доступ к хосту. Они могут использовать -dили привилегированный вариант, чтобы сделать больше тоже.

В общем, есть несколько вещей, которые я хочу "попробовать" и ограничить.

  1. Объемные крепления
  2. привилегированный
  3. --add-cap
  4. -d (определенные предметы?)

Мои идеи пока:

  • Присвойте псевдоним bash-скрипту для docker, используйте на нем sudo и повторно выведите все, что они не должны делать.
  • Включите удаленный API, защитите его и, возможно, измените прокси с помощью nginx и regex в nginx, чего они не должны делать.
  • Использовать другие инструменты? Mesos/Marathon/Swarm/ Верфь / Безотносительно

Необязательными элементами могут быть контейнеры для коммита в git-коде и возможность "проверки" проверять содержимое Dockerfile и создать образ для них. Затем подпишите это изображение и разверните его автоматически. (но это не дало бы им больше свободы)

Кроме того, удаление объема связывания не является самым хорошим. Было бы намного проще, если бы у нас был плагин для докера, который говорит: "Вы можете монтировать только на /data, как пользователь X", где USER в Dockerfile это пользователь X.

Что-то вроде docker-novolume-plugin уже является хорошим началом для томов, однако не ограничивает объемы связывания.

В конце концов, вопрос будет в том, как я могу позволить пользователям создавать / извлекать / запускать образы докеров как своих собственных пользователей / докеров и не иметь возможности рутировать систему. Не должно быть идеальным, пока оно работает.

1 ответ

Решение

Обеспечение docker Движок требует уделять внимание многим различным аспектам, а глубокая защита всегда связана с уровнями безопасности.

Одно из перечисленных вами требований ограничивает права пользователей docker двигатель, чтобы сделать, вероятно, является одним из самых важных, так как, на данный момент, docker Движок не реализует контроль авторизации.

Ваши альтернативы включают в себя:

  • решения с закрытым исходным кодом, такие как Twistlock, проект, который реализует RBAC и управление политиками для доступа к docker API

  • OpenShift Origin, проект с открытым исходным кодом, который реализует управление доступом на основе ролей в форме ограничений безопасности и детальных политик авторизации. Он довольно прост в развертывании и очень поможет получить готовое решение.

Я также предложил бы изучить различные операционные системы docker Движок может быть развернут на и будет рекомендовать использовать не ОС общего назначения, а специализированную, такую ​​как Atomic. И Atomic, и OpenShift вместе гарантируют, что вы также сможете:

Другие вопросы по тегам