使用 Alauda 容器安全生成网络策略
Alauda 容器安全使您能够根据观察到的网络流量自动生成 Kubernetes 网络策略,帮助您保护 Pod 通信并减少攻击面。
目录
概述
Kubernetes 网络策略定义了哪些 Pod 可以接收或发送网络流量。手动创建这些 YAML 文件可能会很复杂。Alauda 容器安全通过以下原则简化了这一过程:
-
每个部署一个策略: Alauda 容器安全为所选命名空间中的每个部署生成一个网络策略,使用部署的 Pod 选择器。
- 如果一个部署已经有网络策略,Alauda 容器安全将不会覆盖或删除它。
- 新部署在生成或创建新策略之前是无限制的。
- 如果新部署需要访问受保护的部署,您可能需要更新策略。
-
命名约定: 每个策略命名为 stackrox-generated-<deployment-name>
,并包含一个标识标签。
-
允许外部流量: 如果满足以下条件,Alauda 容器安全会生成一条允许来自任何 IP 的流量的规则:
- 在所选期间,部署接收来自集群外部的连接,或
- 部署通过节点端口或负载均衡器服务暴露。
-
入站规则: 对于每个观察到的入站连接:
- 如果来自同一命名空间,Alauda 容器安全使用源部署的 Pod 选择器。
- 如果来自不同命名空间,Alauda 容器安全使用命名空间选择器,并根据需要自动标记命名空间。
注意: 如果独立 Pod 缺少标签,生成的策略可能会允许来自/到整个命名空间的流量。
如何生成网络策略
您可以使用 Alauda 容器安全网络图为集群、命名空间或特定部署生成策略。
生成网络策略的步骤如下:
- 在 Alauda 容器安全门户中,转到 网络图。
- 选择一个集群和一个或多个命名空间。
- (可选)选择特定部署或使用 过滤部署 来缩小范围。
- 点击头部的 网络策略生成器。
- (可选)在信息面板中,选择 排除端口和协议 以移除端口/协议限制。
- 点击 生成并模拟网络策略。所选范围显示在面板顶部。
- (可选)复制或下载生成的 YAML 文件。
- (可选)点击 比较 以并排查看现有和生成的策略。
- (可选)使用 操作 菜单:
- 与通知者(例如 Slack、ServiceNow、Webhooks)共享 YAML 文件。
- 从活动流量重建规则。
- 恢复到先前应用的 YAML。
注意: 某些命名空间(例如,具有现有入站策略或受保护命名空间)可能没有生成策略。
下载和应用策略
生成策略后,您可以使用 CLI 或自动化工具下载并应用它们到您的集群。
应用策略:
$ kubectl create -f "<generated_file>.yml"
删除策略:
$ kubectl delete -f "<generated_file>.yml"
警告: 在将网络策略应用于生产环境之前,请始终在开发或测试环境中测试它们,因为它们可能会干扰正在运行的应用程序。
恢复和删除策略
- 要恢复到先前的策略,请在 Alauda 容器安全门户中使用 恢复规则到先前应用的 YAML 选项。
- 要删除所有自动生成的策略:
$ kubectl get ns -o jsonpath='{.items[*].metadata.name}' | \
xargs -n 1 kubectl delete networkpolicies -l \
'network-policy-generator.stackrox.io/generated=true' -n
其他说明
- 网络图不显示生成的策略。
- 仅入站流量受到生成策略的限制;不生成出站策略。