Istio — это сервисная сеть с открытым исходным кодом, которая прозрачно накладывается на существующие распределённые приложения. Мощные функции Istio обеспечивают единый и более эффективный способ защиты, подключения и мониторинга сервисов. Istio — это путь к балансировке нагрузки, межсервисной аутентификации и мониторингу без необходимости вносить изменения в код сервисов.
- Безопасная связь между сервисами в кластере с взаимным TLS-шифрованием, надёжной аутентификацией и авторизацией на основе идентификационных данных.
- Автоматическая балансировка нагрузки для трафика HTTP, gRPC, WebSocket и TCP.
- Точное управление поведением трафика с помощью расширенных правил маршрутизации, повторных попыток, аварийного переключения и имитации сбоев.
- Подключаемый уровень политик и API конфигурации, поддерживающие контроль доступа, ограничения скорости и квоты.
- Автоматические показатели, журналы и трассировки для всего трафика внутри кластера, включая входящий и исходящий трафик кластера.
В своей работе istio использует прокси сервера для перехвата всего трафика приложений.
Существуют два режима работы istio:
- Sidecar - когда в под приложения добавляются один (входящий трафик) или два (плюс исходящий трафик) контейнера с прокси серверами Envoy.
- Ambient - устанавливается один прокси сервер на каждую ноду кластера для проксирования трафика на 4-м уровне. И иногда дополнительные прокси сервера для работы на 7-м уровне для определенных namespaces.
Первый вариант является классическим для istio. Но потребляет больше ресурсов кластера и вносит большие задержки в трафик. Второй вариант более современный. Но из-за своей новизны менее распространен.
Различия между режимами хорошо описаны в документации.
В дальнейшем мы будем рассматривать только Ambient режим.
Istio разделяет свои функции на два отдельных уровня. На базовом уровне ztunnel обеспечивает безопасную маршрутизацию и защиту трафика с нулевым доверием. При необходимости пользователи могут включить прокси-серверы L7 для доступа ко всему набору функций Istio. Прокси-серверы L7, хотя и более ресурсоёмкие, чем только ztunnel, по-прежнему работают как фоновый компонент инфраструктуры, не требуя внесения изменений в код приложений пользователей.
Термин «безопасное наложение» используется для обозначения набора сетевых функций уровня L4, реализованных в mesh сети с помощью прокси-сервера ztunnel. На транспортном уровне это реализовано с помощью протокола туннелирования трафика на основе HTTP CONNECT под названием HBONE.
Основным компонентом istio data plane является istiod. Считается компонентом с высокими привилегиями, как и сам сервер API Kubernetes.
- У него есть высокие привилегии Kubernetes RBAC, обычно включающие доступ к Secret для чтения и доступ для записи в webhook.
- Действуя в качестве центра сертификации, он может предоставлять произвольные сертификаты.
- Выступая в качестве плоскости управления XDS, он может программировать прокси-серверы для выполнения произвольных действий.
Таким образом, безопасность кластера тесно связана с безопасностью Istiod. Соблюдение рекомендаций по обеспечению безопасности Kubernetes при доступе к Istiod имеет первостепенное значение.
Более глубокую информацию по работе компонент Istio мы рассмотрим по мере изучения конкретных возможностей.