Docker安全

前言

docker内部的隔离机制是通过namespace来做的,但是在Linux系统里面很多东西是不能通过namespace来隔离的,比如:时间。
容器的资源控制,而namespace把容器在我们的linux系统网络成为独立个体,并不能做资源限制,很可能一个容器上面跑了一个java程序,但是这个容器把我们的内存占用完了,那么这是不合理的。
所以一定要对docker容器的配额进行限额,资源限制。

docker内部通过Cgroup直接进行资源限制,我们可以在run建立容器时加参数进行控制。

Docker容器的安全性,很大程度上依赖于Linux系统自身,评估Docker的安全性时,主要考虑以下几个方面:

  • Linux内核的命名空间机制提供的容器隔离安全
  • Linux控制组机制对容器资源的控制能力安全。
  • Linux内核的能力机制所带来的操作权限安全
  • Docker程序(特别是服务端)本身的抗攻击性。
  • 其他安全增强机制对容器安全性的影响。

命名空间隔离的安全

  • 当docker run启动一个容器时,Docker将在后台为容器创建一个独立的命名空间。命名空间提供了最基础也最直接的隔离。
  • 与虚拟机方式相比,通过Linux namespace来实现的隔离不是那么彻底。
  • 容器只是运行在宿主机上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核。
  • 在 Linux 内核中,有很多资源和对象是不能被 Namespace 化的,比如:时间

控制组资源控制的安全

  • 当docker run启动一个容器时,Docker将在后台为容器创建一个独立的控制组策略集合。
  • Linux Cgroups提供了很多有用的特性,确保各容器可以公平地分享主机的内存、CPU、磁盘IO等资源。
  • 确保当发生在容器内的资源压力不会影响到本地主机系统和其他
  • 容器,它在防止拒绝服务攻击(DDoS)方面必不可少。

今天我们主要讲一下cgroup机制对容器资源的控制能力。
首先了解一下几个控制器:

  1. blkio: 这个subsystem可以为块设备设定输入/输出限制,比如物理驱动设备(包括磁盘、固态硬盘、USB等)。
  2. cpu: 这个subsystem使用调度程序控制task对CPU的使用。
  3. cpuacct: 这个subsystem自动生成cgroup中task对CPU资源使用情况的报告。
  4. cpuset: 这个subsystem可以为cgroup中的task分配独立的CPU(此处针对多处理器系统)和内存
  5. devices: 这个subsystem可以开启或关闭cgroup中task对设备的访问。
  6. freezer: 这个subsystem可以挂起或恢复cgroup中的task。
  7. memory: 这个subsystem可以设定cgroup中task对内存使用量的限定,并且自动生成这些task对内存资源使用情况的报告
  8. perf_event: 这个subsystem使用后使得cgroup中的task可以进行统一的性能测试。
  9. net_cls: 这个subsystem Docker没有直接使用,它通过使用等级识别符(classid)标记网络数据包,从而允许 Linux 流量。

安全–设置内存+交换分区

一.针对系统中的某个进程
1.安装cgroup,可提供cgexec命令

[root@server1 ~]# yum install libcgroup-tools.x86_64 -y
[root@server1 ~]# mount -t cgroup
[root@server1 ~]# cd /sys/fs/cgroup/memory/
[root@server1 memory]# cat memory.limit_in_bytes 
9223372036854771712		数字太大,等同于没有做限制
[root@server1 memory]# cat memory.memsw.limit_in_bytes 
9223372036854771712

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值