Есть ли реальное преимущество в добавлении пользователя в docker
группу по сравнению с предоставлением ему sudo
доступа к хосту?
Если говорить длинно, то я пишу руководство, показывающее, как члены группы docker
могут напрямую взаимодействовать (т. е. без использования sudo
) с сервером Docker через сокет домена Unix, который dockerd
прослушивает сервер.
Однако, предоставляя непривилегированному пользователю право создавать произвольные контейнеры, кажется, что пользователь получаетэффективныйroot-доступ к хосту: например, таким образом становится довольно легко изменять хостовую fs через привязку монтирования. Или взаимодействовать с ядром через procfs
/ sysfs
. Так в чем смысл помещать кого-то в docker
группу, а не предоставлять этому пользователю root-доступ к системе?
решение1
Или пользователь может простозагрузить удобный контейнер Docker, который переносит их прямо в оболочку root.
Предоставление доступа к сокету Docker действительно фактически гарантирует возможность повышения привилегий.
Здесь важно объявить о своих намерениях. Вы помещаете кого-то в docker
группу, чтобы они могли запускать контейнеры без необходимости sudo
постоянно запускать каждую команду. Вы помещаете кого-то, sudoers
когда хотите, чтобы они могли sudo
и запускать любую команду как root.
Если вы не хотите предоставлять доступ к сокету Docker случайным лицам, вам наверняка следует использовать систему оркестровки, например OpenShift или Kubernetes.