OpenShift是否通过在主机级别隔离容器来支持真正的多租户?

时间:2016-03-30 09:55:45

标签: security docker openshift containers kubernetes

我花了一段时间来了解OpenShift是什么以及它做了什么(除了Kubernetes本身)。

我的问题涉及当前版本的OpenShift Origin 1.1(OpenShift 3.1)。

  • OpenShift是否通过在专用主机上运行来自不同租户的容器来支持真正的多租户?

如果不太详细,应该是常识(如果您熟悉Docker / Container安全问题),您可以保护租户免受容器突破或其他漏洞只能通过在主机级别容器隔离来实现。

(我强烈推荐这本电子书Docker Security)。

OpenShift的文档仅描述了项目和用户的概念,而Kubernetes文档仅说明了用于确定某些资源的命名空间的概念。

如果您有将OpenShift作为开发人员或客户的多租户Container / PaaS平台运行的经验,感谢您对此的任何见解或您的想法。

2 个答案:

答案 0 :(得分:2)

主机级别多租户与真正的多租户不同。 Kubernetes和docker保护主机。这不是OpenShift。例如,https://access.redhat.com/documentation/en-us/openshift_container_platform/3.10/html/container_security_guide/security-hosts讨论了cgroup和名称空间提供保护。 cgroups和名称空间是docker在Linux中的工作方式。

OpenShift确实为开发人员提供了RBAC。如果您使用OpenShift“源到映像”功能,它们将为整个群集提供额外的保护。但是OpenShift不能在Pod或服务级别提供保护。如果要确保Pod的安全,则需要自定义SDN,如Calico(https://docs.projectcalico.org/about/about-calico)和Flannel(https://github.com/coreos/flannel)。

为什么这很重要? 拥有主机级别的安全性等同于在家中聚会时专注于门上的锁。参加聚会时,您不会将钱包或社会保险卡留在厨房的桌子上,因为他们是一群到处乱跑的人。如果您在同一个集群中同时运行多个租户-您将参加一个聚会。一堆租户正在同一集群上运行计算。

但是标签和污点呢? 标签和异味就像是说我们要开一个派对,但每个人都同意呆在自己的房子里。每个租户都有自己的房东。从安全角度来看,您将获得什么呢?您可以轻松地在直线IaaS(例如AWS)上运行,并保持相同的姿势。唯一的区别是您没有付给RedHat一船钱。此外,OpenShift不能确保租户使用特定的标签或污点...

答案 1 :(得分:1)

是的,您可以通过在不同的主机上运行容器来保持容器彼此分离。

这样做的方法是配置调度程序策略。调度程序不是"时间调度程序",而是资源调度程序,它将确定运行pod的位置。

可以使用反关联性规则专门配置在不同节点上运行pod(一个或多个容器的集合)。

一般情况下请参阅https://docs.openshift.com/enterprise/3.0/admin_guide/scheduler.htmlhttps://docs.openshift.com/enterprise/3.0/admin_guide/scheduler.html#affinity专门了解如何设置此配置的详细信息。

https://github.com/kubernetes/kubernetes/blob/master/docs/design/podaffinity.md处的文档也提供了对此的深入了解。