База знаний LinxCloud Services

Настройка безопасности подов

Поды могут иметь доступ к различной информации и компонентам кластера Kubernetes. Также при определенных настройках подов сами поды и кластер Kubernetes, в котором они выполняются, могут быть уязвимы к атакам.

В кластере Kubernetes с помощью установленного Gatekeeper можно применять ограничения (constraints). Эти ограничения создаются на основе шаблонов ограничений (constraint templates). Вы можете создавать собственные шаблоны и ограничения.

Кроме того, кластеры Kubernetes Linx Cloud уже содержат преднастроенные шаблоны и ограничения, направленные на повышение безопасности эксплуатации развернутой рабочей нагрузки.

 

Преднастроенные шаблоны и ограничения Gatekeeper

Отключение или изменение этих шаблонов и ограничений может снизить безопасность кластера Kubernetes.

Ограничение host-namespaces

Описание:

Это ограничение запрещает запуск подов с опцией hostPID: true.

Если не запрещать запуск пода с этой опцией, то под получит следующие возможности:

  • Просмотр всех процессов запущенных на хосте.
  • Принудительное завершение любого процесса на хосте командой kill, отправленной из пода.
  • Чтение переменных окружения для каждого пода на хосте путем получения доступа к файлу /proc/[PID]/environ для каждого процесса.

Такие возможности очень широки и сами по себе считаются уязвимостями, так как могут привести к раскрытию чувствительных переменных окружения, манипулированию процессами и облегчению эксплуатации других уязвимостей.

Пример действия ограничения:

Манифест pod_namespace.yaml, не удовлетворяющий ограничению

 

При попытке применить такой манифест с помощью kubectl apply -f pod_namespace.yaml, будет выведено похожее сообщение о нарушении ограничения для создаваемого пода:

Error from server ([...] Sharing the host namespace is not allowed: nginx-host-namespace-disallowed): error when creating "pod_namespace.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [...] Sharing the host namespace is not allowed: nginx-host-namespace-disallowed

 

Под, нарушивший ограничение, не будет создан.

Ограничение host-filesystem

Описание:

Это ограничение запрещает монтировать в под директории хоста, на котором под выполняется. Таким образом, обеспечивается защита данных кластера, которые находятся на этом хосте.

Пример действия ограничения:

Манифест pod_filesystem.yaml, не удовлетворяющий ограничению

 

При попытке применить такой манифест с помощью kubectl apply -f pod_filesystem.yaml, будет выведено похожее сообщение о нарушении ограничения для создаваемого пода:

Error from server ([...] HostPath volume {"hostPath": {"path": "/tmp", "type": ""}, "name": "cache-volume"} is not allowed, pod: nginx-host-filesystem. Allowed path: [{"pathPrefix": "/tmp", "readOnly": true}]): error when creating "pod_filesystem.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [...] HostPath volume {"hostPath": {"path": "/tmp", "type": ""}, "name": "cache-volume"} is not allowed, pod: nginx-host-filesystem. Allowed path: [{"pathPrefix": "/tmp", "readOnly": true}]

 

Под, нарушивший ограничение, не будет создан.

Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!