6.3. 生成网络策略
Kubernetes 网络策略控制哪些 pod 接收传入的网络流量,哪些 pod 可以发送传出流量。通过使用网络策略来启用和禁用 pod 的流量,您可以限制网络攻击面。
这些网络策略是 YAML 配置文件。通常很难深入了解网络流,并手动创建这些文件。Red Hat Advanced Cluster Security for Kubernetes 允许您根据环境中实际观察到的网络通信流自动生成这些网络策略。
您可以从网络图形视图生成网络策略。
生成的策略适用于网络图形中显示的部署,并允许在所选时间观察到的所有网络流量。
流程
- 在 RHACS 门户,从左侧导航菜单中选择 Network Graph。
- 如果还没有选择正确的,则从顶栏的菜单中选择集群名称。
- 选择一个或多个命名空间。
- 如果您只想为一些部署生成策略,请使用 Add 一个或多个部署过滤器 字段来添加要过滤部署的条件。如果没有添加过滤器,Red Hat Advanced Cluster Security for Kubernetes 会为集群中的所有部署生成策略。
- 从顶栏的菜单中选择一个适当的时间。如果选择的时间过短,它会留下定期或不经常的网络通信。
- 选择 Network Policy Simulator。
- 在打开的面板中,如果您不需要在 Red Hat Advanced Cluster Security for Kubernetes 生成的策略中有范围的 端口和协议,请选择 Exclude 端口和协议。
- 选择" 生成"并模拟网络策略。生成的网络策略配置 YAML 在同一面板中打开,网络图则显示策略的影响。
6.3.1. 保存生成的策略 复制链接链接已复制到粘贴板!
您可以从 Red Hat Advanced Cluster Security for Kubernetes 下载并保存生成的网络策略。使用此选项将策略提交到类似于 Git 的版本控制系统。
流程
- 选择 Network Policy Simulator 面板上的 Download YAML 图标。
6.3.2. 测试生成的策略 复制链接链接已复制到粘贴板!
下载 Red Hat Advanced Cluster Security for Kubernetes 生成的网络策略后,您可以通过将其应用到集群来测试它们。
6.3.3. 应用生成的策略 复制链接链接已复制到粘贴板!
您可以从 RHACS 门户应用生成的网络策略。
流程
- 要从 Red Hat Advanced Cluster Security for Kubernetes 中直接在集群中应用生成的策略,请选择 Apply Network Policies。
直接应用网络策略可能会导致运行应用程序时出现问题。始终在开发环境或测试集群中下载并测试网络策略,然后再将它们应用到生产工作负载。
6.3.4. 删除生成的策略 复制链接链接已复制到粘贴板!
如果您直接应用了策略并想删除它们,请选择 Network Policy Simulator 面板上 最近应用的 YAML 图标。
流程
- 在 RHACS 门户,从左侧导航菜单中选择 Network Graph。
- 如果还没有选择正确的,则从顶栏的菜单中选择集群名称。
- 选择一个或多个命名空间。
- 选择 Network Policy Simulator。
- 选择 View active YAMLS。
- 选择 Revert 最近应用的 YAML 图标。
6.3.5. 删除所有自动生成的策略 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Advanced Cluster Security for Kubernetes 从您创建的集群中删除所有生成的策略。
流程
运行以下命令:
在 OpenShift Container Platform 中:
$ oc get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 oc delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n对于 Kubernetes:
$ kubectl get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 kubectl delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n
6.3.6. 策略生成策略 复制链接链接已复制到粘贴板!
当您自动生成网络策略时:
Red Hat Advanced Cluster Security for Kubernetes 为命名空间中的每个部署生成一个网络策略。策略的 pod 选择器是部署的 pod 选择器。
- 如果部署已有网络策略,Red Hat Advanced Cluster Security for Kubernetes 不会生成新策略或删除现有的策略。
生成的策略仅限制对现有部署的流量。
- 您稍后创建的部署不会有任何限制,除非您为其创建新的网络策略。
- 如果新部署需要联系网络策略的部署,您可能需要编辑网络策略来允许访问。
-
每个策略的名称与部署名称相同,前缀为
stackrox-generated-。例如,生成的网络策略中的部署depABC的策略名称为stackrox-generated-depABC。所有生成的策略也都有一个 identifying 标签。 Red Hat Advanced Cluster Security for Kubernetes 生成一个允许来自任何 IP 地址的流量的规则,如下所示:
- 该部署具有来自集群外部的进入连接,在选定时间或
- 部署通过节点端口或负载均衡器服务公开。
Red Hat Advanced Cluster Security for Kubernetes 为每个部署生成一个
入站规则,这个规则都会进入一个连接。- 对于同一命名空间中的部署,此规则使用其他部署的 pod 选择器标签。
-
对于不同命名空间中的部署,此规则使用命名空间选择器。因此,Red Hat Advanced Cluster Security for Kubernetes 可以为每个命名空间自动添加一个标签
namespace.metadata.stackrox.io/name。
在个别情况下,如果独立 pod 没有任何标签,生成的策略允许来自或 pod 的整个命名空间的流量。