沙盒化容器:是容器还是虚拟机

121c78d940f0d79a47a3ed6a5194d31e.gif

作者 | Addo Zhang

来源 | 云原生指北

随着 IT 技术的发展,AI、区块链和大数据等技术提升了对应用毫秒级扩展的需求,开发人员也面临着的功能快速推出的压力。混合云是新常态,数字化转型是保持竞争力的必要条件,虚拟化成为这些挑战的基本技术。

在虚拟化的世界,有两个词耳熟能详:虚拟机和容器。前者是对硬件的虚拟化,后者则更像是操作系统的虚拟化。两者都提供了沙箱的能力:虚拟机通过硬件级抽象提供,而容器则使用公共内核提供进程级的隔离。有很多人将容器看成是“轻量化的虚拟机”,通常情况下我们认为容器是安全的,那到底是不是跟我们想象的一样?

容器:轻量化的虚拟机?

容器是打包、共享和部署应用的现代化方式,帮助企业实现快速、标准、灵活地完成服务交互。容器化是建立在 Linux 的命名空间(namespace)和控制组(cgroup) 的设计之上。

406f2a414353fee8a54dcfe95696ada7.png

命名空间创建一个几乎隔离的用户空间,并为应用提供专用的系统资源,如文件系统、网络堆栈、进程ID和用户ID。随着用户命名空间的引入,内核版本 3.8 提供了对容器功能的支持:Mount(mnt)、进程 ID(pid)、Network(net)、进程间通信(ipc)、UTS、用户 ID(user)6 个命名空间(如今已达 8 个,后续加入了 cgroup 和 time 命名空间)。

cgroup 则实施对应用的资源限制、优先级、记账和控制。cgroup可以控制 CPU、内存、设备和网络等资源。

同时使用 namespace 和 cgroup 使得我们可以在一台主机上安全地运行多个应用,并且每个应用都位于隔离的环境中。

虚拟机提供更强大的隔离

fa154745e716d4e5f99dda0972690a4b.png

虽然容器很棒,足够轻量级。但通过上面的描述,同一个主机上的多个容器其实是共享同一个操作系统内核,只是做到了操作系统级的虚拟化。虽然命名空间提供了高度的隔离,但仍然有容器可以访问的资源,这些资源并没有提供命名空间。这些资源是主机上所有容器共有的,比如内核 Keyring、/proc、系统时间、内核模块、硬件。

我们都知道没有 100% 安全的软件,容器化的应用也一样,从应用源码到依赖库到容器 base 镜像,甚至容器引擎本身都可能存在安全漏洞。发生容器逃逸的风险远高于虚拟机,黑客可以利用这些逃逸漏洞,操作容器的外部资源也就是宿主机上的资源。除了漏洞,有时使用的不当也会带来安全风险,比如为容器分配了过高的权限(CAP_SYS_ADMIN 功能、特权权限),都可能导致容器逃逸。

而虚拟机依靠硬件级的虚拟化,实现的硬件隔离比命名空间隔离提供了更强大的安全边界。与容器相比,虚拟机提供了更高程度的隔离,只因其有自己的内核

由此可见,容器并不是真正的“沙盒”,也并不是轻量化的虚拟机。有没有可能为容器增加一个更安全的边界,尽可能的与主机操作系统隔离,做到类似虚拟机的强隔离,使其成为真正的“沙盒”?

b7f9eb583606db255e0b95e4d2af7b18.png

沙盒化容器

答案是有,就是沙盒容器。这种容器就像虚拟机一样有自己的内核,这层内核成为用户空间内核。这层内核要保持容器的轻量级,使用现代编程技术编写,本身非常轻,仅用于作为容器和主机之间的强隔离层。

并且还要支持 OCI 和 CRI 规范,可以与 Docker 和 Kubernetes 等容器工具很好的集成。

6b2d5aa096d2fb856d9411bf4e500282.png

这里简单介绍下 gVisor 和 Kata Containers。

gVisor

gVisor[1] 是使用 Go 编写的应用内核,实现了 Linux 操作系统的大部分接口。其包含了一个叫做 runsc 的 OCI 运行时,提供了应用和宿主机内核间的隔离层。runsc 也实现了与 Docker 和 Kubernetes 的集成,可以很容易的运行沙盒容器。

020f0071f6622efc3e65302b02d73fd2.png

gVisor 为每个容器提供了独立的操作系统内核。应用与 gVisor 内核提供的虚拟环境进行交互,不是直接访问宿主机的内核。gVisor 还限制和管理文件和网络操作,确保容器化应用和主机操作系统之间有两个隔离层。通过减少和限制应用与主机内核的交互,尽可能减小攻击者绕过容器隔离机制的攻击面。

与大部分内核不同,gVisor 不需要固定的物理资源;相反,其利用现有的主机内核功能,并作为一个正常进程运行。换句话说,gVisor 以 Linux 的方式实现了 Linux。

