设为首页 收藏本站
查看: 514|回复: 0

[经验分享] Docker数据安全隐患分析

[复制链接]

尚未签到

发表于 2018-5-28 08:29:25 | 显示全部楼层 |阅读模式
  Docker容器为应用的编写、分发和部署带来真正翻天覆地的变化。容器的目的是灵活性,让应用可按需启用,无论何时以及何地。当然无论我们在哪里使用应用,我们都需要数据。
  对于数据应该如何映射到容器主要有两个流派。第一个流派称我们将数据保留在容器中;第二个称我们在容器外保存永久性数据,这些数据可超越任何单个容器的使用寿命。在这两种情况下,安全问题给数据和容器管理带来大问题。
  

管理数据访问

  

  现在有很多技术可用于分配存储到Docker容器。临时存储容量,本地到运行容器的主机,可在运行时分配到容器。存储卷存储在映射到应用的特定子目录的主机内。卷可在容器实例化时创建,或者使用“docker volume”命令提前创建。
  另外,本地存储可作为安装点映射到容器。在这种情况下,“docker run”命令可指定本地目录作为容器内的安装点。第三种选择是使用存储插件直接关联外部存储与容器。
  

开放访问

  

  在每种方法中,Docker框架都没有提供针对数据的内在安全模型。例如,任何主机目录可安装到容器,包括敏感系统文件夹,例如/etc。这意味着容器可能修改这些文件,因为使用标准简单的Unix权限设置来授予权限。对此,另一种更好的做法是使用非根容器,这涉及在不同的Linux用户ID(UID)下运行容器。这比较容易做,但这意味着构建一种方法来保护每个容器,使用组ID(GID)或者UID作为权限检查。
  在这里我们遇到另一个问题:使用非根容器,而本地卷无法正常工作,除非用于运行容器的UID有权限访问/var/lib/docker/volumes 目录。如果不这样做,数据无法访问或创建。打开这个目录会有安全风险;然而,并没有固有方法来按卷设置单独的权限。
  如果我们看看外部存储如何安装到容器,很多解决方案只需向运行容器的主机展示块设备(LUN)以及格式化文件系统。这随后展示到容器作为安装点。在这一点上,目录和文件的安全性可在容器内设置,减少我们已经讨论的问题。然而,如果这个LUN/volume在其他地方重复使用,则对其如何安装和使用没有安全控制,因为没有安全模型直接构建到容器/卷映射关系。一切都取决于信任主机上运行的命令。
  这里还有一个问题:缺乏多租户性。当我们运行容器时,每个容器实例可能为单独的应用运行。在传统存储部署中,分配到容器的存储应该有一定程度的分离,以确保数据不会被无意或恶意访问。目前没有简单的方法在主机级别做到这一点,只有信任编排工具来运行容器以及映射到数据。
  

寻找解决方案

  

  这里有些问题是特定于Linux/Unix。例如,安装命名空间的抽象化为我们的数据提供了不同的入口点,然而,并没有权限的抽象化--我无法映射用户1000到用户1001-如果没有物理升级与每个文件及目录相关的ACL(访问控制列表)数据。大规模ACL变更可能会影响性能。对于本地卷来说,Docker可简单地设置主机目录的权限,新卷匹配正在启动容器的UID。
  外部卷提供了很好的机会,让我们可以从运行容器主机中的权限结构转移。然而,这意味着我们需要一种机制来映射卷数据到特定容器实例中已知可信应用。请记住,容器并没有固有的“身份”,可根据意愿开始和停止。这使得它很难确定任何单个容器是否是数据卷的所有者。
  目前主要解决方案是依靠编排平台来管理容器的运行。我们信任这些系统来映射卷和容器,在很多方面,这并不像传统SAN存储或者虚拟磁盘映射到虚拟机那样。但容器的区别在于其可便携性,以及需要安全机制延伸到公共云。
  我们仍然有很多工作要做。对于Docker,对存储初创公司Infinit的收购可能启发他们如何保护持久性数据。这应该可能意味着开发接口让所有供应商可致力于此。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481977-1-1.html 上篇帖子: 解决docker数据文件过大导致根磁盘满的问题 下篇帖子: (五)Docker镜像管理2之nginx镜像制作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表