使用 Alauda 容器安全生成网络策略

Alauda 容器安全使您能够根据观察到的网络流量自动生成 Kubernetes 网络策略,帮助您保护 Pod 通信并减少攻击面。

目录

概述

Kubernetes 网络策略定义了哪些 Pod 可以接收或发送网络流量。手动创建这些 YAML 文件可能会很复杂。Alauda 容器安全通过以下原则简化了这一过程:

  • 每个部署一个策略: Alauda 容器安全为所选命名空间中的每个部署生成一个网络策略,使用部署的 Pod 选择器。

    • 如果一个部署已经有网络策略,Alauda 容器安全将不会覆盖或删除它。
    • 新部署在生成或创建新策略之前是无限制的。
    • 如果新部署需要访问受保护的部署,您可能需要更新策略。
  • 命名约定: 每个策略命名为 stackrox-generated-<deployment-name>,并包含一个标识标签。

  • 允许外部流量: 如果满足以下条件,Alauda 容器安全会生成一条允许来自任何 IP 的流量的规则:

    • 在所选期间,部署接收来自集群外部的连接,或
    • 部署通过节点端口或负载均衡器服务暴露。
  • 入站规则: 对于每个观察到的入站连接:

    • 如果来自同一命名空间,Alauda 容器安全使用源部署的 Pod 选择器。
    • 如果来自不同命名空间,Alauda 容器安全使用命名空间选择器,并根据需要自动标记命名空间。

注意: 如果独立 Pod 缺少标签,生成的策略可能会允许来自/到整个命名空间的流量。

如何生成网络策略

您可以使用 Alauda 容器安全网络图为集群、命名空间或特定部署生成策略。

生成网络策略的步骤如下:

  1. 在 Alauda 容器安全门户中,转到 网络图
  2. 选择一个集群和一个或多个命名空间。
  3. (可选)选择特定部署或使用 过滤部署 来缩小范围。
  4. 点击头部的 网络策略生成器
  5. (可选)在信息面板中,选择 排除端口和协议 以移除端口/协议限制。
  6. 点击 生成并模拟网络策略。所选范围显示在面板顶部。
  7. (可选)复制或下载生成的 YAML 文件。
  8. (可选)点击 比较 以并排查看现有和生成的策略。
  9. (可选)使用 操作 菜单:
    • 与通知者(例如 Slack、ServiceNow、Webhooks)共享 YAML 文件。
    • 从活动流量重建规则。
    • 恢复到先前应用的 YAML。

注意: 某些命名空间(例如,具有现有入站策略或受保护命名空间)可能没有生成策略。

下载和应用策略

生成策略后,您可以使用 CLI 或自动化工具下载并应用它们到您的集群。

应用策略:

$ kubectl create -f "<generated_file>.yml"

删除策略:

$ kubectl delete -f "<generated_file>.yml"

警告: 在将网络策略应用于生产环境之前,请始终在开发或测试环境中测试它们,因为它们可能会干扰正在运行的应用程序。

恢复和删除策略

  • 要恢复到先前的策略,请在 Alauda 容器安全门户中使用 恢复规则到先前应用的 YAML 选项。
  • 要删除所有自动生成的策略:
$ kubectl get ns -o jsonpath='{.items[*].metadata.name}' | \
xargs -n 1 kubectl delete networkpolicies -l \
'network-policy-generator.stackrox.io/generated=true' -n

其他说明

  • 网络图不显示生成的策略。
  • 仅入站流量受到生成策略的限制;不生成出站策略。