Docker的安全机制
Docker的安全很大程度依赖于Linux系统自身的安全,在使用中主要考虑的是一下几个方面的内容:
1、Linux内核的命名空间(namespace)机制提供的容器隔离安全;
2、Linux控制组(cgroup)对容器资源的控制能力安全;
3、Linux内核的能力机制所带来的操作系统安全;
4、Docker程序(主要是服务器端)本身的抗攻击能力;
5、其他安全增强机制的影响。
1.1 命名空间隔离安全
命名空间隔离,是最基础的隔离机制。Docker在启动容器时,会为容器创建独立的命名空间,让每个容器作为单独的个体存在。
###命名空间
[root@server1 ~]# docker run -it --name vm1 rhel7 bash##为每一个运行的进程创建单独的命名空间,Pid进行隔离<相当于运行的进程>
为没一个
![](/assets/blank.gif)
【说明】 这种隔离方式并不完整,因为本身容器依赖于宿舍主机运行,相当于运行在宿主机上的进程,例如时间等信息,依然和宿主机共享。
1.2 控制组(cgroup)资源隔离安全
Docker在启动时,后台会为容器创建一个独立的控制策略集合。
####控制资源组###查看挂载到/sys/fs/cgroup中的资源分配策略
[root@server1 ~]# mount -t cgroup
[root@server1 ~]# cd /sys/fs/cgroup/cpu/docker
![](/assets/blank.gif)
【说明】Linux cgroup本身提供了很多有用的特性,确保容器可以公平分享主机的内存、cpu等资源,确保当前容器的资源压力不会影响到宿主机上其他容器的使用,在DDos方面必不可少。
cgrop作为Linux内核特有的机制,对于每一个进程我们都可以设置相应的cgrop资源管理组,对每一个进程进行管理。
1.3 内核能力机制
内核能力也是依赖于Linux内核机制所实现的,这里可以提供细粒度的权限访问控制,采用白名单机制,禁用必须功能外的其他权限。
##设置特权级容器运行
[root@server1 ~]# docker run -it --privileged=true --name vm1 rhel7 bash###--privileged=true 设置超级用户权限###添加白名单 https://man7.org/linux/man-pages/man7/capabilities.7.html[root@server1 ~]# docker run -it --rm --cap-add NET_ADMIN --name vm1 rhel7 bash##添加某一项的特权
[root@server1 ~]# docker inspect vm1 | grep Capadd
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
1.4 Docker服务端防护
确保只有可信的用户才能访问到docker服务;将容器的root用户射到本地主机的非root用户,减轻容器和主机之间因权限提升而引起的安全问题;允许 docker服务端在非root权限下运行,利用安全可靠的子进程来代理执行需要特权的操作(子进程只允许在特定范围内操作)。
###安全加固 https://github.com/lxc/lxcfs#######使用LXCFS#######
yum install -y lxcfs-2.0.5-3.el7.centos.x86_64.rpm##通过挂载来实现
docker run -it -m 256m --memory-swap 256m \-v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \-v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \-v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \-v /var/lib/lxcfs/proc/stat:/proc/stat:rw \-v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \-v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \-v /var/lib/lxcfs/proc/slabinfo:/proc/slabinfo:rw \ubuntu:18.04 /bin/bash
1.5 其他安全特性
使用有增强安全特性的容器模板;用户可以定义更加严格的访问控制机制等 (比如文件系统挂载到容器内部时,设置只读)
容器安全加固思路:
保证镜像安全 --> 保证容器安全
镜像安全:安全的基础镜像;删除镜像中的setuid和setgid;启用Docker的内容信任;最小安装原则;对镜像进行安全扫描(Clair);使用非ROOT用户运行。
容器安全:对宿主机安全机制进行加固;限制容器之间的流量交流;配置Docker守护进程的TLS身份认证;启用命名空间;限制内存使用;设置优先级。
顶尖的Docker安全开源工具:Clair ;Dagda;Notary
遗留的安全问题:内核子系统没有命名空间;设备没有命名空间
Docker的安全机制相关推荐
- 深入理解docker的link机制
什么是docker的link机制 同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地址来通信,也可以通过宿主机的ip加上容器暴露出的端口号来通信,前者会导致ip地址的硬编 ...
- Docker的运行机制
Docker Engine(Docker引擎)是Docker的核心部分,使用的是客户端-服务器(C/S)架构模式,其主要组成部分如图1所示. 图1 Docker引擎 从图6-8可以看出,Docker ...
- 浅析flannel与docker结合的机制和原理
flannel flannel可以为容器提供网络服务. 其模型为全部的容器使用一个network,然后在每个host上从network中划分一个子网subnet. 为host上的容器创建网络时,从su ...
- 轻松构建docker服务发现机制
目录 前言 一.环境 二.部署步骤 1.Docker01操作 2.docker02.docker03加入consul集群 三.验证 前言 服务发现在SOA(Service-Oriented Archi ...
- docker基础 (狂神说)
Docker 学习笔记 Docker 概述 1.docker为什么会出现 一款产品:开发-上线 两套开发环境! 应用环境,应用配置! 开发-运维.问题:我在我的电脑上可以允许!版本更新,导致服务不可用 ...
- 在Docker Hub上你可以很轻松下载到大量已经容器化的应用镜像,即拉即用——daocloud国内镜像加速...
Docker之所以这么吸引人,除了它的新颖的技术外,围绕官方Registry(Docker Hub)的生态圈也是相当吸引人眼球的地方. 在Docker Hub上你可以很轻松下载到大量已经容器化的应用镜 ...
- Docker学习笔记之在开发环境中使用服务发现
0x00 概述 服务发现应用是很多服务化系统的组成部分,所以在开发.测试环境中也就有必要配备一套服务发现体系来配合我们的开发.测试工作.在这一小节里,我们就来谈谈如何在 Docker 环境下部署服务发 ...
- docker详细介绍
1 Docker概述 1.1 Docker为什么出现 环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis.ES.Hadoop)!费事费力 发布一个项目(jar+(Redis MySQL jd ...
- docker web程序本地化_Docker教程
Docker安装 Windows安装Docker(图解教程) Mac OS安装Docker(图解教程) Linux安装Docker(详解版) Windows Server安装Docker Docke ...
最新文章
- 【优秀作业】粒子群算法
- backgroundworker控件的使用(线程传值)
- Java开发面经分享:SpringIOC中复杂属性如何“巧妙
- 我自学python的路-Python学习路线图的总结
- Eclipse中在线安装spring-tool-suite插件
- C++11:using 的各种作用
- ubuntu 16.04 安装QT问题
- Cnblogs自定义皮肤css样式-星空观测者
- 程序员35岁辞职后都做了什么工作三位过来人透露了实情,引热议
- lucene分词器与搜索
- mvc三层架构_Java架构-代码分层的设计之道
- 电子商务的核心是不是计算机技术,电子商务的核心内容是网络营销
- 【排序】内部排序算法实现
- matlab图形黎曼几何,黎曼几何不一致的定理—元数学与元物理学(22)
- Mapbox使用之glyphs(字体符号)与sprite图生成与拆分
- Vue入门---实现汇率换算
- java开发用win7好还是win10_win7和win10系统哪个好用
- h61 nvme硬盘_谁更快?PCIe 4.0时代的NVMe固态硬盘性能对决
- excel提取括号内的内容
- 大一寒假训练:集训内容考试(二)【未完待续】
热门文章
- 移动互联网广告 - 第五更 - 消费者行为分析模型 - 2016/12/07
- SharedUserData
- 马克思原理复习思维导图与资料
- 推荐一些非常有用的学习网站
- 【动画消消乐|CSS】086.炫酷水波浪Loading过渡动画
- python飞船小游戏
- android代码混淆详解
- lol服务器维护2021,lol维护公告最新时间2021.4.29 lol维护到几点
- 鸿蒙操作系统连接汽车,鸿蒙操作系统发布!万物互联的超级终端 华为上车令人无限遐想...
- string resource id #0x0的问题