Требуется ли проверка подлинности для служб RESTful, взаимодействующих друг с другом в кластере Kubernetes?
У нас есть микросервисная архитектура, и есть REST-сервисы, взаимодействующие друг с другом через HTTP. Все эти сервисы размещены в кластере Kubernetes. Нужно ли нам иметь явную аутентификацию для такого взаимодействия сервисов, или Kubernetes обеспечивает достаточно безопасности для этого?
2 ответа
Kubernetes предоставляет только оркестровку для ваших предполагаемых приложений. Он помогает вам запускать, обновлять, масштабировать ваши сервисы и предоставляет способ доставки трафика внутри кластера. Большая часть безопасности Kubernetes связана с управлением трафиком и администрированием кластера на основе ролей.
Некоторые дополнительные инструменты, такие как Istio, могут обеспечить безопасную связь между модулями и некоторыми другими возможностями управления трафиком.
Приложения в модулях должны иметь свои собственные возможности обеспечения аутентификации и авторизации на основе локальных файлов / баз данных или сетевых служб, таких как LDAP или OpenID и т. Д.
Он основан исключительно на том, как вы проектируете, архитектор, как вы создаете SDD для вашей системы. При его разработке необходимо учитывать усиление безопасности и отдавать приоритет. Программное обеспечение и инструменты приносят свои функции, но важно то, как вы их адаптируете. Кубернетес не исключение.
Вы используете свои микро-сервисы по HTTP и в производственной системе, вы не можете поверить, что ваша система защищена, даже если она работает в кластере Kubernetes. Kubernetes предоставляет интересные возможности с точки зрения безопасности, такие как RBAC, CRD и т. Д., Как вы можете найти здесь, Kubernetes 1.8 Безопасность, рабочие нагрузки и глубина функций. Но, тем не менее, использование только этих функций недостаточно. Внутренние службы должны быть такими же безопасными, как и внешние. Ниже приведено несколько вещей, о которых вам следует позаботиться после запуска рабочей нагрузки в кластер kubernetes.
- Сканируйте все ваши образы докеров для тестирования уязвимостей.
- Используйте RBAC поверх ABAC и назначайте оптимальные привилегии соответствующим командам.
- Настройте контекст безопасности для модуля, на котором запущена ваша служба.
- Избегайте несанкционированного внутреннего доступа к служебным данным и защищайте все конечные точки микросервисов.
- Ключи шифрования должны вращаться в течение определенного периода времени.
- Хранилище данных, подобное etcd для вашего кластера kubernetes, должно быть защищено.
- Только админ должен иметь доступ к
kubectl
, - Используйте проверку на основе токенов и включите аутентификацию для всех вызовов API REST.
- Непрерывный мониторинг всех сервисов, журналов для анализа, проверки работоспособности, всех процессов, запущенных внутри контейнеров.
Надеюсь это поможет.