当前位置: 首页 > news >正文

云原生场景下的容器网络隔离技术

云原生场景下的容器网络隔离技术

一、研究背景

随着云计算时代的到来,尤其是容器化技术的飞速发展,云原生作为云计算的未来阶段,其安全势必成为云安全的主要战场。从目前的云原生环境来看,云原生网络安全问题层出不穷,威胁程度逐渐上升,从业人员面临着严峻的挑战。

例如,此前Akamai公司进行了一项实验,将一个简单的Docker容器蜜罐用于攻击测试,结果显示该容器在24小时内被攻击者用于四起不同的犯罪活动,这些攻击的目的各不相同:一起攻击试图使用容器作为代理,以访问数据流或其他服务,另一起企图让目标感染僵尸网络,还有一起执行加密货币挖掘,最后一起是通过容器针对居家办公用户实施诈骗。

此外,2018年特斯拉AWS上部署的K8S Dashboard因为暴露在公网,没有做认证和授权控制,也没有对网络访问做控制,导致黑客直接从dashboard中获取S3凭证,从而获取遥测数据,恶意拉取POD,进行挖矿行为。

从上面案例我们可以看出,云原生安全不仅仅要应对传统安全问题,更面临着全新的挑战。在众多安全技术手段中,网络隔离技术作为最早、最基础、最为核心的安全技术手段之一,本文章也将重点围绕着网络隔离技术,以传统隔离与云原生隔离两个角度进行分析,着重对容器网络隔离技术做介绍。

二、传统的隔离技术–传统防火墙

随着云计算的普及,网络边界日渐模糊,这使得传统防火墙基于边界流量实现隔离显得有点格格不入,无法适配云原生场景下的隔离需求。

传统防火墙作为实现传统隔离的重要手段,在云原生场景下,主要面临着以下几个问题:

1. 容器 IP 的多变性,一旦容器ip地址改变,针对不变的ip地址为“锚点”实现的防火墙访问控制将无法生效;

2. 网络攻击隐蔽且多变,业务平台需更强的威胁识别和处置能力;

3. 云原生场景下,对灵活弹性扩展需求高,需要安全策略和能力快速匹配;

此外,在CNCF 发布的《云原生安全白皮书》也指出传统基于边界的安全防护机制,如防火墙等,在云原生的场景下很难面面俱到。所以,在云原生场景下,为了更好保护我们的业务容器安全,我们需要一些新的隔离技术去实现网络隔离。

三、云原生隔离技术–容器代理实现的隔离方法

3.1 基于k8s实现的容器隔离

关于云原生场景下的原生的网络隔离技术,其中Kubernetes提供了NetworkPolicy和istio中的AuthorizationPolicy ,两者都支持按Namespace级别的网络隔离,达到访问外部资源隔离的目的。其中NetworkPolicy还支持按pod级别去做网络访问控制,利用label指定namespaces或pod,底层通过iptables实现,是大家比较熟悉的pod访问控制实现技术,下面我们简单介绍一下NetworkPolicy的使用场景。

NetworkPolicy使用场景示例如下:

要求只容许指定pod访问服务:

其网络策略如下:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:name: api-allow
spec:podSelector:matchLabels:    //匹配的lable如下app: bookstore role: apiingress:- from:- podSelector:matchLabels:      //指定可以容许访问的pod需要的lableapp: bookstore

实现效果如下:

img

从上面示例可以看出,NetworkPolicy可以通过指定对应的labels实现对Namespace 和Pod 级别的网络隔离。对比于传统的单一外部防火墙,NetworkPolicy实现了在一个集群内的pod间网络隔离。也就是在某些需要的 Pod 之间架起防火墙,实现了细粒度的pod网络访问隔离策略。正是因为它的这些优点,目前市面上的容器安全产品的网络隔离有很多都有一些NetworkPolicy的影子。

但是如果要基于NetworkPolicy做一个安全产品的网络隔离技术时,NetworkPolicy还是存在着很多缺点,主要是以下几点:

  • 性能差,无法满足大规模网络场景的隔离需求(目前各个cni在NetworkPolicy 的实现上,一般基于iptables的方式,假如流量或者需要管控的pod过多时,对集群性能影响较大,甚至可能导致 iptables不堪重负);
  • 适用性差,目前类似于Flannel 这种流行的cni插件,并没有实现对NetworkPolicy的支持。此外,对于非k8s的场景下,例如docker compose、docker Swarm、OpenShift等环境,NetworkPolicy并不能支持;
  • 细粒度不够,目前NetworkPolicy只能实现对Namespace 和Pod 级别的网络隔离,对于docker直接起的业务容器,并不能够起到防护作用。此外,目前NetworkPolicy也只能做到四层网络的防护,并不能实现对第七层网络级别的防护;
  • 易用性差,每次配置都需要创建对应的yaml、无法实现自动化部署,存在效率低的问题。此外,对于开发或者运维人员很难做到“一配即中”的效果,而规则错误很可能导致业务受影响,配置难度和试错成本极高;
  • 灵活性差,云原生场景下,对灵活弹性扩展需求高,需要安全策略和能力快速匹配。

