Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поскольку организации все чаще полагаются на службу Azure Kubernetes Service (AKS) для запуска контейнеризованных рабочих нагрузок, обеспечение безопасности сетевого трафика между приложениями и службами становится актуальным, особенно в регулируемых или чувствительных к безопасности средах. Шифрование данных во время передачи с помощью WireGuard защищает их при перемещении между подами и узлами, снижая риски перехвата или изменения. WireGuard известен своей простотой и надежной криптографией, предлагает мощное решение для защиты связи в кластерах AKS.
Шифрование WireGuard для AKS является частью набора функций Advanced Container Networking Services (ACNS), и его реализация основана на Cilium.
Это важно
Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:
Область шифрования WireGuard
Шифрование через передачу WireGuard в AKS предназначено для защиты определенных потоков трафика в кластере Kubernetes. В этом разделе описывается, какие типы трафика шифруются и которые в настоящее время не поддерживаются через расширенные сетевые службы контейнеров (ACNS).
Поддерживаемые и зашифрованные потоки трафика:
- Трафик между подами на разных узлах: трафик, покидающий под с одного узла и направляющийся в под на другом узле.
Неподдерживаемые или незашифрованные потоки трафика
- Трафик pod с тем же узлом: трафик между модулями pod на одном узле
- Сетевой трафик узла: трафик, созданный самим узлом, предназначенным для другого узла.
Обзор архитектуры
Шифрование WireGuard опирается на Azure CNI с поддержкой cilium, чтобы обеспечить связь между узлами в распределенной системе. В архитектуре используется выделенный агент WireGuard, который управляет ключами, конфигурацией интерфейса и динамическими обновлениями одноранговых узлов. В этом разделе предпринята попытка дать подробное объяснение
Агент WireGuard
При запуске агент Cilium оценивает свою конфигурацию, чтобы определить, включена ли шифрование. При выборе WireGuard в качестве режима шифрования агент инициализирует выделенную подсистему WireGuard. Агент wireguard отвечает за настройку и инициализацию компонентов, необходимых для применения шифрования WireGuard.
Создание ключей
Основным требованием для защиты связи является создание пар криптографических ключей. Каждый узел в кластере Kubernetes автоматически создает уникальную пару ключей WireGuard на этапе инициализации и распределяет его открытый ключ с помощью заметки "network.cilium.io/wg-pub-key" в пользовательском объекте ресурса Kubernetes CiliumNode. Пары ключей хранятся в памяти и поворачиваются каждые 120 секунд. Закрытый ключ служит конфиденциальным удостоверением узла. Открытый ключ делится с одноранговыми узлами в кластере для шифрования и расшифровки трафика от и к конечным точкам, управляемым Cilium. Эти ключи полностью управляются Azure, а не клиентом, обеспечивая безопасную и автоматическую обработку без необходимости вмешательства вручную. Этот механизм гарантирует, что только узлы с проверенными учетными данными могут участвовать в зашифрованной сети.
Создание интерфейса
После завершения процесса создания ключей агент WireGuard настраивает выделенный сетевой интерфейс (cilium_wg0). Этот процесс включает создание и настройку интерфейса с ранее созданным закрытым ключом.
Сравнение с шифрованием виртуальной сети
Azure предлагает несколько вариантов защиты транзитного трафика в AKS, включая шифрование на уровне виртуальной сети и шифрование на основе WireGuard. Хотя оба подхода повышают конфиденциальность и целостность сетевого трафика, они отличаются в области, гибкости и требованиях к развертыванию. В этом разделе показано, когда следует использовать каждое решение.
Используйте шифрование виртуальной сети, когда
Требуется полное шифрование сетевого уровня для всего трафика в виртуальной сети: Шифрование виртуальной сети гарантирует, что весь трафик независимо от рабочей нагрузки или уровня оркестрации автоматически шифруется по мере прохождения виртуальной сети Azure.
Вам нужна минимальная нагрузка на производительность: Шифрование виртуальной сети использует аппаратное ускорение в поддерживаемых типах виртуальных машин, перемещая обработку шифрования с ОС на базовое оборудование. Эта конструкция обеспечивает высокую пропускную способность с низким потреблением ЦП.
Все виртуальные машины поддерживают шифрование виртуальной сети: Шифрование виртуальной сети зависит от номеров SKU виртуальных машин, поддерживающих необходимое аппаратное ускорение. Если ваша инфраструктура полностью состоит из поддерживаемых SKU, шифрование виртуальной сети можно включить без проблем.
Конфигурации сети AKS поддерживают шифрование виртуальной сети: Шифрование виртуальной сети имеет некоторые ограничения, когда дело доходит до сети pod aks. Дополнительные сведения см. в поддерживаемых сценариях шифрования виртуальной сети
Используйте шифрование WireGuard, когда
Необходимо убедиться, что трафик вашего приложения шифруется на всех узлах; шифрование виртуальной сети не шифрует трафик между узлами на одном физическом хосте.
Вы хотите объединить шифрование в нескольких облачных или гибридных средах: WireGuard предлагает облачное решение, обеспечивающее согласованное шифрование между кластерами, работающими в разных облачных поставщиках или локальной среде.
Вам не нужно или не нужно шифровать весь трафик в виртуальной сети: WireGuard обеспечивает более целевую стратегию шифрования, идеально подходит для защиты конфиденциальных рабочих нагрузок, не вызывая затраты на шифрование всего трафика.
Некоторые номера SKU виртуальных машин не поддерживают шифрование виртуальной сети: WireGuard реализуется в программном обеспечении и работает независимо от поддержки оборудования виртуальных машин, что делает его практическим вариантом для разнородных сред.
Соображения & ограничения
• WireGuard не соответствует FIPS . • Шифрование WireGuard не применяется к модулям pod, использующим сеть узлов (spec.hostNetwork: true), так как эти модули pod используют удостоверение узла вместо наличия отдельных удостоверений.
Это важно
Шифрование WireGuard работает на уровне программного обеспечения, что может привести к задержке и снижению производительности пропускной способности. Степень этого влияния зависит от различных факторов, включая размер виртуальной машины (SKU узла), конфигурацию сети и шаблоны трафика приложения. Наше тестирование показывает, что пропускная способность ограничена 1,5 Гбит/с с MTU 1500; Однако результаты могут отличаться в зависимости от характеристик рабочей нагрузки и конфигурации кластера. Использование SKU, поддерживающего MTU 3900, привело к пропускной способности, которая примерно в 2,5 раза выше. Хотя шифрование WireGuard можно использовать вместе с политиками сети, это может привести к дальнейшему снижению производительности, а также к снижению пропускной способности и увеличению задержки. Для приложений, чувствительных к задержке или пропускной способности, настоятельно рекомендуется сначала оценить WireGuard в нерабокой среде. Как всегда, результаты могут отличаться в зависимости от характеристик рабочей нагрузки и конфигурации кластера.
Pricing
Это важно
Расширенные услуги контейнерной сети предоставляются на платной основе. Дополнительные сведения о ценах см. в разделе "Расширенные сетевые службы контейнеров" — цены.
Дальнейшие шаги
Узнайте, как применить шифрование WireGuard к AKS.
Для получения более подробной информации о расширенных сетевых службах контейнеров для Службы Azure Kubernetes (AKS) см. раздел Что такое расширенные сетевые службы контейнеров для Службы Azure Kubernetes (AKS)?.
Изучите функции наблюдения за сетями контейнеров в расширенных сетевых службах контейнеров в разделе "Что такое наблюдаемость сети контейнеров?".