写点什么

Cilium 1.0.0-rc4 发布:使用 Linux BPF 实现透明安全的容器间网络连接

  • 2018-03-13
  • 本文字数:2206 字

    阅读完需:约 7 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Cilium 是一种开源软件,它使用 Docker Kubernetes 等 Linux 容器管理平台,实现应用服务间网络连接性的透明安全部署。Cilium 1.0.0-rc4 于近期发布,其中包括:将 CNCF(云原生计算基金会,Cloud Native Computing Foundation)力推的 Envoy 配置为默认的 HTTP/gRPC 代理、给出了一种针对连接性和其它一些错误的基本健康情况总览、改进了可扩展的键值存储交互层

微服务应用呈现出高度动态的特点,这对于微服务间的安全连接性不仅是一个挑战,而且也是一个机会。当前,解决该问题的方法结合使用了CNCF 力推的 CNI(容器网络接口,Container Network Interface),以及 Istio Conduit 等日益广为使用的“服务网格(Service Mesh)”技术。 Cilium 文档中指出,传统的 Linux 网络安全方法(例如 iptables )是根据 IP 地址和 TCP/UDP 端口做过滤。但是容器和 IP 地址的生命周期存在高度不稳定的问题,导致这些网络安全方法难以和应用一起扩展,因为必须要不断地更新大量的负载平衡表和访问控制列表。

Cilium 尝试通过使用一种称为“ Berkeley Packet Filter ”(BPF)的相对较新技术解决这一问题,并实现扩展性。BPF 是一种 Linux 内核字节码解释器,最初用于实现 tcpdump 和 Socker 过滤器那样的网络包过滤。通过使用哈希表、数组等一些额外的数据结构扩展,及一些额外的操作,BPF 现已支持网络包的修改(packet mangling)、转发和封装等操作。此外,BPF 还提供了一个驻留内核的验证器以确保 BPF 程序安全运行、一个将字节码转换为特定于 CPU 架构的指令的 JIT 编译器以保证原生的执行效率。性能大师 Brendan Gregg 对“ Linux BPF 超能力”做了一些了深入的讲解和文章,可供对探索 BPF 更多细节的读者参考。

Cilium 部署中包括如下组件,这些组件运行在 Linux 容器集群中的每个容器节点上。

  • Cilium Agent(Daemon):它是一种使用 Golang 编写的用户空间 daemon,实现与容器运行时的交互,并通过插件编排 Kubernetes 等系统,设置在本地服务器上运行的容器网络和安全性。它提供了一个 API,用于配置网络安全策略、提取网络可见性数据等。
  • Cilium CLI Client:一种用于和本地 Cilium Agent 通信的基本 CLI 客户端,例如配置网络安全或可见性策略。
  • Linux Kernel BPF:一种使用 BPF 功能的数据路径组件,它集成了 Linux 内核功能,并接收运行在内核中的各种钩子和追踪点处的编译后二进制代码。Cilium 编译 BPF 程序,并让内核在网络栈的关键点处运行这些程序,以具备对所有出入容器网络流的可见性和控制性。
  • Container Platform Network 插件:为集成外部网络平台,每种容器平台(例如 Docker、Kubernetes)都具有自己的插件模型。就 Docker 而言,每个 Linux 节点运行一个进程(cilium-docker)处理每个 Docker libnetwork 调用,并传递主要 Cilium Agent 上的数据和请求。建议内核中版本依然在构建中,Cilium 使用了一组用户空间代理( Envoy 是其中之一)提供应用协议层过滤。

