Любой момент запуска контейнеров без полномочий 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.