使用 Alauda Security Service 生成网络策略
Alauda Security Service 可基于已观察到的网络流量自动生成 Kubernetes 网络策略,帮助你保护 pod 通信并缩小攻击面。
概述
Kubernetes 网络策略定义了哪些 pod 可以接收或发送网络流量。手动创建这些 YAML 文件可能很复杂。Alauda Security Service 通过按照以下原则生成策略来简化这一过程:
-
每个 Deployment 对应一个策略: Alauda Security Service 会为所选 namespace 中的每个 deployment 生成一个网络策略,并使用该 deployment 的 pod selector。
- 如果某个 deployment 已经存在网络策略,Alauda Security Service 不会覆盖或删除它。
- 新的 deployment 在你为其生成或创建新策略之前,不受限制。
- 如果新的 deployment 需要访问受保护的 deployment,你可能需要更新该策略。
-
命名规范: 每个策略的名称为
stackrox-generated-<deployment-name>,并包含一个用于标识的 label。 -
允许外部流量: 如果满足以下条件之一,Alauda Security Service 会生成一条允许来自任意 IP 的流量的规则:
- 该 deployment 在所选时间段内接收到了来自集群外部的连接,或者
- 该 deployment 通过 node port 或 load balancer service 暴露。
-
Ingress 规则: 对于每个已观察到的入站连接:
- 如果来自相同的 namespace,Alauda Security Service 会使用来源 deployment 的 pod selector。
- 如果来自不同的 namespace,Alauda Security Service 会使用 namespace selector,并在需要时自动为 namespace 添加 label。
注意: 如果某个独立 pod 缺少 label,生成的策略可能会允许来自整个 namespace 的流量,或允许流向整个 namespace 的流量。
如何生成网络策略
你可以通过 Network Graph 页面为集群、namespace 或特定 deployment 生成策略。
要生成网络策略,请按以下步骤操作:
- 在 Alauda Security Service 门户中,进入 Network Graph。
- 选择一个集群和一个或多个 namespace。
- (可选)选择特定 deployment,或使用 Filter deployments 缩小范围。
- 在标题栏中单击 Network policy generator。
- 查看生成器面板中显示的当前范围。在当前 UI 中,范围摘要可以显示所选 deployment 数量、namespace 和集群。
- 在生成器中,根据需要使用以下可用区域:
- Simulate network policies
- View active YAMLS
- (可选)选择 Exclude ports & protocols,从生成的规则中移除端口和协议限制。
- 单击 Generate and simulate network policies。
- (可选)如果你希望预览现有网络策略文件的效果,而不是生成新文件,可以使用 Upload YAML。当前 UI 提供拖放上传区域。
- (可选)在对比或生成新输出之前,先在 View active YAMLS 中查看当前生效的策略 YAML。
- (可选)在输出准备好后,复制或下载生成的 YAML 文件。
注意: 某些 namespace(例如已有 ingress 策略或受保护的 namespace)可能不会生成策略。
提示: 生成器基于当前图表范围运行。首先选择目标集群和 namespace,通常会比保持范围过大得到更聚焦的结果。
下载并应用策略
生成策略后,你可以使用 CLI 或自动化工具将其下载并应用到集群。
应用策略:
删除策略:
警告: 在将网络策略应用到生产环境之前,请务必先在开发或测试环境中进行验证,因为它们可能会影响正在运行的应用。
回滚和删除策略
-
要回滚到之前的策略,请在 Alauda Security Service 门户中,针对所选范围使用可用的回滚或对比操作(如果页面提供了这些操作)。
-
要删除所有自动生成的策略:
其他说明
- Network Graph 不会可视化已生成的策略。
- 生成的策略仅限制 ingress 流量;不会生成 egress 策略。