《Docker技术入门与实战》学习笔记——Docker安全机制

容器自身所提供的隔离性只是相对的,并没有虚拟机那样完善。因此,必须对容器内应用进行严格的安全审查。同时从容器层面来看,容器即应用,原先保障应用安全的各种手段,都可以合理地借鉴利用。

一、命名空间隔离的安全

当用docker run命令启动一个容器时,Docker将在后台为容器创建一个独立的命名空间。命名空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在本地主机上的进程和其他容器通过正常渠道发现和影响。
容器默认可以与本地主机网络连通,当容器需要与外界进行通信时,需要通过本地主机的网桥接口(docker())进行相互通信。
在这里插入图片描述
与虚拟机方式相比,通过命名空间来实现的隔离并不是那么绝对。这是由于每个docker容器并没有拥有完全隔离的空间。
在这里插入图片描述
运行在容器中的应用可以直接访问系统内核和部分系统文件(如上图所示)。因此,用户必须保证容器中应用是安全可信的(这跟保证运行在系统中的软件是可信的一个道理),否则本地系统将可能受到威胁,即必须保证镜像的来源和自身可靠。

二、控制组资源控制的安全

当用户执行docker run命令启动一个Docker容器时,Docker将通过Linux相关的调用,在后台为容器创建一个独立的控制组策略集合,该集合将限制容器内应用对资源(如主机的内存、CPU、磁盘IO等)的消耗,确保了当某个容器对资源消耗过大时,不会影响到本地主机系统和其他容器。
控制组不负责隔离容器之间相互访问、处理数据和进程,但是它在防止恶意攻击特别是拒绝服务攻击(DDoS)方面是十分有效的。

三、内核能力机制

Linux内核通过能力机制可以提供细粒度的权限访问控制,对于docker容器来说,在一般情况下并不需要“真正的”root权限,容器只需要少数的能力即可,所以可以通过禁用一些没必要的权限,来减少应用破坏本地系统的可能性。

四、Docker服务端的防护

Docker的REST API(客户端用来与服务端通信的接口)在0.5.2之后使用本地的Unix套接字机制替代了原先绑定在127.0.0.1上的TCP套接字,因为后者容易遭受跨站脚本攻击。现在用户使用Unix权限检查来加强套接字的访问安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值