seccomp安全配置核心是白名单机制:默认拒绝所有系统调用,仅放行openat、read、statx等运行必需项,并显式拦截ptrace、mount等高危调用;必须严格遵循json三要素(default_action、architectures、syscalls)、绝对路径加载及基础调用保留原则。

核心思路是:用白名单机制,默认拒绝所有系统调用,只放行容器真实运行必需的少数几个,再对明确无业务用途的高危项做显式拦截。
必须写对的 JSON 三要素
Seccomp 配置是纯 JSON,Docker daemon 加载时逐字段校验,错一个就启动失败:
-
default_action:必须小写下划线,值为
"SCMP_ACT_ERRNO"(返回错误)或"SCMP_ACT_KILL"(终止进程),不能写成 defaultAction 或 DefaultAction -
architectures:必须显式声明宿主机架构,例如
["SCMP_ARCH_X86_64"];ARM 节点还要加"SCMP_ARCH_AARCH64",漏掉会报 “no matching architecture” -
syscalls:必须是复数形式的数组,每个元素含
names(字符串数组,哪怕只禁一个也要写成["ptrace"])和action(如"SCMP_ACT_ERRNO")
校验建议:用 jq -e '.default_action, .architectures, .syscalls' /etc/docker/seccomp.json >/dev/null,非零退出即说明结构不合法。
基础调用绝不能禁,否则容器直接瘫痪
openat、read、statx 这类不是“可选”,而是绝大多数程序启动和运行的底层依赖。禁掉它们,连 ls、ps 都失败,Go 程序读不了 /proc/self/exe 就 panic,Node.js 事件循环卡在 epoll_wait 就 hang 住。
最小可用集合通常包括:
- 文件操作:
openat、read、close、statx、fstat - 内存管理:
mmap、mprotect、brk - 运行时支撑:
clone(Go 启动 goroutine)、epoll_wait/epoll_ctl(Node.js/Go 事件循环)、getrandom(安全随机数)
别靠经验猜——用 strace -f -e trace=raw_syscall -p $(pidof your-app) 抓真实调用流,再筛出高频、非特权、必需项。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
高危调用要主动覆盖,不依赖默认策略
Docker 默认 profile 已禁约 44 个调用,但生产环境不能指望它兜底。以下调用在 Web 服务等常规场景中几乎无正当用途,应显式拦截:
-
ptrace:防止调试注入与内存篡改,建议设"SCMP_ACT_ERRNO"(返回 EPERM,便于日志捕获) -
mount、umount2:阻断挂载逃逸路径,可用"SCMP_ACT_KILL"(一旦触发基本就是攻击尝试) -
chroot、setns、unshare:关闭命名空间操控能力 -
reboot、swapon、swapoff:避免影响宿主机资源管理 -
capset:提权关键入口,必须禁,推荐"SCMP_ACT_ERRNO"避免因能力检查失败导致程序异常退出
路径和加载方式必须严格合规
seccomp 本身无法判断某个 openat 是在读 /proc/self/status 还是写 /etc/shadow。它的 args 字段虽支持参数过滤,但仅限整数比较(如 fd > 2),对路径字符串无效。
想限制文件访问路径,得配合:
docker run --read-only --tmpfs /run:rw,size=64mmount --bind -o ro /host/data /app/data
文件路径必须绝对,且 Docker daemon 用户(通常是 root)要有读权限。常见错误是执行 docker run --security-opt seccomp=profile.json,结果报错 open profile.json: no such file or directory。
实操建议:
-
配置文件放在
/etc/docker/seccomp.json - 运行
sudo chmod 644 /etc/docker/seccomp.json - 命令中写绝对路径:
--security-opt seccomp=/etc/docker/seccomp.json