gVisor 沙盒由多个进程组成,这些进程共同构成了可以运行一个或多个容器的环境。

每个沙盒都有其独立的实例:

Sentry:运行容器的内核,拦截并响应应用的系统调用。

沙盒中的每个容器都有其独立的实例:

Gofer:提供容器文件系统的访问。

4ae920ef25a7f712aaaa13fed0776d4e.png

Kata Containers

Kata Containers[2] 与容器一样轻量级且快,并与容器管理层集成-- 包括 Docker 和 Kubernetes 等流行的容器编排工具 -- 同时还提供了与虚拟机一样的安全。

c61071685e23f398a9898e75c29d78d3.png

Kata Containers 与 OCI、容器运行时接口(CRI)和容器网络接口(CNI)完全集成。它支持各种类型的网络模型(例如,passthrough、MacVTap、桥接、tc 镜像)和可配置的访客内核,以便需要特殊网络模型或内核版本的应用都可以在上面运行。上图显示了 Kata VM 中的容器如何与现有编排平台交互。

Kata 在主机上有一个 kata 运行时来启动和配置新容器。对于 Kata VM 中的每个容器,主机上都有一个相应的 Kata Shim。Kata Shim 接收来自客户端(例如 docker 或 kubectl)的 API 请求,并通过 VSock 将请求转发给 Kata VM 内的代理。Kata 容器进一步进行了几项优化,以减少 VM 启动时间。

Kata Containers 由两个开源项目合并而来:Intel 的 Clear containers 和 Hyper runV。前者注重性能(引导时间小于 100ms)和安全;而后者通过支持不同的 CPU 架构和管理系统,将技术无关放在首位。Kata Containers 可以说集二者之大成。

9d7c771b4ff6a6e619dc2f12133e540f.png

与传统的容器相比,Kata Container 做到了虚拟机的隔离,集虚拟机的安全性和容器的性能于一身。

总结

与普通容器相比,沙盒容器提供了更强的隔离性,这种强隔离提供了更高的安全性。同时这类容器技术支持 OCI 和 CRI 规范,可以与现有的容器工具以及 Kubernetes 很好的集成。

引用链接

[1] gVisor: https://github.com/google/gvisor
[2] Kata Containers: https://katacontainers.io

2877828d3278303f26a87c8420de3495.gif

65c81fc38ef4f21125dbe61a0ecf9189.png

往期推荐

云端上的字节,引擎火力全开

从Docker的信号机制看容器的优雅停止

Redis会遇到的坑,你踩过几个?

低代码的最大价值点是“技术平民化”吗?

e17f03ba20d6b3edb02e26db82125ba4.gif

点分享

fefcb8a8dff3410e97a758da38f78abf.gif

点收藏

01308d596769426e38c775ad225d1516.gif

点点赞

3b2152df3336b17034d1a1e3c5f0cdc4.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时数仓入门训练营:实时计算 Flink 版 SQL 实践

简介: 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打磨课程内容,直击当下…

Web3.0 兴起之际,元宇宙这杯羹怎么分?

作者 | aNumak & Company译者 | 弯月出品 | CSDN(ID:CSDNnews)在听到元宇宙时,你首先想到的可能是科幻小说,或另一个宇宙。你的联想没有错,元宇宙是科幻作家尼尔斯蒂芬森在小说《雪崩》中创造的词语。意…

git 撤销挂起的更改_小姐姐带你用Git

首先,Git 是什么?项目版本管理工具Git 的工作原理 又 是怎么样的?Git最重要的两个概念:1.工作区和缓存区、版本库2.master 指针 和 HEAD 指针现在,小姐姐打开iterm,跟着一起使用git叭Git init - 初始化一个…

如何利用云原生技术构建现代化应用

简介: 阿里云为企业提供了基于阿里云互联网架构的解决方案,也同时让这些新的互联网应用、新的电商平台应用迁移到阿里云上。 作者|愚奇 ​ 今天,云和云计算技术已经被企业广泛所接受,关于云、云计算、云原生都有非常多…

加速引擎SmartFlow助力浪潮云海超融合2021H1中国市场增速第一

近日,国际数据公司(IDC)发布《2021 H1软件定义存储和超融合系统市场报告》显示,浪潮云海超融合产品2021 上半年同比增长135.6%,为业内平均增幅(49%)2.7倍,增速…

golang 反射_Golang 会淘汰 Python 吗?

打开的第一件事就是星标公众号然后扫码进群作者 | Michael lyam译者 | 孙薇,责编 | 郭芮本文经授权转自公众号 CSDN(ID:CSDNnews)Golang和Python究竟哪种语言更适合AI工程师?Python很出色,但对于AI编程来说,Golang或许…

AI运动:阿里体育端智能最佳实践

