私钥权限基线
私钥在主机上的可读范围由文件权限与属主共同决定。常见基线是私钥文件 600、目录 700 或 750,属主为部署账号或服务账号;容器场景应使用只读挂载,避免私钥进入镜像层或构建缓存。权限只是第一道控制,私钥出现在备份、日志与持续集成缓存中同样构成暴露。
基本信息
| 推荐权限 | 私钥 600,证书可 644,目录 700 或按需 750 |
|---|---|
| 属主 | 部署账号为佳;服务需读权限时用受限组 |
| 容器 | 只读挂载,不进镜像层与构建缓存 |
| 检查方式 | 逐级路径检查与属性查询 |
典型使用场景
- 新主机部署:按基线设置权限与属主
- 排错:服务读不到私钥时改用最小化授权方案
- 容器化改造:确认私钥不从镜像层泄露
- 合规检查:核对私钥文件的权限与属主
- 泄露应急:确认可读范围后决定是否轮换
权限设置与核对
权限设置与核对
chmod 700 /etc/nginx/ssl
chmod 600 /etc/nginx/ssl/example.com.key
namei -l /etc/nginx/ssl/example.com.key # 逐级确认目录权限不放大
stat -c '%a %U:%G %n' /etc/nginx/ssl/* # 批量查看权限与属主权限基线
| 对象 | 建议 | 说明 |
|---|---|---|
| 私钥文件 | 600,属主为服务账号 | 只有属主可读写 |
| 证书文件 | 644 | 公钥内容可公开 |
| 目录 | 700 或 750 | 避免目录权限放大可读范围 |
| 容器挂载 | 只读 | 防止运行时被改写 |
私钥出现在备份、日志、持续集成缓存与镜像层中同样构成暴露,权限只是第一道控制;发现私钥离开受控位置后应按泄露处理并轮换。
落地建议
- 部署脚本负责设置权限,避免依赖人工操作
- 把私钥目录与业务代码目录分离
- 限制备份范围,不把私钥纳入常规备份
- 定期巡检权限与属主,发现偏差立即修正
为让服务读到私钥而把文件设为全局可读,是最常见也最危险的权宜做法;正确方式是调整属主或引入受限用户组。