8.5. 关于生成策略
Kubernetes 网络策略控制哪些 pod 接收传入的网络流量,以及哪些 pod 可以发送传出流量。通过使用网络策略来启用和禁用 pod 的流量,您可以限制网络攻击面。
这些网络策略是 YAML 配置文件。通常很难深入了解网络流,并手动创建这些文件。您可以使用 Red Hat Advanced Cluster Security for Kubernetes (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.5.1. 从网络图(1.0)生成网络策略
Kubernetes 网络策略控制哪些 pod 接收传入的网络流量,以及哪些 pod 可以发送传出流量。通过使用网络策略来启用和禁用 pod 的流量,您可以限制网络攻击面。
这些网络策略是 YAML 配置文件。通常很难深入了解网络流,并手动创建这些文件。Red Hat Advanced Cluster Security for Kubernetes 可让您根据环境中实际观察的网络流量流自动生成这些网络策略。
您可以从网络图形视图生成网络策略。
生成的策略应用到网络图中显示的部署,它们允许所选时间观察到的所有网络流量。
流程
- 在 RHACS 门户中,进入到 Network Graph。
- 如果还没有选择正确的,请在顶栏的菜单中选择集群名称。
- 选择一个或多个命名空间。
- 如果只想为某些部署生成策略,请使用 Add one or multiple deployment filters 字段来添加用于过滤部署的条件。如果没有添加过滤器,Red Hat Advanced Cluster Security for Kubernetes 会为集群中的所有部署生成策略。
- 从顶栏的菜单中,选择适当的时间。如果选择的时间太短,它会留下定期或不经常的网络通信。
- 选择 Network Policy Simulator。
- 在打开的面板中,如果您不希望在 Red Hat Advanced Cluster Security for Kubernetes 生成的策略中限定端口和协议,请选择 Exclude 端口 & amp; 协议。
- 选择 Generate and simulate network policies。生成的网络策略配置 YAML 在同一个面板中打开,网络图则显示策略的影响。
8.5.2. 保存生成的策略
您可以从 RHACS 下载并保存生成的网络策略。使用此选项将策略提交到 Git 等版本控制系统中。
流程
- 生成网络策略后,点 Network Policy Simulator 面板中的 Download YAML 图标。
8.5.3. 测试生成的策略
下载 RHACS 生成的网络策略后,您可以通过将其应用到集群来测试它们。
流程
直接应用网络策略可能会导致运行应用程序出现问题。在将网络策略应用到生产工作负载之前,始终在开发环境或测试集群中下载并测试网络策略。
8.5.4. 应用生成的策略
您可以从 RHACS 门户应用生成的网络策略。
流程
- 要从 RHACS 中直接应用生成的策略,请选择 Apply Network Policies。
直接应用网络策略可能会导致运行应用程序出现问题。在将网络策略应用到生产工作负载之前,始终在开发环境或测试集群中下载并测试网络策略。
8.5.5. 删除生成的策略
如果您直接应用生成的策略并希望删除它们,请在 Network Policy Simulator 面板中选择 Revert 最近应用的 YAML 图标。
流程
- 在 RHACS 门户中,进入到 Network Graph (1.0)。
- 如果还没有选择正确的,请在顶栏的菜单中选择集群名称。
- 选择一个或多个命名空间。
- 选择 Network Policy Simulator。
- 选择 View active YAMLS。
- 选择 Revert 最近应用的 YAML 图标。
8.5.6. 删除网络图(1.0)中自动生成的所有策略
您可以使用 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。
其他资源