引言 : 容器是把双刃剑,一方面,它可以标准化应用的运行环境,实现DevOps,应用版本快速迭代,随需弹性伸缩。另一方面,它是一种全新的技术,对云计算生态从计算、存储、网络都产生了新的技术变革,如仅只是将容器作为工具替代应用打包或运行的方式,将会对系统造成较大的风险。
容器技术近几年的热度不言而喻,2016年是Docker的生产年,有很多公司将容器和容器平台从研发环境也搬上了生产环境。无论的开发还是运维人员都非常认可容器技术。
同时,容器也是把双刃剑,一方面,它可以标准化应用的运行环境,实现DevOps,应用版本快速迭代,随需弹性伸缩。另一方面,它是一种全新的技术,对云计算生态从计算、存储、网络都产生了新的技术变革,如仅只是将容器作为工具替代应用打包或运行的方式,将会对系统造成较大的风险。
那么如何保证在生产环境中安全的使用容器,且能更大程度发挥容器快速分发、弹性伸缩、灵活部署等特性呢? 本文将分享一些docker的安全实战经验和使用建议。
在有容云的丰富客户实践中,遇到过各种安全问题,列出主要问题如下:
-
容器引擎运行造成宿主机系统崩溃
-
镜像存在漏洞风险,容器规模越大,对生产环境产生影响越大
-
容器root权限运行,无法进行同主机下多容器隔离
-
容器中挂载宿主机目录,对主机目录的更改导致宿主机崩溃或异常
如果您也遇到以上问题,建议仔细阅读本文。
从容器云平台的搭建框架和使用来看,大致分为三个步骤,如下图所示:
1、容器云平台的搭建。包括管理结点、主机结点的角色配置,镜像仓库的搭建与配置等。
2、管理员通过页面访问,对环境进行配置和部署。
3、运维或应用部署人员将应用运行在容器云平台之上。
基于此步骤的描述,我们再来审视下这个过程中可能会出现的安全隐患:
1、镜像仓库的安全问题
2、镜像传输的安全隐患
3、主机环境的配置
4、管理结点和主机结点的传输
5、管理界面的访问和配置
6、应用之间的隔离
第一招
镜像仓库的安全
应用运行依赖的镜像都从镜像仓库中获取,故需保证镜像仓库的安全。可能出现的隐患包括:
-
隐患:
1、镜像仓库链接被钓鱼,百度搜索引发的各种钓鱼故事大家已经熟知,这里不再详述,一旦被链接到恶意网站,下载伪装的镜像,对应用的风险也是不用多说的。
2、镜像仓库中镜像随意下载和流传。
3、或将镜像tag标识为重要版本,将其上传到镜像中覆盖已有版本。
-
有容云解决方案:
1、镜像仓库配置CA证书,提供HTTPS访问。
2、对用于生产环境中的镜像不用latest版本。
3、对镜像仓库进行合理规划,进行项目划分,对用户进行明确的权限控制。
4、及时清理不用的镜像。
第二招
镜像制作和传输
-
隐患:
1、对基于公网基础镜像生成的镜像,利用公网镜像的漏洞进行攻击。
2、对某些公开的镜像、Dockerfile或启动命令,获取其公司内部数据,如数据库链接、用户名和密码。
3、镜像pull传输过程中篡改镜像内容。
-
有容云解决方案:
1、按照文章《Docker运维之最佳实践-上篇》中建议的进行镜像的制作。
2、切勿为了方便,将重要访问数据,如数据库链接、访问密钥等打包进镜像中。
3、镜像pull和push过程都进行镜像签名,保证镜像完整性。
4、镜像上传时,和定期对镜像仓库中的镜像进行漏洞扫描。
第三招
主机环境的配置
-
隐患:
1、通过容器对宿主机上的系统文件或关键数据进行修改或删除,导致主机系统崩溃。
2、通过容器获取主机的root权限,或主机上其他应用权限,从而操控主机。
-
有容云解决方案:
1、容器平台设置用户权限,不允许root操作。
2、对容器映射主机的目录做限制。
第四招
管理结点和主机结点的传输
-
隐患:
1、截获管理结点和主机结点访问的API接口,直接操作主机结点。
2、直接调用主机结点上的daemon标准接口,进行容器和镜像的删除和配置操作。
-
有容云解决方案:
1、管理结点和主机结点之间通过HTTPS和token进行访问。
2、主机结点上限制远程访问。
第五招
管理界面/API的访问
-
隐患:
通过浏览器token截获访问API接口,对平台进行恶意操作。
-
有容云解决方案:
1、对访问token设置时限。
2、对不同的用户或场景生成不同的key进行API访问。
3、管理的web服务器端配置CA证书,通过HTTPS访问。
第六招
应用之间的隔离
-
隐患:
1、通过在平台上创建新的容器,在容器中操作其他容器提供的API接口。
2、恶意攻击容器,通过不断占用容器资源(CPU/内存/磁盘/网络/会话等)来导致主机上其他容器无法正常使用。
-
有容云解决方案:
1、通过制定相关策略限制容器之间的互访。
2、容器运行时配置相应配额上限,避免无限使用主机资源。
本文来源:http://www.youruncloud.com/blog/126.html