容器如何落地在华为公有云??
容器(container),并不是一种虚拟化(virtualization)技术,而是一种进程隔离(isolation)技术,从内核空间、资源和安全等方面对进程做隔离。
Linux 容器采用 Linux 控制组(cgroups)和命名空间(namespace),其中,cgroups 定义了一个进程能使用什么(CPU、内存、网络等资源),namespace 定义了一个进程能看到什么(uid,gid,pid,mount,filesystem等)。一方面,并非所有系统资源都可以通过这些机制来控制。另一方面,在Linux 容器中运行的应用程序与常规(非容器化)应用程序以相同的方式访问系统资源;直接对主机内核进行系统调用。内核以特权模式运行,允许它与必要的硬件交互并将结果返回阴应用程序。因此,即使使用了很多限制,内核仍然面向恶意程序暴露出了过多的攻击面。除了cgroups 和 namespace,Linux 容器还会使用到象 seccomp 这样的技术。seccomp是内核防火墙,限制一个进程对内核系统调用(systemcall)的访问限制,能够在应用程序和内核之间提供更好的隔离,但是它们要求用户创建预定义的系统调用白名单。在实际中,很难事先罗列出应用程序所需的所有系统调用。如果你需要调用的系统调用存在漏洞,那么这类过滤器也很难发挥作用。因此,容器被认为不具备和虚拟机以及沙盒(sanbox)一样的隔离能力。关于容器、虚拟机和沙盒之间的区别。
将多租户隔离模式分为两大类:
弱隔离(Soft multi-tenancy):同一个组织中的多个用户使用同一个集群。这种隔离模式中,因为用户处于同一个组织中,因此互相之间默认是信任关系,但是也存在可能的情况,比如有恶意的员工。这种隔离模式的主要目的就是为了防止这种恶意事件。
强隔离(Hard multi-tenancy):来自不同组织的多个用户使用同一个集群。这种隔离模式中,默认就假定所有用户都是潜在恶意的,因此这种模式的主要目的是阻止租户之间的互相访问。
从上面的定义可以看出,基本上,私有云的隔离模式是弱隔离模式,而公有云的隔离模式是强隔离模式。
因为容器天生隔离不足,如果只是采用传统 Linux 容器的话,公有云往往采用每个用户单独创建 Kubernetes 集群的方式来实现强隔离:
- 点赞
- 收藏
- 关注作者
评论(0)