TL; DR Kubernetes позволяет всем контейнерам получать доступ ко всем другим контейнерам всего кластера, это, по-видимому, значительно увеличивает риски безопасности. Как смягчить?Как улучшить безопасность Kubernetes, особенно inter-Pods?
В отличие от Docker, где один обычно только позволит сетевое соединение между контейнерами, которые должны взаимодействовать (через --link
), каждый Pod на Kubernetes может получить доступ ко всем другим Бобы на этом кластера.
Это означает, что для стандартного Nginx + PHP/Python + MySQL/PostgreSQL, запущенного на Kubernetes, скомпрометированный Nginx сможет получить доступ к базе данных.
Люди использовали для запуска все те, что были на одной машине, но у этой машины были бы серьезные периодические обновления (больше, чем контейнеры) и SELinux/AppArmor для серьезных людей.
Можно немного снизить риски, если каждый проект (если у вас есть различные независимые веб-сайты, например) запускается каждый в своем кластере, но это кажется расточительным.
Текущий Kubernetes security представляется очень неполным. Есть ли способ обеспечить достойную безопасность для производства?
звучит как работа для брандмауэра – hanshenrik
@hanshenrik IP-адреса назначаются динамически Кубернете. Можно заставить данный IP-адрес, но это не предназначено для такого использования. Кроме того, большинство поставщиков облачных вычислений Кубернете не могут предоставить доступ к этому. – Wernight
На стороне заметьте, что контейнеры Docker на одном и том же хосте могут обращаться друг к другу независимо от того, связаны ли они, если вы не запустите демон с -icc = false. –