7.2. 使用网络图生成并模拟网络策略


7.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 的整个命名空间的流量。

7.2.2. 在网络图中生成网络策略

RHACS 允许您根据环境中实际观察到的网络通信流自动生成网络策略。

您可以根据网络图中选择的集群、命名空间和部署生成策略。为当前 Network Graph 范围中包含的部署生成策略。例如,当前范围可以包含整个集群、集群和命名空间,或者在所选命名空间中单独选择的部署。您还可以通过应用 Filter deployments 字段中的其中一个过滤器,使用集群、命名空间和部署选择的任意组合来进一步减少范围。例如,您可以将范围范围缩小到受特定 CVE 影响的特定集群和命名空间中的部署。策略从基准发现期间观察到的流量生成。

  1. 在 RHACS 门户中,进入 Network Graph
  2. 选择一个集群,然后选择一个或多个命名空间。
  3. 可选:选择单独的部署,将生成的策略限制为只有这些部署。您还可以使用 Filter 部署功能 来进一步缩小范围。
  4. 在网络图形标头中,选择 Network 策略生成器
  5. 可选:在打开的信息面板中,选择 Exclude ports & Protocol,以在从基准生成网络策略时删除端口/协议限制。

    例如,nginx3 部署将端口 80 连接到 nginx4,这作为 nginx4 基准的一部分包含在内。如果生成策略且未选择此复选框(默认行为),则生成的策略会将允许的从 nginx3 的连接限制为仅端口 80。如果选择此选项生成策略,则生成的策略将允许从 nginx3nginx4 的连接中的任何端口。

  6. Generate and simulate network policies。RHACS 为您选择的范围生成策略。这个范围显示在 Generate network policies 面板的顶部。

    注意

    单击范围中的部署信息可显示所包含的部署列表。

  7. 可选:将生成的网络策略配置 YAML 文件复制到剪贴板,或者通过点面板中的下载图标下载该文件。
  8. 可选: 要将生成的网络策略与现有网络策略进行比较,请点 Compare。现有和生成的网络策略的 YAML 文件以并行视图显示。

    注意

    有些项目没有生成策略,如带有现有入口策略或某些受保护的命名空间中部署的命名空间,如 stackroxacs

  9. 可选:点击 Actions 菜单执行以下操作:

    • 使用通知程序共享 YAML 文件:将 YAML 文件发送到您配置的系统通知程序之一,如 Slack、ServiceNow 或使用通用 webhook 的应用程序。这些通知程序通过导航到 Platform Configuration Integrations 来配置。如需更多信息,请参阅"添加资源"部分中的文档。
    • 从活跃流量重建规则:刷新显示的生成的策略。
    • 将规则恢复到之前应用的 YAML:删除模拟策略并恢复到最后一个网络策略。

7.2.3. 在网络图中保存生成的策略

您可以从 RHACS 下载并保存生成的网络策略。使用此选项下载策略,以便您可以将策略提交到版本控制系统中,如 Git。

流程

  • 生成网络策略后,点 Network Policy Simulator 面板中的 Download YAML 图标。

7.2.4. 在网络图中测试生成的策略

下载 RHACS 生成的网络策略后,您可以使用 CLI 或自动部署流程将它们应用到集群来测试它们。您不能直接在网络图中应用生成的网络策略。

流程

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

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

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

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

7.2.5. 在网络图中恢复到之前应用的策略

您可以删除策略并恢复到之前应用的策略。

流程

  1. 在 RHACS 门户中,进入 Network Graph
  2. 从顶栏的菜单中选择集群名称。
  3. 选择一个或多个命名空间和部署。
  4. 选择 Simulate 网络策略
  5. 选择 View active YAMLS
  6. Actions 菜单中,选择 Revert 规则到之前应用的 YAML

    警告

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

7.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
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

7.2.7. 从网络图模拟网络策略

您当前的网络策略可能会允许不需要的网络通信。您可以使用网络策略生成器创建网络策略,将入口流量限制到一组部署的计算基准。

注意

Network Graph 不会在视觉化中显示生成的策略。生成的策略仅适用于不限制出口流量的入口流量和策略。

流程

  1. 在 RHACS 门户中,进入 Network Graph
  2. 选择一个集群,然后选择一个或多个命名空间。
  3. 在网络图形标头中,选择 Network 策略生成器
  4. 您可以执行以下操作:

    • 通过单击 Generate 和模拟网络策略,生成包含模拟中使用的网络策略 的 YAML 文件。如需更多信息,请参阅"在网络图中生成网络策略"。
    • 通过执行以下步骤,上传要在模拟中使用的网络策略的 YAML 文件:

      1. Upload YAML,然后选择该文件。
      2. Open。系统会显示一条消息,以指示上传策略的处理状态。
  5. 您可以通过点 View active YAMLS 选项卡来查看与当前网络策略对应的活跃 YAML 文件,然后从下拉列表中选择策略。您还可以执行以下操作:

    • 点适当的按钮复制或下载显示的 YAML 文件。
    • 使用 Actions 菜单从活动流量重建规则,或将规则恢复到之前应用的 YAML。如需更多信息,请参阅"在网络图中生成网络策略"。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat