• Русский
  • Генерация сетевых политик с помощью Alauda Container Security

    Alauda Container Security позволяет автоматически генерировать сетевые политики Kubernetes на основе наблюдаемых сетевых потоков, помогая защитить коммуникацию подов и снизить поверхность атаки.

    Overview

    Сетевые политики Kubernetes определяют, какие поды могут принимать или отправлять сетевой трафик. Ручное создание этих YAML-файлов может быть сложным. Alauda Container Security упрощает этот процесс, генерируя политики согласно следующим принципам:

    • Одна политика на Deployment: Alauda Container Security генерирует сетевую политику для каждого deployment в выбранном namespace, используя селектор подов deployment.

      • Если у deployment уже есть сетевая политика, Alauda Container Security не перезапишет и не удалит её.
      • Новые deployment не ограничены, пока вы не сгенерируете или не создадите для них новые политики.
      • Если новому deployment требуется доступ к защищённому deployment, возможно, потребуется обновить политику.
    • Конвенция именования: Каждая политика называется stackrox-generated-<deployment-name> и содержит идентифицирующую метку.

    • Разрешение внешнего трафика: Alauda Container Security генерирует правило, разрешающее трафик с любого IP, если:

      • Deployment получает подключения извне кластера в выбранный период, или
      • Deployment открыт через node port или load balancer service.
    • Правила Ingress: Для каждого наблюдаемого входящего подключения:

      • Если оно из того же namespace, Alauda Container Security использует селектор подов исходного deployment.
      • Если из другого namespace, используется селектор namespace, а namespaces автоматически маркируются при необходимости.

    Примечание: Если standalone pod не имеет меток, сгенерированная политика может разрешать трафик от/к всему namespace.

    Как сгенерировать сетевые политики

    Вы можете генерировать политики для кластеров, namespaces или конкретных deployment с помощью Network Graph в Alauda Container Security.

    Чтобы сгенерировать сетевые политики, выполните следующие шаги:

    1. В портале Alauda Container Security перейдите в Network Graph.
    2. Выберите кластер и один или несколько namespaces.
    3. (Опционально) Выберите конкретные deployment или используйте Filter deployments для сужения области.
    4. Нажмите Network Policy Generator в заголовке.
    5. (Опционально) В информационной панели выберите Exclude ports & protocols для удаления ограничений по портам/протоколам.
    6. Нажмите Generate and simulate network policies. Выбранная область отображается в верхней части панели.
    7. (Опционально) Скопируйте или скачайте сгенерированный YAML-файл.
    8. (Опционально) Нажмите Compare, чтобы сравнить существующие и сгенерированные политики бок о бок.
    9. (Опционально) Используйте меню Actions для:
      • Расшаривания YAML-файла с уведомителями (например, Slack, ServiceNow, вебхуки).
      • Перестроения правил на основе активного трафика.
      • Отката к ранее применённому YAML.

    Примечание: Для некоторых namespaces (например, с существующими ingress-политиками или защищёнными namespaces) политики могут не генерироваться.

    Загрузка и применение политик

    После генерации политик вы можете скачать и применить их в вашем кластере с помощью CLI или автоматизированных инструментов.

    Для применения политик:

    $ kubectl create -f "<generated_file>.yml"

    Для удаления политик:

    $ kubectl delete -f "<generated_file>.yml"

    Внимание: Всегда тестируйте сетевые политики в среде разработки или тестирования перед применением в продакшене, так как они могут нарушить работу запущенных приложений.

    Откат и удаление политик

    • Чтобы откатиться к предыдущей политике, используйте опцию Revert rules to previously applied YAML в портале Alauda Container Security.

    • Чтобы удалить все автоматически сгенерированные политики:

      $ kubectl get ns -o jsonpath='{.items[*].metadata.name}' | \
      xargs -n 1 kubectl delete networkpolicies -l \
      'network-policy-generator.stackrox.io/generated=true' -n

    Дополнительные замечания

    • Network Graph не визуализирует сгенерированные политики.
    • Сгенерированные политики ограничивают только ingress-трафик; egress-политики не генерируются.