简介: 过去一年,阿里体育技术团队在端智能方面不断探索,特别在运动健康场景下实现了实践落地和业务赋能,这就是AI运动项目。AI运动项目践行运动数字化的理念,为运动人口的上翻提供了重要支撑,迈出了阿里体育…

网站攻击软件_如何防止网站建设中出现安全问题?

在信息时代,网络安全变得越来越重要了,个人信息,企业信息对安全的要求也越来越高。网页上的漏洞,木马,病毒等层出不穷,这可能导致公司网站或个人网站上披露的信息泄露。那么如何防止网站建设中出现安全问题…

[JDBC] Kettle on MaxCompute 使用指南

简介: Kettle是一款开源的ETL工具,纯Java实现,可以在Windows、Unix和Linux上运行,提供图形化的操作界面,可以通过拖拽控件的方式,方便地定义数据传输的拓扑 。基本讲介绍基于Kettle的MaxCompute插件实现数据…

飞桨企业版重磅发布智能边缘控制台 5分钟零代码自动化模型部署

12月12日,由深度学习技术及应用国家工程实验室主办的WAVE SUMMIT 2021深度学习开发者峰会在上海召开。此次峰会,最让开发者惊艳的是飞桨开源框架v2.2的重磅发布。百度深度学习技术平台部高级总监马艳军与百度AI产品研发部总监忻舟,就飞桨新版…

Flink 1.12 资源管理新特性回顾

简介: 介绍 Flink 1.12 资源管理的一些特性,包括内存管理、资源调度、扩展资源框架。 本文由社区志愿者陈政羽整理,Apache Flink Committer、阿里巴巴技术专家宋辛童,Apache Flink Contributor、阿里巴巴高级开发工程师郭旸泽分享…

openoffice转化太慢且不能多线程_专访橙光卿蓝蓝:多线程IP如何赢在起跑线?丨制鲜者IP作者...

这是鲜喵的第 1353 篇吐血原创喵族码字员:郭小蝈编者按纵观这几年的爆款剧集和电影,无不是IP改编而来。我们认为一部IP改编影视作品的成功,首先是文学IP作品的成功,是一个鲜活、打动人心“故事”的成功,是背后原著作者…

Dubbo 跨语言调用神兽:dubbo-go-pixiu

简介: Pixiu 是基于 Dubbogo 的云原生、高性能、可扩展的微服务 API 网关。作为一款网关产品,Pixiu 帮助用户轻松创建、发布、维护、监控和保护任意规模的 API ,接受和处理成千上万个并发 API 调用,包括流量管理、 CORS 支持、授权…

微软亚洲研究院成立理论中心,以理论研究打破AI发展瓶颈

微软亚洲研究院成立理论中心,以理论研究打破AI发展瓶颈微软亚洲研究院成立理论中心,以理论研究打破AI发展瓶颈12月11日,微软亚洲研究院举办了2021理论学术研讨会,来自学术界和产业界的理论研究专家齐聚一堂,分享了最新…

Serverless 时代下大规模微服务应用运维的最佳实践

简介: 原来的微服务用户需要自建非常多的组件,包括 PaaS 微服务一些技术框架,运维 IaaS、K8s,还包括可观测组件等。SAE 针对这些方面都做了整体的解决方案,使用户只需要关注自己的业务系统,这极大地降低了用…

极光推送 请检查参数合法性_极光小课堂 | 极光推送在人脸识别终端管理系统中的应用...

项目背景最近开发的一款人脸识别终端管理系统,主要包括运营平台、企业后台管理系统、APP 端、智能人脸识别终端模块。下图是系统的架构图:其中各个模块之间都需要即时通讯,比如:APP 端用户注册完成之后,企业管理员在后…

实时数仓入门训练营:Hologres性能调优实践

简介: 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打磨课程内容,直击当下…

re:Invent大会第十年,亚马逊云科技推出了哪些底层自研技术

编辑 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于视觉中国 一转眼, 亚马逊云科技的云计算已经推出了十五年,亚马逊云科技的年度大会 re:Invent 也举办到了第十年。 今年 re:Invent全球 大会上,亚马逊云科技继续向前,发布系列重…

微信小程序(uniapp)api讲解

Uniapp是一个基于Vue.js的跨平台开发框架,可以同时开发微信小程序、H5、App等多个平台的应用。下面是Uniapp常用的API讲解: Vue.js的API Uniapp采用了Vue.js框架,因此可以直接使用Vue.js的API。例如:v-show、v-if、v-for、comput…

mysql 5.7 binlog 压缩_mysql binlog压缩处理

前一段时间系统mysql压力较大,产生大量binlog,大量的binlog删除后又担心后期出现问题难以调查,保存后又占用本身的空间存储。每天产生的binlog可以多达5-6G。因此考虑是否扩容机器达到目的?经过运维同学 建议,可以压缩…