
Я запускаю minikube на хосте MacOSX с гипервизором VirtualBox. Он делит папку (/Users) с хостом. Зачем и насколько это безопасно, достаточно ли безопасно для запуска моего кластера в сети?
Полагаю, сложно выйти из контейнера, затем из модуля, а затем из виртуальной машины, но я просто вошел туда minikube ssh
и не знал об общей папке и о том, что оболочка позволяет мне исследовать хост.
решение1
Нет, это небезопасно. Представьте себе, что у вас есть модуль, развернутый с образом контейнера, который был создан с директивой USER daemon в Dockerfile, которая заставляет контейнер работать под пользователем daemon. Что, если злоумышленник получит доступ к вашему реестру образов и отправит другой образ под тем же тегом? Образ злоумышленника настроен на запуск от имени пользователя root. Когда Kubernetes планирует новый экземпляр вашего модуля, Kubelet загрузит образ злоумышленника и запустит любой код, который он в него поместит. Хотя контейнеры в основном изолированы от хост-системы, запуск их процессов от имени root по-прежнему считается плохой практикой. Например, когда каталог хоста монтируется в контейнер, если процесс, запущенный в контейнере, запущен от имени root, он имеет полный доступ к смонтированному каталогу, тогда как если он запущен от имени non-root, он не будет иметь полного доступа к смонтированному каталогу. Чтобы предотвратить сценарий атаки, описанный ранее, вы можете указать, что контейнер модуля должен запускаться от имени пользователя non-root, как показано в следующем листинге.
apiVersion: v1
kind: Pod
metadata:
name: pod-run-as-non-root
spec:
containers:
- name: main
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
runAsNonRoot: true