图1 Cilium 的架构(图片来自于 Cilium 概念文档

Cilium 可为 REST/HTTP、gRPC 和 Kafka 等现代应用协议提供安全功能。传统的防火墙通常操作于网络第三层和第四层上,运行于特定端口上的协议或者是完全受信的,或者被完全拒绝。Cilium 提供了对单个应用协议请求的过滤功能,例如:

  • 允许所有具有 GET 方法以及“/public/.*.”路径的 HTTP 请求,拒绝所有其它的请求。
  • 允许 service1 在 topic1(Kafka Topic)上生成消息,service2 消费 topic1 上的消息,拒绝所有其它的 Kafka 消息。
  • 要求所有的 REST 调用中存在 HTTP 头部 X-Token 模式“[0-9]+”。

在 Cilium 文档的“ Layer 7 Policy ”一节中给出了最新支持协议的列表,并提供了如何使用的例子。因为 BPF 运行在 Linux 内核中,(理论上)可在不对应用代码或容器配置做任何更改的情况下,应用和更新 Cilium 的安全策略

Cilium 提供了全面的网络安全实现方法,其核心理念围绕着指定一组共享同样安全策略的应用容器安全身份而构建。进而,安全身份会关联到应用容器所发出的所有网络包,并在接收节点处对身份进行验证。安全身份管理的执行使用了一种键值存储。

Cilium 还提供了其它很多网络特性,包括:具备跨多个集群连接所有应用容器能力的基本第三层扁平网络(这意味着无需任何主机间协调就可分配每个主机的 IP)、用于应用容器间流量和外部服务的分布式负载均衡(负载均衡使用允许“几乎可无限扩展”的高效哈希表通过 BPF 实现)、具有元数据的事件监测等深入可观察性、政策决策追踪,以及通过 Prometheus 导出各种度量等。

在近期召开的 KubeCon 北美大会上,“服务网格”得到了广泛的讨论(尤其是围绕着 Istio 控制面板)。Cilium 社区相应编写了一份指南,阐明了Cilium 技术及BPF 的总体前景将如何辅助Istio 实现。Istio 本身使用了Envoy 实现自身的数据面板,并且代理以附加(sidecar)配置形式运行在应用Pod 内。Cilium 在应用Pod 外运行 Envoy ,并为单个 Pod 配置独立的监听器。Cilium 建议:

模型中没有所谓的对错,各自在一系列方面上分别具有一些优点和不足,例如运维复杂性、安全、资源核算、占用空间等。Cilium 未来可能支持运行两个模型中的任一种。

Cilium 项目网站上提供了更多信息,还可以通过 Cilium Slack 提问。

查看英文原文: Cilium 1.0.0-rc4 Released: Transparently Secure Container Network Connectivity Utilising Linux BPF

2018-03-13 19:002264
用户头像

发布了 391 篇内容, 共 150.5 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

低代码组件扩展方案在复杂业务场景下的设计与实践

百度Geek说

npm 企业号2024年7月PK榜

【最新】GPT-4o模型使用心得+无限制使用教学

蓉蓉

gpt4o

重磅!云起无垠荣获“智能模糊测试赛道领航者”等多项殊荣

云起无垠

液压件工厂的MES解决方案:智能生产,高效未来

万界星空科技

mes 万界星空科技 液压件工厂 液压件加工 生产管理MES系统

AE红巨人特效合成插件:Red Giant VFX Suite Mac/win 激活版

你的猪会飞吗

AE插件 AE粒子特效插件

FL Studio怎么提取伴奏 FL Studio怎么给伴奏升降调 flstudio教程

阿拉灯神丁

编曲宿主 编曲软件 水果FL Studio FL Studio 21 音乐软件

如何打造开放领先的可观测性数据底座

乘云数字DataBuff

关键帧功能怎么使用 关键帧控制视频特效怎么用 会声会影视频剪辑软件教程

阿拉灯神丁

教程分享 软件包 会声会影2023 视频剪辑软件

【等保新资讯】等级保护测评服务认证证书样式更换啦!

行云管家

等保 等级保护

大模型时代的基础架构,大模型算力中心建设指南重磅来袭!

博文视点Broadview

Quick BI站稳Gartner ABI挑战者象限,打造“人人能用的BI”

ToB行业头条

数据资产的价值变现及管理规划(AMT企源)

AMT企源

数据资产 数据管理 数据要素

软件测试学习笔记丨JUnit5并行策略

测试人

软件测试

MES系统的功能、架构及应用价值

万界星空科技

数字化转型 生产管理系统 智能制造 mes 万界星空科技

Datadog Dash 2024 新功能解析

观测云

可观测性

什么是圈子论坛系统,圈子论坛系统具备哪些基本功能,社交圈系统

DUOKE七七

MySQL 9.0 悄悄上线,支持面向AI的向量数据库

NineData

MySQL 体验 NineData MySQL9.0 上线

重大丨深中通道今通车!继港珠澳大桥后,三思再度点亮世界工程

电子信息发烧客

Databend 开源周报第 151 期

Databend

智能商品计划系统:品牌商不可或缺的利器

第七在线

服务端性能测试:行业流行性能压测工具介绍

测试人

软件测试

【HDC.2024】探索无限可能:华为云区块链+X,创新融合新篇章

云计算 软件开发 华为云

性能测试:主流压测工具介绍

霍格沃兹测试开发学社

Cilium 1.0.0-rc4发布:使用Linux BPF实现透明安全的容器间网络连接_DevOps & 平台工程_Daniel Bryant_InfoQ精选文章