# 介绍一个小工具：网络策略可视化编辑器

## 引子

> 跳过本节不影响阅读

既然是牛年第一篇，总要写点废话起个头。另外写小工具系列经常面对的一个难题就是——怎样凑够 300 字的原创门槛。

2020 年有大半年我都在唠叨云原生安全的事情，现在的情况按照我的理解，有点像 2000 年附近的互联网——各种东西都在往新瓶子里装，那时候的新瓶子是互联网，现在的新瓶子是云原生；那时候的旧酒是邮件、留言板、传呼机，现在的旧酒除了这些生活内容之外，多了更多的 ToB/G 的内容；从前的较大规模的公开互联网服务多数是自建自维护的，现在的公开服务则往往会用到大量的公有云、SaaS/PaaS 服务以及第三方交付项目。

在 Kubernetes 来说：

* 推出了 CKS 认证
    
* OPA 毕业
    
* Kyverno 进入沙箱
    
* Redhat 收购 StackRox
    

综上，经过轰轰烈烈的云原生运动之后，安全问题就已经被怼到了我们面前，很多时候一些重点服务一旦遭到破坏，虽说安全相关的黑产已经有了成熟的获利链条；然而在责任方来说，的确可以挤出一句——这不是钱的事儿。

## 正文

言归正传，今天要介绍的是一个**安全相关**的网络策略**小工具**。

网络策略是 Kubernetes 内置的重要安全机制之一，用它可以轻松地使用 Namespace、Label Selector、CIDR 等方式，限制 Pod 的 Ingress/Egress 访问，相对于 RBAC 来说，这东西其实更贴近传统网络策略的限制方式，但是目前应用还较少，也就显得比较难用了。Cilium 推出的这个可视化编辑器，是个很好的入门工具。

缺省界面如图所示：

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1745911208711/87f2b4cf-8c26-464a-b9c5-107f68b066e2.png align="center")

整个界面分为几个部分：

* A：可视化编辑区：区域中可以用点选的方式产生不同的 Ingress Egress 规则。
    
* B：代码编辑区：交互式编辑区产生的策略变更都会用 YAML 代码的形式反映在该区域，另外左上角还可以通过上传的方式载入现有 YAML 文件，上传的内容也会反向映射回到可视化编辑区中。
    
* C：该区域是教学区域，下拉菜单中包含了几个常用的策略的相关教学，注意这里的是教学，给出的可能是一个待修复的策略和修复方法，不要直接复制使用。
    

可视化编辑区分为左中右三个部分：

* 1：这里可以定义策略的主体，例如命名空间、名称、策略对应的管理目标（Pod Selector），另外还可以定义 Ingress 和 Egress 的缺省行为，例如缺省 Deny 或者 Allow，这里可以看到，随着策略的变化，相应的连接线颜色会发生变化。
    
* 2：Ingress 区域，管理进入 Pod 的流量，分为集群外、集群内、本命名空间三种配置方法。
    
* 3：Egress 区域，管理从 Pod 发出的流量，和 Ingress 区域一样，分为三种配置。
    

例如新建一个缺省禁止所有其它命名空间访问的策略，只要新建策略，在 1 区点击 `Ingress`，将其设为 Default Deny，然后在 2 区点击 `In Namespace`，在弹出窗口中选择 `Allow from any pod` 即可。最终结果如图所示：

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1745911198577/0c59397b-8df4-4606-a173-ade80b2e93ab.png align="center")

除了 All 之外，编辑器还支持 namespaceSelector、podSelector 以及集群外 CIDR 等的源头选择。Egress 策略中也包括对目标端口的设置。

## 结论

这才能叫可视化吧。

## 相关链接

* 工具地址：`https://editor.cilium.io/`
    
* Kubernetes Network Policies：`https://kubernetes.io/docs/concepts/services-networking/network-policies/`
