容器安全,六招解决

引言 : 容器是把双刃剑,一方面,它可以标准化应用的运行环境,实现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、容器运行时配置相应配额上限,避免无限使用主机资源。

 

 

 

分享:容器安全,六招解决

有容云-构筑企业容器云 www.youruncloud.com

温馨提示

对Docker容器技术或容器生产实施感兴趣的朋友欢迎加群讨论。我们汇集了Docker容器技术落地实施团队精英及业内技术派高人,在线为您分享Docker技术干货。我们的宗旨是为了大家拥有更专业的平台交流Docker实战技术,我们将定期邀请嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。

加微信群方法:

1.关注【有容云】公众号

2.留言”我要加群”

QQ群号:454565480

有容云微信二维码