搜索

8.2. 使用网络图生成和模拟网络策略

download PDF

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

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

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

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

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

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

  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:删除模拟策略并恢复到最后一个网络策略。

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

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

流程

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

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

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

流程

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

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

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

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

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

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

流程

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

    警告

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

8.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
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

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

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

注意

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

流程

  1. 在 RHACS 门户中,进入 网络图
  2. 选择一个集群,然后选择一个或多个命名空间。
  3. 在网络图标头中选择 Network 策略生成器
  4. 可选:要生成带有要在模拟中使用的网络策略的 YAML 文件,请单击 Generate and simulate network policies。如需更多信息,请参阅"在网络图中生成网络策略"。
  5. 上传要在模拟中使用的网络策略的 YAML 文件。网络图视图显示您提议的网络策略将达到什么。执行以下步骤:

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.