Любой момент запуска контейнеров без полномочий root в openshift.

Документация openshift гласит:

Для дальнейшей защиты систем RHCOS в кластерах OpenShift Container Platform большинство контейнеров, за исключением тех, которые управляют или контролируют саму хост-систему, должны запускаться от имени пользователя без полномочий root. Снижение уровня привилегий или создание контейнеров с наименьшим количеством привилегий рекомендуется для защиты ваших собственных кластеров платформы контейнеров OpenShift.

Рассматриваемый контейнер будет работать как непривилегированный, доступный только для чтения, в среде выполнения cri-o, с переназначением UID, selinux и профилем secomp.

На данном этапе мне интересно, является ли запуск контейнеров от имени пользователя без полномочий root возвратом карго-культа со времен, когда демон докера работал с правами root.

Если контейнер уже работает со всеми этими ограничениями, есть ли смысл работать от имени пользователя без полномочий root?

1 ответ

Запуск контейнера без root с правами root внутри контейнера

По умолчанию выполняется запуск от имени пользователя root:

      podman run --user 0:0 ...

(Добавление--user 0:0не требуется, поскольку это значение по умолчанию)

Если вы не использовали параметр командной строки, пользователь root будет сопоставлен с UID пользователя на хосте.

Пользователь root также имеет разрешения на запускsetuid()изменить его эффективный UID, чтобы он имел доступ ко всем UID пользователя (т.е. обычному UID пользователя и всем дополнительным UID из файла /etc/subuid).

Запуск контейнера без root-прав от имени пользователя без полномочий root внутри контейнера

Запуск от имени пользователя без полномочий root (например, пользователя с UID=1000, GID=1000):

      podman run --user 1000:1000 ...

Если вы не использовали параметры командной строки--uidmapили--userns=keep-id, пользователь без полномочий root будет сопоставлен не с UID пользователя на хосте, а с одним из дополнительных UID из UID пользователя в файле /etc/subuid.

Сравнение двух альтернатив (т.е. корневого и некорневого)

В случае, если у Podman будет уязвимость безопасности, было бы безопаснее, если бы процесс контейнера запускался от имени пользователя без полномочий root, который не сопоставлен с UID пользователя на хосте.

Если такой контейнерный процесс выйдет из контейнера, он будет иметь доступ к файлу только как один из дополнительных UID пользователей. У процесса не будет доступа к каталогу ~/.ssh (который обычно имеет разрешениеchmod 700 ~/.ssh).

Дополнительное чтение

В блоге Red Hat Дэна Уолша «Запуск Podman без root-доступа от имени пользователя без полномочий root» объясняется, почему безопаснее запускать контейнеры без root-прав от имени пользователя без полномочий root, чем от имени пользователя root.

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