🚀
🚀
🚀
🚀
Docker — 从入门到实践
搜索文档…
🚀
🚀
🚀
🚀
Docker — 从入门到实践
前言
修订记录
如何贡献
Docker 简介
基本概念
安装 Docker
使用镜像
操作容器
访问仓库
数据管理
使用网络
高级网络配置
Docker Buildx
Docker Compose
Swarm mode
安全
内核命名空间
控制组
服务端防护
内核能力机制
其它安全特性
总结
底层实现
Etcd 项目
Fedora CoreOS
Kubernetes - 开源容器编排引擎
部署 Kubernetes
Kubernetes 命令行 kubectl
容器与云计算
实战案例 - 操作系统
实战案例 - CI/CD
在 IDE 中使用 Docker
podman - 下一代 Linux 容器工具
附录
由
GitBook
提供支持
内核能力机制
能力机制(Capability)
是 Linux 内核一个强大的特性,可以提供细粒度的权限访问控制。 Linux 内核自 2.2 版本起就支持能力机制,它将权限划分为更加细粒度的操作能力,既可以作用在进程上,也可以作用在文件上。
例如,一个 Web 服务进程只需要绑定一个低于 1024 的端口的权限,并不需要 root 权限。那么它只需要被授权
net_bind_service
能力即可。此外,还有很多其他的类似能力来避免进程获取 root 权限。
默认情况下,Docker 启动的容器被严格限制只允许使用内核的一部分能力。
使用能力机制对加强 Docker 容器的安全有很多好处。通常,在服务器上会运行一堆需要特权权限的进程,包括有 ssh、cron、syslogd、硬件管理工具模块(例如负载模块)、网络配置工具等等。容器跟这些进程是不同的,因为几乎所有的特权进程都由容器以外的支持系统来进行管理。
ssh 访问被主机上ssh服务来管理;
cron 通常应该作为用户进程执行,权限交给使用它服务的应用来处理;
日志系统可由 Docker 或第三方服务管理;
硬件管理无关紧要,容器中也就无需执行 udevd 以及类似服务;
网络管理也都在主机上设置,除非特殊需求,容器不需要对网络进行配置。
从上面的例子可以看出,大部分情况下,容器并不需要“真正的” root 权限,容器只需要少数的能力即可。为了加强安全,容器可以禁用一些没必要的权限。
完全禁止任何 mount 操作;
禁止直接访问本地主机的套接字;
禁止访问一些文件系统的操作,比如创建新的设备、修改文件属性等;
禁止模块加载。
这样,就算攻击者在容器中取得了 root 权限,也不能获得本地主机的较高权限,能进行的破坏也有限。
默认情况下,Docker采用
白名单
机制,禁用必需功能之外的其它权限。 当然,用户也可以根据自身需求来为 Docker 容器启用额外的权限。
以前
服务端防护
下一个
其它安全特性
最近更新
5mo ago
复制链接
在 GitHub 上编辑