怎么利用 --cap-drop 裁剪非必要特权打造高安全等级容器

陌婷君_9428

陌婷君_9428

2026-07-09

487人浏览

原创

最有效起点是--cap-drop=all清空所有默认能力再按需加白,因其强制归零、规避默认冗余授权,并需协同--user、--read-only、no-new-privileges等实现纵深防御。

直接用 --cap-drop=all 清空所有默认能力,再按需加回真正需要的几个,是打造高安全等级容器最有效的起点。这不是“删掉多余项”,而是从零开始构建权限边界——避免因 docker 默认能力变更、镜像升级或隐式继承带来的意外风险。

先清零:--cap-drop=ALL 是安全基线

Docker 默认保留约 14 个 capability(如 CAP_CHOWN、CAP_NET_BIND_SERVICE),看似克制,但对多数应用仍是过度授权。--cap-drop=ALL 强制归零,让容器进程在启动时几乎无法执行任何特权操作,连 chown、ping、修改时间都会失败——这正是你想要的“默认拒绝”状态。

  • 它会覆盖镜像中 USER 或 Dockerfile 中的默认能力设置
  • 即使后续 --cap-add 漏掉某个依赖能力(比如 NET_BIND_SERVICE 需要 DAC_OVERRIDE 配合),容器也会明确报错,便于定位
  • 适合金融、政务、API 网关等对权限敏感的关键服务

再加白:只添加真实运行所必需的能力

加白不是凭经验猜,而是依据应用行为精准补充。常见组合示例:

  • Web 服务监听 80 端口:仅需 --cap-add=NET_BIND_SERVICE(不用开 CAP_SYS_ADMIN)
  • 日志轮转或属主调整:补 --cap-add=CHOWN 和/或 DAC_OVERRIDE
  • 内存锁定(如 Redis):加 --cap-add=IPC_LOCK
  • 精确控制时间(极少见):单独加 --cap-add=SYS_TIME,而非混在一堆能力里

不推荐 --cap-add=ALL;也不建议保留默认能力再逐个 --cap-drop,容易遗漏。

Llama Coder
Llama Coder

Llama Coder 是一款基于 Llama 和 Together AI 的开源 AI 小应用生成工具。

下载

验证是否真的精简到位

容器启动后,进容器执行:
capsh --print
查看 CapEff 行(有效能力列表),确认只有你显式添加的那几项。也可查:
cat /proc/1/status | grep CapEff
输出是十六进制,可用 capsh 解码比对。若看到 CAP_SYS_ADMIN、CAP_DAC_OVERRIDE、CAP_SETUIDS 等未声明的能力,说明配置没生效或被其他机制绕过。

配合其他机制形成纵深防御

Capability 控制的是内核调用权限,单靠它不够。必须叠加:

  • --user 1001:1001:强制非 root 用户运行,即便有 SETUID 能力也无法提权到 UID 0
  • --read-only 或 --tmpfs /run:rw,size=64m:根文件系统只读,仅开放必要可写路径
  • --security-opt no-new-privileges:true:禁止运行时通过 execve 获得新权限(阻断 setuid 二进制利用链)
  • 挂载卷加 :ro 标志,防止篡改宿主机配置或日志目录

这些参数共同作用,才能让容器即使被攻破,也难以逃逸或横向移动。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

0

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

0

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

0

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

0

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

0

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

220

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

120

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

100

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

60

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习