8.2. 使用网络图生成和模拟网络策略
8.2.1. 关于从网络图形生成策略
Kubernetes 网络策略控制哪些 pod 接收传入的网络流量,以及哪些 pod 可以发送传出流量。通过使用网络策略来启用和禁用 pod 的流量,您可以限制网络攻击面。
这些网络策略是 YAML 配置文件。通常很难深入了解网络流,并手动创建这些文件。您可以使用 RHACS 生成这些文件。当您自动生成网络策略时,RHACS 遵循以下准则:
RHACS 为命名空间中的每个部署生成一个网络策略。策略的 pod 选择器是部署的 pod 选择器。
如果部署已有网络策略,RHACS 不会生成新策略或删除现有策略。
生成的策略只将流量限制到现有部署。
- 您稍后创建的部署不会有任何限制,除非您为它们创建或生成新的网络策略。
- 如果新部署需要与具有网络策略的部署联系,您可能需要编辑网络策略以允许访问。
-
每个策略的名称与部署名称相同,前缀为
stackrox-generated-
。例如,生成的网络策略中的部署depABC
的策略名称为stackrox-generated-depABC
。所有生成的策略也都有一个标识标签。 如果满足以下条件之一,RHACS 会生成一条规则,允许从任何 IP 地址的流量:
- 部署在所选时间内具有来自集群外部的传入连接
- 部署通过节点端口或负载均衡器服务公开
RHACS 为每个部署生成一个
入口
规则,从中有传入连接。- 对于同一命名空间中的部署,此规则使用来自其他部署的 pod 选择器标签。
-
对于不同命名空间中的部署,此规则使用命名空间选择器。要实现此目的,RHACS 会自动将标签
namespace.metadata.stackrox.io/name
添加到每个命名空间中。
在个别情况下,如果独立 pod 没有任何标签,则生成的策略允许来自或到 pod 的整个命名空间的流量。
8.2.2. 在网络图中生成网络策略
RHACS 可让您根据环境中实际观察到的网络通信流自动生成网络策略。
您可以根据您在网络图形中选择的集群、命名空间和部署生成策略。为当前网络 Graph 范围中包含的任何部署生成策略。例如,当前范围可能包括整个集群、集群和命名空间,或者在所选命名空间中单独选择的部署。您还可以通过应用 Filter deployments 字段中的其中一个过滤器,使用集群、命名空间和部署选择的任意组合来进一步减少范围。例如,您可以将特定集群和命名空间中的部署范围缩小到受特定 CVE 影响。策略由基准发现期间观察到的流量生成。
- 在 RHACS 门户中,进入 网络图。
- 选择一个集群,然后选择一个或多个命名空间。
- 可选: 选择单独的部署来限制生成的策略仅那些部署。您还可以使用 Filter 部署功能 进一步缩小范围。
- 在网络图标头中,选择 Network 策略生成器。
可选:在打开的信息面板中,选择 Exclude 端口 & 协议,以便在从基准生成网络策略时删除端口/协议限制。
例如,
nginx3
部署与nginx4
形成端口 80 连接,这包含在nginx4
的基准中。如果生成了策略,并且未选择此复选框(默认行为),生成的策略会将允许从nginx3
到nginx4
的连接限制为仅端口 80。如果选择了此选项生成策略,生成的策略将允许从nginx3
连接到nginx4
连接中的任何端口。点 Generate and simulate network policies。RHACS 为您选择的范围生成策略。此范围显示在 Generate network policies 面板的顶部。
注意单击范围内的部署信息,可显示包含的部署列表。
- 可选:将生成的网络策略配置 YAML 文件复制到剪贴板,或通过点击面板中的下载图标下载它。
可选: 要将生成的网络策略与现有网络策略进行比较,请点击 Compare。现有和生成的网络策略的 YAML 文件显示在并排的视图中。
注意有些项目没有生成策略,如具有特定保护命名空间中的现有入口策略或部署的命名空间,如
stackrox
或acs
。可选:点击 Actions 菜单执行以下操作:
-
使用通知程序共享 YAML 文件:将 YAML 文件发送到您配置的系统通知程序之一,如 Slack、ServiceNow 或使用通用 Webhook 的应用程序。这些通知程序通过导航到 Platform Configuration
Integrations 进行配置。如需更多信息,请参阅"附加资源"部分中的文档。 - 从活跃流量重建规则:刷新生成的策略。
- 将规则恢复到之前应用的 YAML:删除模拟策略并恢复到最后一个网络策略。
-
使用通知程序共享 YAML 文件:将 YAML 文件发送到您配置的系统通知程序之一,如 Slack、ServiceNow 或使用通用 Webhook 的应用程序。这些通知程序通过导航到 Platform Configuration
8.2.3. 在网络图中保存生成的策略
您可以从 RHACS 下载并保存生成的网络策略。使用此选项下载策略,以便您可以将策略提交到 Git 等版本控制系统中。
流程
- 生成网络策略后,点 Network Policy Simulator 面板中的 Download YAML 图标。
8.2.4. 在网络图中测试生成的策略
下载 RHACS 生成的网络策略后,您可以使用 CLI 或自动部署过程将其应用到集群来测试它们。您不能直接在网络图中应用生成的网络策略。
流程
直接应用网络策略可能会导致运行应用程序出现问题。在将网络策略应用到生产工作负载之前,始终在开发环境或测试集群中下载并测试网络策略。
8.2.5. 在网络图中恢复到之前应用的策略
您可以删除策略并恢复到之前应用的策略。
流程
- 在 RHACS 门户中,进入 网络图。
- 从顶栏的菜单中选择集群名称。
- 选择一个或多个命名空间和部署。
- 选择 Simulate 网络策略。
- 选择 View active YAMLS。
在 Actions 菜单中,选择 Revert 规则到之前应用的 YAML。
警告直接应用网络策略可能会导致运行应用程序出现问题。在将网络策略应用到生产工作负载之前,始终在开发环境或测试集群中下载并测试网络策略。
8.2.6. 删除网络图中自动生成的所有策略
您可以使用 RHACS 从您创建的集群中删除所有自动生成的策略。
流程
运行以下命令:
$ oc get ns -o jsonpath='{.items[*].metadata.name}' | \ xargs -n 1 oc delete networkpolicies -l \ 'network-policy-generator.stackrox.io/generated=true' -n 1
- 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
8.2.7. 从网络图模拟网络策略
您当前的网络策略可能允许不需要的网络通信。您可以使用网络策略生成器创建网络策略,将入口流量限制为一组部署的计算基准。
Network Graph 不会在视觉化中显示生成的策略。生成的策略仅适用于限制出口流量的入口流量和策略。
流程
- 在 RHACS 门户中,进入 网络图。
- 选择一个集群,然后选择一个或多个命名空间。
- 在网络图标头中选择 Network 策略生成器。
- 可选:要生成带有要在模拟中使用的网络策略的 YAML 文件,请单击 Generate and simulate network policies。如需更多信息,请参阅"在网络图中生成网络策略"。
上传要在模拟中使用的网络策略的 YAML 文件。网络图视图显示您提议的网络策略将达到什么。执行以下步骤:
- 点 Upload YAML,然后选择 文件。
- 点 Open。系统会显示一条消息,以指示上传的策略的处理状态。
您可以通过点 View active YAMLS 选项卡来查看与当前网络策略对应的活跃 YAML 文件,然后从下拉列表中选择策略。您还可以执行以下操作:
- 点适当的按钮复制或下载显示的 YAML 文件。
- 使用 Actions 菜单从活跃流量重建规则,或将规则恢复到之前应用的 YAML。如需更多信息,请参阅"在网络图中生成网络策略"。