使用 Alauda Container Security 生成网络策略

Alauda Container Security 使您能够基于观察到的网络流量自动生成 Kubernetes 网络策略,帮助您保护 Pod 通信并减少攻击面。

目录

概述

Kubernetes 网络策略定义了哪些 Pod 可以接收或发送网络流量。手动创建这些 YAML 文件可能较为复杂。Alauda Container Security 通过以下原则简化了策略的生成:

  • 每个 Deployment 一个策略: Alauda Container Security 会为所选命名空间中的每个 Deployment 生成一个网络策略,使用该 Deployment 的 Pod 选择器。

    • 如果某个 Deployment 已经存在网络策略,Alauda Container Security 不会覆盖或删除它。
    • 新创建的 Deployment 在生成或创建新策略之前不受限制。
    • 如果新 Deployment 需要访问受保护的 Deployment,可能需要更新策略。
  • 命名规范: 每个策略命名为 stackrox-generated-<deployment-name>,并包含一个标识标签。

  • 允许外部流量: 如果满足以下任一条件,Alauda Container Security 会生成允许来自任意 IP 流量的规则:

    • 该 Deployment 在选定时间段内接收来自集群外部的连接,或
    • 该 Deployment 通过节点端口或负载均衡服务暴露。
  • 入口规则: 对于每个观察到的入站连接:

    • 如果来自同一命名空间,Alauda Container Security 使用源 Deployment 的 Pod 选择器。
    • 如果来自不同命名空间,Alauda Container Security 使用命名空间选择器,并根据需要自动为命名空间打标签。

注意: 如果独立 Pod 缺少标签,生成的策略可能允许来自/到整个命名空间的流量。

如何生成网络策略

您可以使用 Alauda Container Security 的 Network Graph 为集群、命名空间或特定 Deployment 生成策略。

生成网络策略的步骤如下:

  1. 在 Alauda Container Security 门户中,进入 Network Graph
  2. 选择一个集群和一个或多个命名空间。
  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、webhooks)。
    • 从活动流量重建规则。
    • 恢复到之前应用的 YAML。

注意: 某些命名空间(例如已有入口策略或受保护的命名空间)可能不会生成策略。

下载和应用策略

生成策略后,您可以使用 CLI 或自动化工具下载并应用到集群。

应用策略命令:

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

删除策略命令:

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

警告: 在将网络策略应用到生产环境之前,请务必在开发或测试环境中进行测试,以免影响正在运行的应用。

恢复和删除策略

  • 要恢复到之前的策略,请使用 Alauda Container Security 门户中的 Revert rules to previously applied YAML 选项。

  • 要删除所有自动生成的策略:

    $ 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 不会可视化生成的策略。
  • 生成的策略仅限制入口流量;不会生成出口策略。