Что такое безопасность сети контейнеров?
Безопасность сети контейнеров — это предложение расширенных сетевых служб контейнеров, которое обеспечивает расширенный контроль сетевого трафика между контейнерами. Безопасность сети контейнеров использует политики на основе Cilium, предлагая более детализированный и удобный подход к управлению сетевой безопасностью по сравнению с традиционными методами на основе IP-адресов.
Функции безопасности сети контейнеров
По состоянию на сегодняшний день первая функция, доступная в службе безопасности сети контейнеров, — это фильтрация полного доменного имени. Это позволяет определять политики безопасности сети на основе доменных имен, обеспечивая более детализированный и удобный подход к управлению сетевым трафиком.
Общие сведения о фильтрации полного доменного имени
Контейнерные среды представляют уникальные проблемы безопасности. Традиционные методы безопасности сети, часто зависящие от фильтрации на основе IP-адресов, могут стать громоздкими и менее эффективными по мере частого изменения IP-адресов. Кроме того, понимание шаблонов сетевого трафика и определение потенциальных угроз может быть сложным.
Фильтрация полного доменного имени обеспечивает эффективный и удобный подход к управлению политиками сети. Определив эти политики на основе доменных имен, а не IP-адресов, организации могут значительно упростить процесс управления политиками. Этот подход устраняет необходимость в частых обновлениях, которые обычно требуются при изменении IP-адресов, в результате снижения административного бремени и минимизации риска ошибок конфигурации.
В кластере Kubernetes IP-адреса pod часто могут изменяться, что затрудняет защиту модулей pod с помощью политик безопасности с помощью IP-адресов. Фильтрация полного доменного имени позволяет создавать политики уровня pod с помощью доменных имен, а не IP-адресов, что устраняет необходимость обновления политик при изменении IP-адреса.
Примечание.
Azure CNI с помощью Cilium и Kubernetes версии 1.29 или более поздней требуется для использования функций безопасности сети контейнеров для расширенных сетевых служб контейнеров.
Компоненты фильтрации полного доменного имени
Агент Cilium: агент Cilium является критически важным сетевым компонентом, который выполняется как daemonSet в кластерах Azure CNI, работающих под управлением Cilium. Он обрабатывает сети, балансировку нагрузки и сетевые политики для модулей pod в кластере. Для модулей pod с применением политик FQDN агент Cilium перенаправляет пакеты в агент безопасности ACNS для разрешения DNS и обновляет сетевую политику с помощью сопоставления FQDN-IP, полученных от агента безопасности ACNS.
Агент безопасности ACNS: агент безопасности ACNS запускается как DaemonSet в Azure CNI, на базе кластера Cilium с включенными расширенными службами сети контейнеров. Он обрабатывает разрешение DNS для модулей pod и при успешном разрешении DNS, он обновляет агент Cilium с полным доменным именем до сопоставлений IP-адресов.
Как работает фильтрация FQDN
Если включена фильтрация полного доменного имени, dns-запросы сначала оцениваются, чтобы определить, следует ли им разрешать доступ только к указанным доменным именам в соответствии с политикой сети. Агент Cilium помечает пакеты DNS-запросов, исходящие из модулей pod, перенаправляя их в агент безопасности ACNS. Это перенаправление происходит только для модулей pod, которые применяют политики полного доменного имени.
Затем агент безопасности ACNS решает, следует ли пересылать DNS-запрос на DNS-сервер на основе критериев политики. Если это разрешено, запрос отправляется на DNS-сервер и после получения ответа агент безопасности ACNS обновляет агент Cilium с сопоставлениями FQDN. Это позволяет агенту Cilium обновить сетевую политику в обработчике политик. На следующем рисунке показан высокоуровневый поток фильтрации полного доменного имени.
Ключевые преимущества
Управление масштабируемыми политиками безопасности. Администраторы кластера и безопасности не должны обновлять политики безопасности каждый раз, когда изменения IP-адреса делают операции более эффективными.
Улучшенное соответствие безопасности: фильтрация FQDN поддерживает модель безопасности "Нулевое доверие". Сетевой трафик ограничен доверенными доменами только для устранения рисков несанкционированного доступа.
Применение устойчивых политик. Агент безопасности ACNS, реализованный с фильтрацией полного доменного имени, гарантирует, что разрешение DNS продолжается без проблем, даже если агент Cilium исчезает, и политики продолжают применяться. Эта реализация критически гарантирует, что безопасность и стабильность поддерживаются в динамических и распределенных средах.
Рекомендации:
- Для функций безопасности сети контейнеров требуется Azure CNI с помощью Cilium и Kubernetes версии 1.29 и выше.
Ограничения:
- Политики полного доменного имени с подстановочными знаками частично поддерживаются. Это означает, что вы можете создавать политики, соответствующие определенным шаблонам с подстановочным знаком (например, .example.com), но для сопоставления всех доменов в поле нельзя использовать универсальный подстановочный знак ().
spec.egress.toPorts.rules.dns.matchPattern
Поддерживаемый шаблон:
*.example.com
— это позволяет трафику всех поддоменов в example.com.app*.example.com
— Это правило более конкретное и разрешает трафик только поддоменам, начинающимся с "app" в example.comНеподдерживаемый шаблон
*
Это пытается сопоставить любое доменное имя, которое не поддерживается.
- Фильтрация полного доменного имени в настоящее время не поддерживается в локальном DNS узла.
- Двойной стек не поддерживается.
- Имена служб Kubernetes не поддерживаются.
- Другие политики L7 не поддерживаются.
- Модули pod FQDN могут привести к снижению производительности при обработке более чем 1000 запросов в секунду.
- Образы контейнеров на основе Альпийской платформы могут столкнуться с проблемами разрешения DNS при использовании с политиками сети Cilium. Это связано с ограниченной итерацией домена поиска musl libc. Чтобы обойти эту проблему, явным образом определите все домены поиска в правилах DNS политики сети с помощью шаблонов подстановочных знаков, как показано в приведенном ниже примере.
rules:
dns:
- matchPattern: "*.example.com"
- matchPattern: "*.example.com.*.*"
- matchPattern: "*.example.com.*.*.*"
- matchPattern: "*.example.com.*.*.*.*"
- matchPattern: "*.example.com.*.*.*.*.*"
- toFQDNs:
- matchPattern: "*.example.com"
Цены
Внимание
Расширенные услуги контейнерной сети предоставляются на платной основе. Дополнительные сведения о ценах см. в разделе "Расширенные сетевые службы контейнеров" — цены.
Следующие шаги
Узнайте, как включить безопасность сети контейнеров в AKS.
Узнайте, как сообщество открытый код создает политики сети Cilium.
Дополнительные сведения о расширенных сетевых службах контейнеров для Служба Azure Kubernetes (AKS) см. в статье "Дополнительные сетевые службы контейнеров" для Служба Azure Kubernetes (AKS)?.
Изучите функции наблюдения за сетями контейнеров в расширенных сетевых службах контейнеров в разделе "Что такое наблюдаемость сети контейнеров?".
Azure Kubernetes Service