在Docker容器中实现安全与隔离

上传人:新** 文档编号:509806916 上传时间:2023-08-24 格式:DOCX 页数:4 大小:31.51KB
返回 下载 相关 举报
在Docker容器中实现安全与隔离_第1页
第1页 / 共4页
在Docker容器中实现安全与隔离_第2页
第2页 / 共4页
在Docker容器中实现安全与隔离_第3页
第3页 / 共4页
在Docker容器中实现安全与隔离_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《在Docker容器中实现安全与隔离》由会员分享,可在线阅读,更多相关《在Docker容器中实现安全与隔离(4页珍藏版)》请在金锄头文库上搜索。

1、在Docker容器中实现安全与隔离在云计算中,多租户技术被认为是一个非常重要的功能。如果我们将容器中运 行的应用看作一个租户,那么优秀的安全隔离技术设计可以确保租户只能使用 它们可用的资源。祖I贡与necfilterapparmorgroups na4neipac tiedinkcapa bi li tiessysccmd- ns pawnLinuxDockerlibcotrhirwEH随着容器技术的发展,它的安全、隔离和资源控制的功能也在不断进步。本文 中,我们将回顾Docker容器如何仅仅使用linux的原始功能来实现安全与隔离, 比如 namespaces, cgroups, capab

2、ilities 等。、LbU / tT -44操作系统级的虚拟化,容器,空间,以及“chroot with steroic其实都定义了 同一个概念:用户空间隔离。类似Docker的产品都使用了操作系统级的虚拟 化,通过用户空间隔离可以提供额外的安全性。0.9版本起,Docker包含了 libcontainer库作为它直接虚拟化的方法,这个功能 由 Linux 内核提供。此外,它还通过 LXC1,systemd-nspawn2,和 libvert3 使用了抽象虚拟接口。这些虚拟化库全部利用了 Linux的原始容器(参见上图). namespaces. cgroups.capabilities 等

3、等。Docker在一个包装中联合了以上功能,并称之为容器格式。Libcontainer默认的容器格式被称为libcontainer。Docker也支持使用LXC的传统Linux容器。在将来,Docker可能会支持其他 的容器格式,比如结合BSD jails或者Solaris Zones。执行驱动程序是一种特殊容器格式的实现,用来运行docker容器。在最新的版 本中,libcontainer有以下特性:.是运行docker容器的默认执行驱动程序。和LXC同时装载。.使用没有任何其他依赖关系的Go语言设计的库,来直接访问内核容器的API。 在Docker 0.9中,LXC现在可以选择关闭。注意:

4、LXC在将来会继续被支持。如果想要重新使用LXC驱动,只需输入指令 docker -d e lxc, 然后重启 Docker。-目前的Docker涵盖的功能有:命名空间使用,cgroups管理,capabilities权限 集,进程运行的环境变量配置以及网络接口防火墙设置一一所有功能是固定可 预测的,不依赖LXC或者其它任何用户区软件包。只需提供一个根文件系统,和libcontainer对容器的操作配置,它会帮你完成剩 下的事情。支持新建容器或者添加到现有的容器。 事实上,对libcontainer最迫切的需求是稳定,开发团队也将其设为了默认。用户命名空间Docker不是虚拟化,相反的,它是一

5、个支持命名空间抽象的内琉提供了独立工作空间 (或容器)。当你运行一个容器的时候,Docker为容器新建了一系列的namespace。一些Docker使用的linux命名空间: pid namespace 用作区分进程(PID: Process ID)。容器中运行的进程就如同在普通的Linux系统运行一样,尽管它们和其他进程 共享一个底层内核。 net namespace 用作管理网络接口。DNAT允许你单独配置主机中每个用户的的网络,并且有一个方便的接口传输 它们之间的数据。当然,你也可以通过使用网桥用物理接口替换它。. ipc namespace 用作管理对 IPC (IPC: InterP

6、rocess Communication)资源的访问。. mnt namespace 用作管理 mount-points (MNT: Mount)。. uts namespace 用作区分内核和版本标识符(UTS: Unix Timesharing System) oCgroupsLinux上的Docker使用了被称为cgroups的技术。因为每个虚拟机都是一个进 程,所有普通Linux的资源管理应用可以被应用到虚拟机。此外,资源分配和 调度只有一个等级,因为一个容器化的Linux系统只有一个内核并且这个内核 对容器完全可见。. 总之,cgroups 可以让 Docker:.实现组进程并且管理

7、它们的资源总消耗。.分享可用的硬件资源到容器。.限制容器的内存和CPU使用。 可以通过更改相应的cgroup来调整容器的大小。-通过检查Linux中的/sys/fs/cgroup对照组来获取容器中的资源使用信息。.提供了一种可靠的结束容器内所有进程的方法。CapabilitiesLinux使用的是“POSIX capabilities这些权限是所有强大的root权限分割而成的一系 列权限。在Linux manpages上可以找到所有可用权限的清单。Docker丢弃了除了所 需权限外的所有权限,使用了白名单而不是黑名单。一般服务器(裸机或者虚拟机)需要以root权限运行一系列进程。包括:.SSH

8、. cron. syslogd.硬件管理工具(比如负载模块)网络配置工具(比如处理DHCP, WPA, or VPNs)等。每个容器都是不同的,因为几乎所有这些任务都由围绕容器的基础设施进行处理。默 认的,Docker启用一个严格限制权限的容器。大多数案例中,容器不需要真正的root 权限。举个例子,进程(比如说网络服务)只需要绑定一个小于1024的端口而不需要 root权限:他们可以被授予CAP_NET_BIND_SERVICE来代替。因此,容器可以被降 权运行:意味着容器中的root权限比真正的root权限拥有更少的特权。Capabilities只是现代Linux内核提供的众多安全功能中的一个。为了加固一个Docker 主机,你可以使用现有知名的系统: TOMOYO AppArmor. SELinux GRSEC, etc.如果你的发行版本附带了 Docker容器的安全模块,你现在就可以使用它们。比如,装载了 AppArmor模板的Docker和Red Hat自带SELinux策略的 Docker。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号