




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Docker 容器全面的安全防护Docker 作为应用容器中最引人瞩目的实现方式, 在近几年得到飞速的发展,大有成为应用容器事实标准的趋势,国 内外不少企业已经将其应用到生产系统中了,有理由相信随着 docker 自身技术的完善和相关技术生态的建立, 将成为下代云计算的基石。Docker 的优点很多, 由于其诞生的目的全的考虑, docker 官方建议所有的镜像文件应该由 dockerfile就是便于持续的集成和快速部署,尽量减少中间环节,这也为其安全控制带来难度, Gartner 在确定 2017 年中最高安全技术 ,关于容器安全是其中项,原文如下: Containers use ashar
2、ed operating system (OS) model. Anattack on a vulnerability in the host OS could lead to a compromise of allcontainers. Containers are not inherently unsecure, but they are being deployedin an unsecure manner by developers, with little or no involvement fromsecurity teams and little guidance from se
3、curity architects. Traditionalnetwork and host-based security solutions are blind to containers. Containersecurity solutions protect the entire life cycle of containers from creationinto production and most of the container security solutions providepreproduction scanning combined with runtime monit
4、oring and protection. 报告分析了容器安全面临的挑战: 容器使用共享操作系统(OS)模型。对主机操作系统中的漏 洞的攻击可能导致所有容器被攻击,且容器本身并不完全安 全。但真正的问题在于由开发人员以不安全的方式部署,安 全团队很少或根本没有参与, 安全架构师也没有指导。 Docker容器安全吗?本身这个问题就是一个哲学问题,答案是否定的 -不安全,因为没有绝对安全。其实对docker 容器安全质 疑最大的一点就是其隔离的彻底性,与其对比就是当前成熟 的虚拟机( VM )技术。相对于 VM ,docker 容器只是对进程 和文件进行虚拟化,而 VM 做到了 OS 级别的虚拟化
5、。从这 个角度看 VM 的隔离性确实要好于 docker 容器,也就是说对 宿主机的安全影响 VM要远远小于docker,但换个角度看,这也恰恰正是 docker 的一个优点: 轻量级,高效以及易移植。所以,安全和易用永远存在在一个平衡点,本文探讨的前提 是认同 docker 带来的便利性, 也接受其带来的安全风险, 而 要做的是利用一些的安全手段来将其风险降到可接受范围。而容器安全如何来实现呢?其实在 Gartner 的报告中也提到 了,需要对 docker 全生命周期的安全防护, 信息安全本质上 就是控制风险, 如果从一个 docker 的生命中周期面临的安全 威胁来设计 docker 的
6、安全防护策略, 那安全控制的思路就会分清晰。首先,来简单捋一下 docker 容器的生命周期, 个 docker 容器从产生到运行部署大致分为如下三个状态:Dockerfile: 用于创建 image 镜像的模板文件,出于管理和安来创建, 而当前不少用户把 docker 当虚拟机来使用, 甚至容器中安装SSH,从安全的角度,这是不恰当的。Image:镜像文件,对比 PC 端的概念,我们可以把它理解为服务器端的可执行软件包。一旦打包生成,如存在安全问题,那这些 起来的 image 文件就是容器了,从外来看就是一个应用,可 对外提供服务了。所以不难发现, docker 容器的生命周期, 就是一个镜
7、像文件从产生、运行到停止的过程,对其安全防问题也被一并打包,最后导致安全事件。Container :运行护的目标就很明确了,那就是:接下来,我们把docker容器生命周期和实际工作中结合起来,大致如下图所示:在一般 企业内,一个标准的产品发布流程大致如下:研发人员将代 码提交给代码库; QA 和安全人员通过 jekins 等工具进行编 译并测试;测试完成后,由运维人员获取最终上线版本,发 布到生产环境。 也可能是测试完成后, 直接发布到生产环境。化繁为简, 可将 docker 生命周期拆为两个大阶段, 非生产环 境阶段和生产环境阶段,这两个阶段安全控制的目标如下: 非生产环境中保证镜像安全可信
8、,生产环境中保证镜像正确 的运行。两个阶段安全保护措施 Docker 公司与美国互联网安 全中心(CIS)合作,制定了 docker的最佳安全实践,其中包括了主机安全配置、 docker 守护进程配置、 docker 守护程序 配置文件、容器镜像和构建、容器运行安全、 docker 安全操方面,我们也对其进行了翻译和整理,在本专栏的后续文章 中会陆续发布。保证非生产环境中的镜像安全-容器使用非root 用户运行为了防止容器逃逸而获得宿主机的权限,容器 内应用以非 root 用户身份运行, 如果用户已经在容器镜像中 定义,则默认情况下容器将作为该用户运行,且不需要特定 的用户命名空间重新映射。可
9、以在 Dockerfile 中添加用户:RUN useradd -d / home /username -m -s / bin / bash usernameUSER username -使用安全的基础镜像如果基础镜像存在安 全问题,那整个镜像文件的安全性也无从谈起,用户可根据 自身需求定制基础镜像,并强制要求组织内使用认可的基础 镜像;也可使用第三方安全的镜像,这里推荐使用Alpine-linux , docker所有的官方镜像都使用其作为基础镜像, docker 也会对其维护更新,所以安全性有保证。-删除镜像 中的 setuid 和 setgid 权限 setuid 和 setgid 权限
10、可用于提权 虽然有时候必须要使用到,但如果被滥用,可能会导致非法的提升权限。可以在镜像中限制这些权限的使用。具体做法 删除这些权限,一般在 Dockerfile 的末尾添加: RUN find / -perm 6000-type f-exec chmod a-s ;| true 启用 Docker 的 内容信任内容信任允许当用户使用远程 Docker 仓库进行操 作时,以执行镜像标记的客户端签名和验证。内容信任提供 了对从 Docker 仓库发送和接收的数据使用数字签名的能力。可参考:在构建镜像时通过在Dockerfile 中添加以下命令来这些签名允许客户端验证特定镜像标签的完整性。在默认情况
11、下, 内容信任是禁用的。 可通过如下命令进行启动: exportDOCKER_CONTENT_TRUST = 1-最小安装原则:安全的github 地址链接通过前文介绍,列举了在 docker 容器生命普适法则,不要安装任何与应用无关的东西。-对镜像进行 安全漏洞扫描镜像中包含了很多的插件及软件包,需要对这 些软件包进行漏洞扫描,并根据结果安装补丁或更新软件,Coreos 提供了一款开源 docker 镜像安全扫描器 -Clair ,(github地址链接关于 Clair 的实现原理,会在后续的文章介绍,同 时我们参考了 Clair 的实现方式,优化了开发了一款 docker镜像扫描器,也会在
12、适当的时候推出并开源。如何保证生产环境中容器的安全?-对docker宿主机进行安全加固务必保证 docker 宿主机的安全, 需要对宿主机的系统进行安全加 固处理,主机加固可以参考相关的安全 checklist 以及各企业 制定的主机安全规范,在这里就不在赘述。-限制容器之间 的网络流量在默认情况下,同一主机上的所有容器之间网络 流量不受限制。因此,每个容器都有可能在同一主机上的容 器网络上读取所有数据包。这可能会导致意外泄露信息。因 此,需要限制容器间通信具体操作:在守护进程模式下运行docker,并将-icc = false作为参数。女口: / usr / bin / dockerd-ic
13、c = false -配置Docker守护程序的TLS身份验证在默认情况下, Docker 守护程序绑定到非联网的Unix 套接字,并TCP 端口或任何其他 Unix 套接字,那么任何有权访问该端 口或套接字的人都可以完全访问 Docker 守护程序。 因此, 不 应该将 Docker 守护程序绑定到另一个 IP /端口或 Unix 套接 字。如果必须通过网络套接字暴露 Docker 守护程序, 需为守 护程序和Docker Swarm API配置TLS身份验证。-启用用户命名空间支持防止容器内的提权攻击的最佳方法是将容器的应用程序配置为无特权用户运行。对于必须使用roo 身份运行的容器,可以
14、将该用户重新映射到Docker主机上特定用户。映射的用户被分配一个范围的 UID ,它们在命名空间 内作为正常的 UID ,但对主机本身没有特权。关于使用用户 命名空间隔离容器在后续文章中详细介绍。-限制容器的内 存使用量在默认情况下,容器可以使用主机上的所有内存。可以使用内存限制机制来防止一个容器消耗所有主机资源 数运行容器。 如下: $ docker run - memory -适当设置 容器 CPU 优先级在默认情况下, CPU 时间在容器间平均分 配,可使用 CPU 共享功能来设定优先级。 CPU 共享允许将的拒绝服务攻击,具体可使用使用“-m 或-memory 参个容器优先于另一个容器,并禁止较低优先级的容器频繁 地占用 CPU 资源。这样可确保高优先级的容器更好地运行, 且可以有效的防止资源耗尽攻击。针对 docker 安全配置检 查, docker 官方提供了一个脚本工具 docker-bench-secruity周期需要进行的安全控制措施,但如果仅靠人工实施和监 督
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人工智能物联网合作协议书
- 山东省惠州市惠东县梁化中学九年级化学下册 12.3 有机合成材料教学实录 新人教版
- 上海市理工大学附属中学2024年-学年高二体育上学期第1周教学实录3
- 26 我的“长生果”(教学设计)-2024-2025学年统编版语文五年级上册
- ntc读取温度电路
- 2025年大量程固体物位仪表项目建议书
- Unit 2 Topic 3 Section D 教学设计 2024-2025学年仁爱科普版八年级英语上册
- 利用网络平台创新教学方式计划
- 对话与交流中的艺术教育方法计划
- 学校教学工作规划计划
- 2019新人教高一英语必修一-课本听力与视频材料原文(精校打印版)
- 湖南省消除艾梅乙工作考试复习题库大全(含答案)
- 专项法律服务合同参考模板(7篇)
- 武汉大学-《化学工程基础》第2章传质课件
- 部编版四年级下册语文第一单元练习试题
- 223-2017聚羧酸减水剂标准
- 基础教育课程改革专题课件
- GB/T 23479-2023风力发电机组双馈异步发电机
- 《将本土美食文化融入幼儿园课程的实践》 论文
- 节约水资源Save Water 作文课件 高三英语二轮专题
- SGO软件静态数据处理
评论
0/150
提交评论