cilium


目录

Cilium简介

Cilium是一个纯开源软件,没有哪家公司提供商业化支持,也不是由某一公司开源,该软件用于透明地保护使用Linux容器管理平台(如Docker和Kubernetes)部署的应用程序服务之间的网络连接。

Cilium的基础是一种名为BPF的新Linux内核技术,它可以在Linux本身动态插入强大的安全可见性和控制逻辑。由于BPF在Linux内核中运行,因此可以应用和更新Cilium安全策略,而无需对应用程序代码或容器配置进行任何更改。

基于微服务的应用程序分为小型独立服务,这些服务使用HTTP、gRPC、Kafka等轻量级协议通过API相互通信。但是,现有的Linux网络安全机制(例如iptables)仅在网络和传输层(即IP地址和端口)上运行,并且缺乏对微服务层的可见性。

Cilium为Linux容器框架(如Docker和Kubernetes)带来了API感知网络安全过滤。使用名为BPF的新Linux内核技术,Cilium提供了一种基于容器/容器标识定义和实施网络层和应用层安全策略的简单而有效的方法。

注:Cilium中文意思是“纤毛“,它十分细小而又无处不在。

BPF

柏克莱封包过滤器(Berkeley Packet Filter,缩写 BPF),是类Unix系统上数据链路层的一种原始接口,提供原始链路层封包的收发,除此之外,如果网卡驱动支持洪泛模式,那么它可以让网卡处于此种模式,这样可以收到网络上的所有包,不管他们的目的地是不是所在主机。参考维基百科和eBPF简史

为什么选择Cilium?

现代数据中心应用程序的开发已经转向面向服务的体系结构(SOA),通常称为微服务,其中大型应用程序被分成小型独立服务,这些服务使用HTTP等轻量级协议通过API相互通信。微服务应用程序往往是高度动态的,作为持续交付的一部分部署的滚动更新期间单个容器启动或销毁,应用程序扩展/缩小以适应负载变化。

这种向高度动态的微服务的转变过程,给确保微服务之间的连接方面提出了挑战和机遇。传统的Linux网络安全方法(例如iptables)过滤IP地址和TCP/UDP端口,但IP地址经常在动态微服务环境中流失。容器的高度不稳定的生命周期导致这些方法难以与应用程序并排扩展,因为负载均衡表和访问控制列表要不断更新,可能增长成包含数十万条规则。出于安全目的,协议端口(例如,用于HTTP流量的TCP端口80)不能再用于区分应用流量,因为该端口用于跨服务的各种消息。

另一个挑战是提供准确的可见性,因为传统系统使用IP地址作为主要识别工具,其在微服务架构中的寿命可能才仅仅几秒钟,被大大缩短。

利用Linux BPF,Cilium保留了透明地插入安全可视性+强制执行的能力,但这种方式基于服务/pod/容器标识(与传统系统中的IP地址识别相反),并且可以根据应用层进行过滤 (例如HTTP)。因此,通过将安全性与寻址分离,Cilium不仅可以在高度动态的环境中应用安全策略,而且除了提供传统的第3层和第4层分割之外,还可以通过在HTTP层运行来提供更强的安全隔离。 。

BPF的使用使得Cilium能够以高度可扩展的方式实现以上功能,即使对于大规模环境也不例外。

文档信息

Search

    Table of Contents