• Docker技术使用场景主要特性等相关资源整理
  • OpenStack与Docker集成:使用openstack管理docker
  • Docker的隔离性和安全性问题
  • docker使用的技术之Container内核原理介绍
  • Docker详细的应用与实践架构举例说明
  • ​基于Docker的大数据开发实践
  • ​docker之轻量虚拟化技术——docker实战分享
  • 什么是docker?Docker技术详细介绍
  • 基于Docker容器的云计算平台搭建实战
  • docker和VM虚拟机的区别以及如何用docker搭建基础设施
  • ​Docker容器术语以及docker的特点
  • Docker & Docker Hub
  • Introduction to Swarm, a Docker-native clustering system
  • Docker、Kubernetes、Neutron中的网络简介
  • ​James Turnbull:《The Docker Book》
  • Docker on AWS:Running Containers in the Cloud
  • Introduction docker Container Security
  • docker应用之利用Docker构建自动化运维
  • Docker基本原理简介和详细安装步骤介绍
  • Docker 基础用法和常用命令及选项介绍
  • Docker 端口映射,端口绑定操作介绍
  • Docker 四种网络模式及网络配置详细介绍
  • docker下通过Dockerfile指令构建镜像的指令选项介绍
  • ​Docker 容器数据管理,链接容器,构建私有库
  • MCS iis7站长之家
  • 如何实现 coreos 下Docker 与分布式数据库结合
  • 应对 Docker 网络功能难题的挑战与思考
  • Docker着手将容器部署到私有云与公有云
  • 为现在和未来改善Docker安全
  • Docker容器与企业存储的结合思考
  • Docker监控以及cAdvisor和Prometheus监控工具的对比
  • ​有关Docker的八个令人难以置信的事实
  • ​部署 Docker 前必须问自己的四个问题
  • 程序猿,千万别说你不了解Docker!
  • 将要改变IT世界的的docker技术是什么?
  • Docker支持更深入的容器日志分析
  • Docker宣布支持Windows 10和Azure Windows Server
  • Docker 1.12.0到底有哪些不同之处
  • 云计算之Docker容器技术如何落地?
  • Docker v1.12.0-rc5 普通版实验版本下载,高级容器引擎
  • 针对Docker容器的监控指标
  • ​Docker 的步伐:DevOps 与 OS 化
  • 八个问题帮你快速了解Docker
  • ​什么是Docker以及docker的 诞生技术演进
  • ​Docker v1.12.1-rc1各种版本发布下载,高级容器引擎
  • ​Docker 1.12.0 改进了服务的负载均衡参数
  • Windows下Docker应用部署相关问题详解
  • Docker1.12 引擎使用体验 ​
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • ​Windows Server 2016提供Docker原生运行的企业级支持
  • ​传统应用的docker化迁移
  • Docker携手Windows Server
  • Docker扁平化网络设计与实现
  • Plesk 中操作和设置 Docker 容器
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • Docker 1.12.4应用容器引擎发布及下载地址
  • Docker v1.13.0 应用容器引擎正式版发布及下载地址
  • docker源码分析之容器日志处理与log-driver实现
  • 如何在win7,win8下面启动docker
  • win7,win8安装Docker具体过程
  • win7, win8安装docker需要了解的概念
  • win7,win8安装docker的依赖条件
  • Docker Toolbox 介绍
  • Arch下面安装启动及删除docker介绍
  • Debian 7(Wheezy)下面如何安装docker
  • Debian 8(Jessie )下面如何安装docker
  • 红帽RHEL下如何删除docker详细步骤介绍
  • 红帽RHEL下面设置docker服务自动启动
  • linux下不使用sudo命令执行docker的操作步骤
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • 红帽RHEL下安装docker依赖性检查
  • Ubuntu Vivid 15.04 下面安装docker的详细步骤
  • Ubuntu Trusty 14.04 (LTS) 下面安装docker及依赖关系检查
  • Ubuntu Raring 13.04 和 Saucy 13.10 (64 bit)下面安装docker
  • Ubuntu Precise 12.04 (LTS) (64-bit)下面安装docker
  • Docker支持的安装方式
  • 通过docker ps命令检查运行中的docker镜像
  • 关于docker入门教程
  • 通过docker search命令搜索可用docker镜像
  • 在docker容器中运行hello world!
  • 在docker容器中通过apt-get安装新的程序
  • 通过docker commit命令保存对docker容器的修改
  • 通过docker run命令运行新的docker镜像
  • 准备学习docker: docker version命令查看版本
  • 什么是Docker?Docker通常用于如下场景
  •  
    当前位置:  教程>docker中文入门学习手册

    为现在和未来改善Docker安全

     
        发布时间:2017-2-20  


        本文导语: 为现在和未来改善Docker安全安全似乎落后于Docker阵营在其他方面的发展步伐。虽然越来越多的企业在数据中心使用Docker,但管理员们用来保护容器的技术却完全是慢慢站稳脚跟。在许多情况下,正是当初让Docker大受欢迎的功能特...

    为现在和未来改善Docker安全

    安全似乎落后于Docker阵营在其他方面的发展步伐。虽然越来越多的企业在数据中心使用Docker,但管理员们用来保护容器技术却完全是慢慢站稳脚跟。在许多情况下,正是当初让Docker大受欢迎的功能特性恰恰也暴露了安全漏洞(见图1)。

    为现在和未来改善Docker安全

    1:Docker网站称赞其容器是即刻奏效的解决方案


    什么是没有隔离的内核?

    Docker依赖Linux内核的功能:建立相互隔离的环境(应用程序在里面运行)。这些容器很精简,因为它们共享同一内核,却在不同的运行时环境中执行,这归功于控制组(cgroup)和命名空间,它们定义了容器可以使用哪些资源。与此同时,容器本身只能看到某些进程网络功能。

    虽然攻击者难以从一个被劫持的虚拟机主机的内核进行交互,但容器隔离并不提供同样的防御。除了/sys和/proc外,攻击者还照样可以进入内核的关键子系统,比如SELinux和控制组,这意味着攻击者有可能避开主机的安全功能特性。与此同时,容器使用与主机系统同样的用户命名空间。换句话说,如果进程以根权限在容器中运行,它与内核或挂载的文件系统交互时,保留这些权限。因而,管理员还是别以根权限在容器中运行软件为妙;实际上,很少需要这样。


    风险:Docker的守护进程

    然而,Docker守护进程需要根权限。它管理主机上的容器,需要与提供隔离环境的内核进行对话。与守护进程进行交互的用户因而被授予了访问系统的权限。如果主机托管服务提供商通过Web界面将容器作为一个自助服务选项来提供,这种情形会来得尤其严重。

    虽然使用docker群组是个办法,但不太可能改善安全,因为群组成员可以构建容器;而在容器中,首先可以运行根外壳,其次可以挂载主机的根文件系统。这里的唯一办法就是,严格监管对Docker服务的访问,避免不需要的权限升级

    此外,Docker的守护进程可以通过HTTP(S),借助REST API进行联系。如果你使用这项功能,就需要限制只由可信赖网络才可以访问API,或者通过SSL客户端证书或之类的机制来限制访问。


    对策

    版本的Docker随带减小上述攻击场景带来的影响的功能特性。Docker以只读方式挂载/sys文件系统和/proc中的重要文件。容器无法写入到它们,因而防止容器中的权限进程操纵主机系统。

    内核将根权限细分成了几项功能,然后将这些功能逐个分配给了进程。默认情况下,Docker阻止重要功能,防止容器中的权限进程为非作歹。这些功能包括网络配置、装入内核模块的功能或者访问音频子系统。如果某个特殊的应用程序需要被阻止的功能,Docker允许这些功能供某个容器使用。


    SELinux局限性

    SELinux是一种安全框架,它给每个文件和每个进程分配了多部分标签(multipart label)。策略定义了哪个进程标签可以访问哪个文件标签。Docker支持两个变种:类型强制(type enforcement)和多类别安全(MCS)。

    类型强制限制了容器对主机文件系统的访问。所有容器进程都以同一种类型来运行,这样就可以访问容器中的文件和许多主机系统文件,但是又可以防止访问主机上的大多数文件夹(即/var、/root和/home)。

    如果只使用类型强制,容器就能够轻松访问其他容器中的数据。归功于MCS,容器启动时,SELinux为容器分配了随机的MCS标签;Docker守护进程用这个标签标记容器中的所有文件,而内核可防止使用不同MCS标签的进程访问容器中的文件。

    在许多企业,SELinux已被认为是一项不需要的功能特性,也是管理员们喜欢禁用的一项特性。然而,Docker容器的安全依赖安全虚拟化(sVirt)之类的功能特性。在几乎没有其他应用程序帮助的情况下,单单sVirt就足以防止来自其他容器的用户读取你的文件。


    未来

    就未来而言,Docker开发人员在计划增强容器的安全性和隔离性。三项功能特性会助一臂之力,包括用户命名空间、Seccomp,以及基于角色的访问控制(RBAC),加强对Docker守护进程的访问。

    用户命名空间获得了优先权。Docker将来自容器的用户ID与其他主机的ID对应起来。其想法是大大限制攻击属于根目录的文件的能力

    由于所有容器都与同一个内核对话,内核功能方面的一个错误对主机和容器之间的边界以及对容器本身之间的边界来说都是致命的。来自谷歌的Seccomp可防止进程对特定系统调用的访问。虽然进程使用系统调用来访问内核,但在600个可用调用中大多数很少用到。要是没有这些调用,有望减小潜在的攻击面。Daniel Walsh在红帽公司从事容器安全工作。他认为,开发人员有望将可调用系统调用的数量最多减少50%。

    此外,开发人员在期望完善对Docker服务的访问,补充验证选项。这么做意味着,并没有根授权以访问主机的用户可以使用这项服务。如果开发人员另外引入RBAC,Docker管理员就能为用户分配不同的角色,因而为他们提供与守护进程进行交互的受限制权限。在这些方案的帮助下,应该可以在未来进一步限制对容器或功能的访问。


    结束语

    Docker开发人员已经在许多方面积极响应,加强容器的安全,他们在继续添加新的功能特性,保持这个势头。最近为版本1.8中的Docker映像推出了一种验证系统,那就是内容信任(Content Trust)。此外,开放容器计划(Open Container Initiative)正考虑将更多的精力投入到安全方面上。

    未来仍需要做大量工作。比如说,需要定义容器管理方面可持续的最佳实践,以促进容器在企业得到更广泛的使用。


    原文标题:Improving Docker security now and in the future


    • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:为现在和未来改善Docker安全
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3