总的来说,NetworkPolicy在当前阶段,只适用于部分场景对小规模的pod进行网络隔离,不能作为一个成熟的网络隔离技术在安全产品中使用。

3.2 容器代理实现的隔离方法

由上可知,networkPolicy的实现方案存在着众多缺点,所以我们还是需要在云原生的场景下探索新的网络隔离方法,接下来我以容器代理的思路为大家介绍云原生场景下比较成熟的隔离方案。

在介绍容器代理的方式之前,先简单介绍容器之间的网络通信。首先无论pod还是docker之间的通信,它们都会在自己的网络命名空间下与节点上的网络命名空间建立veth对进行连接通信,这些虚拟接口可以分布在多个命名空间上。

下面以k8s的网络通信举例,在k8s中,将veth对一侧分配给 root network namespace也就是节点的网络命名空间,另一侧分配给 Pod 的网络命名空间。每个 veth 对就像一根网线,连接两侧并允许流量在它们之间流动,如下图:

img

基于上面的基础,我们可以在云集群中的每一个节点上部署一个代理容器,将被代理容器或者pod与宿主机通信的veth piar进行重组,通过代理容器的veth piar连接两侧,效果图如下:

img

通过上述代理容器的方式,我们可以对节点上面其他容器和pod进行流量控制。基于packet mmap对网络连接进行分析,实现对容器网络通信的网络访问控制,实现网络隔离的效果。

同时,它也解决了NetworkPolicy很多存在的缺点,具体为以下几点:

  • 性能影响小,不需要添加多余的iptables规则,它可以通过TC或者XDP的方式对流量包进行转发,将性能影响降到最小;
  • 适用性广,与网络插件解绑,同时支持docker compose、docker Swarm、OpenShift等环境;
  • 细粒度更高,支持容器为最小控制单元;
  • 灵活性高,满足云原生场景下灵活弹性扩展需求高的特点。

3.3 理想的容器网络隔离技术需要具备的特点 通过以上两种云原生网络隔离实现方式的分析,我们可以推断出一个理想的容器网络隔离技术需要满足以下特点:

  • 性能影响,实现容器网络防护的同时,需要尽量不去影响集群性能和业务容器的正常运行; 适用性,不应该局限于某一种场景,给用户带来迁移或者架构更新的成本;
  • 细粒度,支持容器为新的最小控制单元。另外,目前主流的零信任产品网络防护只做到4层,理想的容器网络隔离技需要做到7层网络防护的效果;
  • 安全策略能力,随着云原生可视化技术的成熟,是安全策略的实现基础,基于云原生场景下“东西向”和“南北向”流量的可视化,隔离技术需要实现策略的自动生成更新;
  • 灵活性,针对云原生场景下灵活弹性扩展需求高的特点,隔离技术需要做到安全策略和能力快速匹配,实现快速部署以及弹性伸缩。

四、总结

本文从传统网络隔离与云原生网络隔离两个角度出发,分析了现有的网络隔离技术的特点,讨论了云原生场景下网络隔离技术需要满足的特点。

  • 首先我们通过分析传统隔离得出,在面对复杂的云原生应用场景时,为了更好保护我们的业务容器安全,我们需要一些新的隔离技术去实现网络隔离。
  • 然后,我们通过介绍目前云原生网络隔离的两种实现方案,得出一个理想的容器网络隔离技术需要满足哪些特点。
  • 最后,希望通过本篇文章的分享,你能有所收获。

五、参考链接

1.https://ahmet.im/blog/kubernetes-network-policy/

2.https://kubernetes.io/docs/concepts/services-networking/network-policies/

3.https://www.51cto.com/article/715804.html 4.https://en.wikipedia.org/wiki/N

相关文章:

云原生场景下的容器网络隔离技术

云原生场景下的容器网络隔离技术 一、研究背景 随着云计算时代的到来,尤其是容器化技术的飞速发展,云原生作为云计算的未来阶段,其安全势必成为云安全的主要战场。从目前的云原生环境来看,云原生网络安全问题层出不穷&#xff0…...

用python绘制有向图

目录 添加边权重的有向图思路介绍代码实现效果图设置不同的样式节点和边的有向图思路介绍代码实现效果图下面的Python代码用于绘制有向图,其中使用了 networkx和 matplotlib.pyplot等库。 添加边权重的有向图 思路介绍 首先,创建了一个空的有向图像对象G,并添加了4个节点…...

