开发者社区> 问答> 正文

云上多租户隔离方法有哪些?

云上多租户隔离方法有哪些?

展开
收起
今晚就远航 2021-11-26 11:56:43 3201 0
1 条回答
写回答
取消 提交回答
  • 众所周知,虽然内核的namespace 和cgroup 技术有很强的隔离能力,但是内核是一个很大很复杂的系统,因此基于独立内核的容器技术(如 Docker)是不够安全的,很难从根本上彻底保证云上多租户安全,进而需要更好的隔离。业界主要有四种方法来实现这种隔离,如下图所示。

    image.png

    第一种方法是最简单和直接的,就是把容器放在虚拟机里运行,这种方式不需要对软件栈做改动,只是让同一个用户的容器运行在自己的虚拟机里,但这样除了有额外的开销和不够高效,还有两层的维护复杂度。

    第二种方法是MicroVM,仍然使用虚拟化技术来实现安全隔离,但是它的出发点是针对容器场景实现轻量化的虚拟机,并且实现运行时无缝对接容器生态,在保证兼容性的前提下尽量降低运行时和维护开销,并保证原生容器的用户体验。Kata Containers 就是一个MicroVM 方案。首先,对应用来说, 这是一个兼容runC 的容器运行时引擎,可以被Kubernetes 通过containerd/ CRI-O 调用,可以直接运行任何Docker 镜像或OCI 镜像。但与runC 不同的是,它使用了硬件虚拟化技术,直接面对用户应用的不再是宿主机的独立内核,而是一个装在轻量级虚拟机里的内核,即使有未知的安全漏洞导致这个内核被攻击,攻击者仍然无法轻易突破虚拟化技术构建的沙箱。Kata 的思路很不错,但是目前还在迭代完善中。

    第三种方法基于进程虚拟化,使用一个特定的内核来提供Linux ABI,直接虚拟化进程的运行环境。Google 的gVisor 就是这样的进程虚拟化方案,实现了一个新的内核并努力去补齐和兼容Linux 的系统调用。这种方法的问题是很难做到Linux 的全兼容,无法支持部分应用。

    第四种方法基于Unikernel/LibOS, 让应用带上自己的内核,好处在于简化的LibOS 有更小的开销和攻击面,但是妨碍它被更广泛应用的问题在于它往往需要修改应用,只适合比较特定的应用场景。

    资料来源:《弹性计算—无处不在的算力》

    2021-11-26 16:41:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
金融级别大数据平台的多租户隔离实践 立即下载
构建确定性弹性的高可用云上应用网络 立即下载
云平台及租户业务安全性研究思考 立即下载