


























这几个技术都属于Linux内核的关键部分,但它们扮演的角色截然不同。总的来说,Namespaces和Cgroups是容器技术的“基石”,负责构建运行环境;而Capabilities、Seccomp和Landlock则构成层层递进的“安全防线”,共同实现纵深防御。
下面是它们具体角色的一个梳理:
| 角色分工 | Namespaces | Cgroups | Capabilities | Seccomp | Landlock |
|---|---|---|---|---|---|
| 一句话总结 | 隔离"视图" 负责"看什么" |
限制"用量" 负责"用多少" |
拆分"特权" 负责"给什么权力" |
过滤"系统调用" 负责"能打什么电话" |
控制"文件访问" 负责"能碰哪些文件" |
| 核心功能 | 为进程提供独立的系统资源视图,实现资源隔离。 | 限制和统计进程组的资源使用(CPU、内存等)。 | 将传统root用户的"万能"特权拆分为一个个独立的小权限,遵循最小权限原则。 | 拦截和过滤进程发起的系统调用,限制其与内核的交互方式。 | 提供路径级别的细粒度文件访问控制,可限制对特定文件或目录的读写执行等操作。 |
| 类比理解 | 为进程创建独立、封闭的"房间",不同房间内看到的内容不同。 | 为进程设定"预算",限制其能使用的硬件资源。 | 将"万能钥匙"变成一串单独的钥匙,使用时只给必要的钥匙。 | 限制进程能拨打哪些"内核电话",防止其滥用。 | 在文件柜的每个抽屉上加装独立的"密码锁",而非仅锁住整个柜子。 |
| 适用场景 | 容器的核心:构建容器隔离环境的基础,用于进程、网络、文件系统等隔离。 | 资源管控:在容器和云平台中,确保每个容器不会耗尽宿主机资源。 | 权限收紧:为容器或服务进程"降权",移除其不需要的敏感权限(如修改系统时间、加载内核模块)。 | 攻击面缩减:阻止容器内进程执行mount、swapon等危险系统调用。 |
精细化沙箱:在容器内进一步隔离子进程(如浏览器渲染引擎),或为非容器化应用(如Web服务器、数据库)自身增加安全限制。 |
这几个技术常常协同工作,形成一个纵深防御体系。例如,在启动一个容器时:
mount、swapon等危险系统调用。这里想再特别说明一下,Namespaces 和 Landlock 都涉及文件系统隔离,但机制和粒度存在关键差异:
chroot 或 pivot_root 时,进程看到的是一个新的文件系统视图,但对这个"新视图"里的所有文件享有同等访问权限。而 Landlock 是基于路径的访问控制,它直接限制进程对宿主机中真实文件路径的访问。/etc 但禁止写入,只允许在 /tmp 下创建新文件等。Landlock 甚至可以作用于宿主机全局的文件系统,这是 Namespaces 做不到的。简单来说,这张表格可以帮你从宏观上理解它们的角色:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。