只读文件系统策略是容器安全关键防线,通过限制运行时写入遏制配置篡改、密钥替换、模板注入等风险,并需分离只读与可写路径以保障服务正常运行。
只读文件系统策略是容器安全防护中一道关键防线,它通过限制运行时写入能力,从根源上遏制配置篡改、恶意覆盖和日志污染等常见风险。
防止运行时配置被意外或恶意修改
容器启动后若挂载了可写的配置目录(如 /etc/nginx 或 /app/config),应用或漏洞利用代码可能直接覆写配置文件。启用只读挂载后,任何 write、chmod、unlink 等操作都会立即失败,内核返回 EROFS(Read-only file system) 错误。这不仅保护了原始配置一致性,也避免因配置损坏导致服务中断。
阻断敏感资源的横向覆盖行为
证书、密钥、静态模板等不应在运行期变更的资产,一旦以可写方式暴露给容器,就可能成为攻击跳板。例如:
- TLS 私钥被替换为攻击者控制的证书,实现中间人劫持
- HTML 模板注入恶意脚本并持久化到挂载目录
- 环境变量文件被重写,导致数据库连接指向恶意实例
将这些路径设为 read_only: true(Compose)或 :ro(CLI),能确保它们仅作为输入源存在,无法被输出逻辑反向污染。
强化最小权限原则的落地执行
最小权限不只是用户 UID 的限制,也包括对文件系统的访问维度。只读策略配合非 root 用户运行、能力裁剪(如移除 sys_admin)、禁用特权模式,共同构成纵深防御层。它让容器真正变成“执行单元”而非“管理单元”,即使应用进程被攻破,也无法持久化写入或扩散到其他挂载点。
规避日志与临时文件路径配置冲突
只读不是万能的——如果把日志目录或缓存路径也设为只读,服务大概率会启动失败或静默崩溃。正确做法是明确分离:
- 只读路径:配置文件、证书、静态资源、只读数据库快照
- 可写路径:日志目录(/var/log/app)、运行时 socket(/run)、临时缓存(/tmp 或专用 volume)
这种分离不靠信任应用行为,而是由挂载策略强制约束,更可靠、更易审计。











