8.3. 生成网络策略


Kubernetes 网络策略控制哪些 pod 接收传入的网络流量,以及哪些 pod 可以发送传出流量。通过使用网络策略来启用和禁用 pod 的流量,您可以限制网络攻击面。

这些网络策略是 YAML 配置文件。通常很难深入了解网络流,并手动创建这些文件。Red Hat Advanced Cluster Security for Kubernetes 允许您根据环境中实际观察的网络流量流来自动生成这些网络策略。

您可以从网络图形视图生成网络策略。

生成的策略应用到网络图中显示的部署,它们允许所选时间观察到的所有网络流量。

流程

  1. 在 RHACS 门户中,从左侧导航菜单中选择 Network Graph
  2. 如果还没有选择正确的,请在顶栏的菜单中选择集群名称。
  3. 选择一个或多个命名空间。
  4. 如果只想为某些部署生成策略,请使用 Add one or multiple deployment filters 字段来添加用于过滤部署的条件。如果没有添加过滤器,Red Hat Advanced Cluster Security for Kubernetes 会为集群中的所有部署生成策略。
  5. 从顶栏的菜单中,选择适当的时间。如果选择的时间太短,它会留下定期或不经常的网络通信。
  6. 选择 Network Policy Simulator
  7. 在打开的面板中,如果您不希望在 Red Hat Advanced Cluster Security for Kubernetes 生成的策略中限定端口和协议,请选择 Exclude 端口 & amp; 协议。
  8. 选择 Generate and simulate network policies。生成的网络策略配置 YAML 在同一个面板中打开,网络图则显示策略的影响。

8.3.1. 保存生成的策略

您可以从 Red Hat Advanced Cluster Security for Kubernetes 下载并保存生成的网络策略。使用此选项将策略提交到 Git 等版本控制系统中。

流程

  • 选择 Network Policy Simulator 面板中的 Download YAML 图标。

8.3.2. 测试生成的策略

下载 Red Hat Advanced Cluster Security for Kubernetes 生成的网络策略后,您可以通过将其应用到集群来测试它们。

流程

  1. 要使用保存的 YAML 文件创建策略,请使用以下命令:

    $ oc create -f "<generated_file>.yaml" 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. 如果生成的策略造成问题,您可以通过运行以下命令来删除它们:

    $ oc delete -f "<generated_file>.yaml" 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

8.3.3. 应用生成的策略

您可以从 RHACS 门户应用生成的网络策略。

流程

  • 要在 Red Hat Advanced Cluster Security for Kubernetes 中直接应用生成的策略,请选择 Apply Network Policies
警告

直接应用网络策略可能会导致运行应用程序出现问题。在将网络策略应用到生产工作负载之前,始终在开发环境或测试集群中下载并测试网络策略。

8.3.4. 删除生成的策略

如果您直接应用生成的策略并希望删除它们,请在 Network Policy Simulator 面板中选择 Revert 最近应用的 YAML 图标。

流程

  1. 在 RHACS 门户中,从左侧导航菜单中选择 Network Graph
  2. 如果还没有选择正确的,请在顶栏的菜单中选择集群名称。
  3. 选择一个或多个命名空间。
  4. 选择 Network Policy Simulator
  5. 选择 View active YAMLS
  6. 选择 Revert 最近应用的 YAML 图标。

8.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
      Copy to Clipboard Toggle word wrap
    • 对于 Kubernetes:

      $ 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 Toggle word wrap

8.3.6. 策略生成策略

当您自动生成网络策略时:

  • Red Hat Advanced Cluster Security for Kubernetes 为命名空间中的每个部署生成一个网络策略。策略的 pod 选择器是部署的 pod 选择器。

    • 如果部署已有网络策略,Red Hat Advanced Cluster Security for Kubernetes 不会生成新的策略或删除现有的策略。
  • 生成的策略只将流量限制到现有部署。

    • 您稍后创建的部署不会有任何限制,除非您为它们创建或生成新的网络策略。
    • 如果新部署需要与具有网络策略的部署联系,您可能需要编辑网络策略以允许访问。
  • 每个策略的名称与部署名称相同,前缀为 stackrox-generated-。例如,生成的网络策略中的部署 depABC 的策略名称为 stackrox-generated-depABC。所有生成的策略也都有一个标识标签。
  • 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 的整个命名空间的流量。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat