Назад | Перейти на главную страницу

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

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

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

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

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

Мои идеи на данный момент:

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

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

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

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

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

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

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

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