容器化以后不同业务和数据之间的隔离如何实现?

容器化后,容器之间共享同一个操作系统内核以及其他组件,在收到攻击之类的情况发生时,更容易通过底层操作系统影响到其他容器。安全问题也是重中之重。这个问题有没有什么好的办法解决?不相关应用之间的数据隔离有什么建议和办法?...显示全部

容器化后,容器之间共享同一个操作系统内核以及其他组件,在收到攻击之类的情况发生时,更容易通过底层操作系统影响到其他容器。安全问题也是重中之重。
这个问题有没有什么好的办法解决?
不相关应用之间的数据隔离有什么建议和办法?

收起
参与9

查看其它 1 个回答WilliamShen的回答

一般而言,容器本质上是进程的虚拟化(隔离),但操作系统内核是共享的,所以,在这一点上,容器的安全性没有虚拟机好。但是,我们可以通过以下方法增加安全性:
1. SELinux: 

  • SELinux通过应用策略旅行将容器进程与主机分开
  • 在进程,文件和系统级对象上设置标签,使用基于策略的规则控制权限,并根据策略执行Linux内核应用的规则
  • 启用SELinux后,以特权权限启动的容器的风险也将降低

2. 精简化容器操作系统:红帽OpenShift采用了RHEL CoreOS,这是一个更加轻量级、更加安全、专门为容器定制的操作系统,从而减少了操作系统端的风险。

3. 容器镜像安全:这个要结合镜像仓库和镜像扫描工具。红帽本身提供了Clair镜像扫描工具和Quay的镜像仓库。同时,红帽官方提供了供免费下载的镜像:universal base image(UBI),这些UBI都是经过检测过比较安全的。

4. 红帽OpenShift默认禁止容器以root用户启动(可以修改),可以防止潜在的漏洞。

对于数据隔离,一般而言,需要采取以下措施:
1. 不相关应用应该放在不同的OpenShift Project(相挡于K8S namespace),OpenShift Project之间采用基于角色的访问机制(RBAC)互相隔离。
2. Project之间可以采用软件定义网络的隔离(不同的VLAN),防止网络之间的访问。
3. OpenShift将来的版本支持不同Project的pod/service分配在公有云或Openstack的VPC网段,进一步增加安全性。
现在K8S在这方面相比OpenShift功能比较欠缺。

软件开发 · 2019-12-26
浏览2228

回答者

WilliamShen 最近回答过的问题

回答状态

  • 发布时间:2019-12-26
  • 关注会员:3 人
  • 回答浏览:2228
  • X社区推广