В среде Kubernetes я предполагаю, что пользователю root не должно быть разрешено по умолчанию снижать риск в случае, если хостовая ОС была доступна изнутри контейнера. Эту настройку следует выполнить, прописав в PodSecurityPolicy.
Учитывая это, я просто задаюсь вопросом: почему мы можем использовать пользователя root для запуска контейнеров в публичных облачных сервисах Kubernetes, таких как EKS, AKE и GKE? Есть ли у них еще один уровень мер безопасности, чтобы предотвратить взлом контейнеров злоумышленниками?
решение1
Даже если существует вероятность того, что контейнеризованный процесс получит доступ к хостовой ОС из-за неисправленной уязвимости и, таким образом, получит полный контроль над системой, поскольку он работает как root, я считаю, что публичные облака предпочитают не применять это по умолчанию, поскольку многие известные программные пакеты имеют своиосновной процесс выполняется как root- например, служба nginx использует основной процесс-демон, работающий как root
, который, в свою очередь, порождает рабочие процессы, работающие как www-data
для повышения безопасности.
решение2
Пользователю root разрешено выполнять любые действия в системе Linux, включая запуск контейнеров Docker. Невозможно запретить пользователю root запускать контейнеры Docker. Вместо этого можно ограничить доступ пользователю root и использовать sudo, чтобы разрешить пользователям, не являющимся root, выполнять определенные действия в системе.
Однако в данном случае Docker
это не имеет большого значения, потому что:
Группа docker предоставляет привилегии, эквивалентные пользователю root. Подробности о том, как это влияет на безопасность вашей системы, см.Поверхность атаки Docker Daemon.
управлять-docker-как-не-root-пользователь
Таким образом, любой пользователь Linux, имеющий разрешение на выполнение команд Docker, может получить права root в системе.
Привилегии root внутри контейнера не являются проблемой, поскольку Docker — это технология виртуализации на уровне ОС. Пользователь root внутри контейнера не имеет доступа к базовой ОС, на которой запущен демон docker.