Spring MongoDB 开发教程(一)—官方原版

MongoDB支持包含一系列功能:Spring配置支持基于Java的configuration类或Mongo驱动程序实例和副本集的XML命名空间。MongoTemplate帮助类,在执行常见的Mongo操作时提高生产力。包括文档和POJO之间的集成对象映射。将异常转换为Spring的可移植数据访问异常…...

数据结构——二叉搜索树

一、二叉搜索树概念 二叉搜索树又叫二叉排序树,它或是空树,或是具有以下性质的二叉树: (1)若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值; (2)若它的…...

23年5月高项学习笔记3---项目管理概述

项目是创造独特的产品、服务或成果而进行的临时性的工作 独特:每个项目都不一样 可交付成果:某一过程,阶段或项目完成时形成的独特的并且可验证的产品、服务或成果。 临时的:明确的起点和终点、 -------- 项目集: 相…...

【组织架构】中国铁路成都局集团有限公司

0 参考 中国铁路成都局集团有限公司 1 公司介绍 中国铁路成都局集团有限公司,是中国国家铁路集团有限公司管理的18个铁路局集团有限公司之一,简称“成局”,地处中国西南,管辖范围辐射四川、贵州、重庆地区。管内地形复杂&#x…...

剧前爆米花--爪哇岛寻宝】java多线程案例——单例模式、阻塞队列及生产者消费者模型、定时器、线程池

作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是关于java多线程案例的文章,进行了对单例模式、阻塞队列及生产者消费者模型、定时器和线程池的讲解,希望对你有所帮助! 目录 单例模式 懒汉模式实现 饿…...

Guitar Pro8中文版更新说明及系统要求介绍

Guitar Pro吉他软件是初学作曲,特别是同时又初学吉他的朋友们的良师益友,是一款极佳的初级软件,是非实时作曲软件之中的一件佳作。Guitar Pro在吉他和弦、把位的显示、推算、查询、调用等方面,也异常方便、简洁、直观和浩瀚&#…...

【id:19】【20分】A. 三数论大小(引用)

题目描述 输入三个整数,然后按照从大到小的顺序输出数值。 要求:定义一个函数,无返回值,函数参数是三个整数参数的引用,例如int &a, int &b, int &c。在函数内对三个参数进行排序。主函数调用这个函数进行…...

To_Heart—总结——FWT(快速沃尔什变换)

目录闲话拿来求什么或与异或闲话 这个比FFT简单了很多呢,,大概是我可以学懂的水平! 好像是叫 快速沃尔什变换 ? 拿来求什么 以 FFT 来类比。我们 FFT 可以在 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 的复杂度下实现求解&#xff1…...

Google巨大漏洞让Win10、11翻车,小姐姐马赛克白打了

早年间电脑截图这项技能未被大多数人掌握时,许多人应该都使用过手机拍屏幕这个原始的方式。 但由于较低的画面质量极其影响其他用户的观感,常常受到大家的调侃。 但到了 Win10、11 ,预装的截图工具让门槛大幅降低。 WinShiftS 就能快速打开…...

腾讯云服务器部署内网穿透(让其他人在不同ip可以访问我们localhost端口的主机项目)(nps开源项目)

首先打开shell连接我们的云服务器 然后我们再opt目录下面创建一个文件夹用来存放我们的压缩包和文件 mkdir /opt/nps 这个是它官方的安装图解.所以我们按照这个docker安装过程来: 然后我们用docker安装镜像.这样的话比较简单一点 docker pull ffdfgdfg/nps 然后我们查看docker…...

IDS、恶意软件、免杀技术、反病毒技术、APT、对称加密、非对称加密以及SSL的工作过程的技术介绍

IDS的简单介绍IDS是:入侵检测系统(intrusion detection system,简称“IDS”)是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于&…...

怎么把pdf转换成高清图片

怎么把pdf转换成高清图片?可以使用以下两种方法: 方法一:使用Adobe Acrobat Pro DC 1、打开需要转换的PDF文件,点击“文件”菜单中的“导出为”,在弹出的菜单中选择“图像”,然后选择“JPEG”。 2、在“…...

MATLAB 系统辨识 + PID 自动调参

系统辨识 PID 自动调参 文章目录系统辨识 PID 自动调参1. 导入数据1.1 从 Excel 中导入数据2. 系统辨识3. PID 自动调参1. 导入数据 1.1 从 Excel 中导入数据 如果不是从Excel中导入可以跳过该步骤 导入函数: [num,txt,raw]xlsread(xxx\xxx.xlsx);num返回的是…...

【vue3】组合式API之setup()介绍与reactive()函数的使用·上

