You are viewing documentation for a release that is no longer maintained. To view the documentation for the most recent version, see the latest RHACS docs.
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 生成的网络策略后,您可以通过将其应用到集群来测试它们。
流程
要使用保存的 YAML 文件创建策略,请使用以下命令:
oc create -f "<generated_file>.yaml"
$ oc create -f "<generated_file>.yaml"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
如果生成的策略出现问题,您可以通过运行以下命令来删除它们:
oc delete -f "StackRox Generated.yaml"
$ oc delete -f "StackRox Generated.yaml"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
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
$ oc get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 oc delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes:
kubectl get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 kubectl delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n
$ kubectl get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 kubectl delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 的整个命名空间的流量。