使用 Alauda Container Security 生成网络策略
Alauda Container Security 使您能够基于观察到的网络流量自动生成 Kubernetes 网络策略,帮助您保护 pod 通信并减少攻击面。
目录
概述
Kubernetes 网络策略定义了哪些 pod 可以接收或发送网络流量。手动创建这些 YAML 文件可能比较复杂。Alauda Container Security 通过以下原则简化了策略的生成:
-
每个 Deployment 一个策略: Alauda Container Security 会为所选命名空间中的每个 deployment 生成一个网络策略,使用该 deployment 的 pod selector。
- 如果某个 deployment 已经有网络策略,Alauda Container Security 不会覆盖或删除它。
- 新创建的 deployment 在生成或创建新策略之前不受限制。
- 如果新 deployment 需要访问受保护的 deployment,可能需要更新相应的策略。
-
命名规范: 每个策略命名为
stackrox-generated-<deployment-name>,并包含一个标识标签。 -
允许外部流量: 如果满足以下任一条件,Alauda Container Security 会生成允许来自任意 IP 的流量的规则:
- 该 deployment 在所选时间段内接收到来自集群外部的连接,或
- 该 deployment 通过 node port 或 load balancer 服务暴露。
-
Ingress 规则: 对于每个观察到的入站连接:
- 如果来自同一命名空间,Alauda Container Security 使用源 deployment 的 pod selector。
- 如果来自不同命名空间,Alauda Container Security 使用命名空间选择器,并根据需要自动为命名空间打标签。
注意: 如果独立 pod 缺少标签,生成的策略可能允许来自/到整个命名空间的流量。
如何生成网络策略
您可以使用 Alauda Container Security 的 Network Graph 为集群、命名空间或特定 deployment 生成策略。
生成网络策略的步骤如下:
- 在 Alauda Container Security 门户中,进入 Network Graph。
- 选择一个集群和一个或多个命名空间。
- (可选)选择特定的 deployment,或使用 Filter deployments 缩小范围。
- 点击页眉中的 Network Policy Generator。
- (可选)在信息面板中选择 Exclude ports & protocols,以移除端口/协议限制。
- 点击 Generate and simulate network policies。所选范围会显示在面板顶部。
- (可选)复制或下载生成的 YAML 文件。
- (可选)点击 Compare,并排查看现有和生成的策略。
- (可选)使用 Actions 菜单:
- 将 YAML 文件分享给通知工具(如 Slack、ServiceNow、webhooks)。
- 从活动流量重建规则。
- 回滚到之前应用的 YAML。
注意: 某些命名空间(例如已有 ingress 策略或受保护的命名空间)可能不会生成策略。
下载和应用策略
生成策略后,您可以使用 CLI 或自动化工具下载并应用到集群。
应用策略命令:
删除策略命令:
警告: 在将网络策略应用到生产环境前,请务必在开发或测试环境中进行测试,以免影响正在运行的应用。
回滚和删除策略
-
要回滚到之前的策略,请在 Alauda Container Security 门户中使用 Revert rules to previously applied YAML 选项。
-
要删除所有自动生成的策略:
其他说明
- Network Graph 不会可视化生成的策略。
- 生成的策略仅限制 ingress 流量,不会生成 egress 策略。