>😉博主:初映CY的前说(前端领域) ,📒本文核心:setup()概念、 reactive()的使用 【前言】vue3作为vue2的升级版,有着很多的新特性,其中就包括了组合式API,也就是是 Composition API。学习组合…...

爬虫Day3 csv和bs4

爬虫Day3 csv和bs4 一、CSV的读和写 1. 什么是csv文件 csv文件叫做:逗号分隔值文件,像Excel文件一样以行列的形式保存数据,保存数据的时候同一行的多列数据用逗号隔开。 2. csv文件的读写操作 1) csv文件读操作 from csv import reader…...

nnAudio的简单介绍

官方实现 https://github.com/KinWaiCheuk/nnAudio; 论文实现: nnAudio: An on-the-Fly GPU Audio to Spectrogram Conversion Toolbox Using 1D Convolutional Neural Networks; 以下先对文章解读: abstract 在本文中&#x…...

【id:134】【20分】B. 求最大值最小值(引用)

题目描述 编写函数void find(int *num,int n,int &minIndex,int &maxIndex),求数组num(元素为num[0],num[1],...,num[n-1])中取最小值、最大值的元素下标minIndex,maxIndex(若有相同最值&#xff0…...

Java 面向对象

一、Java 8 增强的包装类 Java是面向对象的编程语言,但它也包含了8种基本数据类型,这8种基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备对象的特性。(没有成员变量、方法可以被调用)。Java之所以提…...

保姆级图解:NCCL的bootstrap网络连接到底是怎么“手拉手”建起来的?

保姆级图解:NCCL的bootstrap网络连接到底是怎么"手拉手"建起来的? 想象一群小朋友要围成一个圆圈玩游戏,但彼此都不认识。NCCL的bootstrap网络建立过程,就像这个"手拉手成圈"的奇妙旅程。本文将用最直观的类…...

CircuitPython开发实战:从环境搭建到内存优化与硬件选型

1. CircuitPython开发环境搭建与核心概念 如果你是从Arduino或者传统的嵌入式C开发转向微控制器编程,第一次接触CircuitPython的感觉,就像是突然有人给你递了一把万能钥匙。过去,点个灯、读个传感器,你得跟寄存器、数据手册、还有…...

[4G5G专题] RRU CFR技术:从“削峰”到“塑形”的算法演进与工程实践

1. 从“削峰”到“塑形”:CFR技术的本质蜕变 第一次接触CFR(Crest Factor Reduction)技术时,我把它简单理解为“信号削峰器”——就像用菜刀切掉蛋糕顶端多余的部分。早期在4G RRU(Remote Radio Unit)项目中…...

GaussDB定时任务管理:从基础到高级实践

一、定时任务体系架构1.1 双引擎调度架构GaussDB采用​​内置调度器外部集成​​的混合架构:​​内置调度器​​:基于PostgreSQL的pgAgent增强实现 ​​外部集成​​:支持与Linux cron、Kubernetes CronJob联动 ​​分布式调度​​&#xff1…...

B站成分检测器:3秒洞察评论区用户真实身份的智能工具

B站成分检测器:3秒洞察评论区用户真实身份的智能工具 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker 在B站…...

使用 Taotoken 后 API 调用延迟与稳定性体验分享

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 Taotoken 后 API 调用延迟与稳定性体验分享 作为一名日常需要频繁调用大模型 API 的开发者,服务的稳定性和响应速…...

HsMod终极指南:50+功能全面解锁炉石传说模改插件

HsMod终极指南:50功能全面解锁炉石传说模改插件 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架开发的炉石传说模改插件,通过50多项实用…...

OpenART mini变身智能小车“眼睛”:基于颜色识别的自动追踪实战(附完整Python代码)

OpenART mini变身智能小车“眼睛”:基于颜色识别的自动追踪实战 在智能机器人领域,视觉感知一直是赋予机器"智慧"的关键技术。而OpenART mini作为一款轻量级视觉模块,正逐渐成为创客和嵌入式开发者的首选工具。本文将带您深入探索如…...

2026年小白程序员必看:5项吃香AI技能,助你薪资翻倍(建议收藏)

2026年小白程序员必看:5项吃香AI技能,助你薪资翻倍(建议收藏) 随着AI大模型重构职场规则,掌握相关技能将极大提升工作效率和薪资。本文为小白和程序员推荐了5项最吃香的AI技能:RAG、提示词工程、多模态大模…...

信息量模型避坑指南:搞懂这3个关键点,你的地质灾害评价结果才靠谱

信息量模型避坑指南:搞懂这3个关键点,你的地质灾害评价结果才靠谱 在地质灾害易发性评价领域,信息量模型因其计算简单、结果直观而广受欢迎。然而,许多GIS从业者和科研人员在应用该模型时,常常陷入"流程正确但结果…...