CephX 与密钥环
Ceph 用自研的 CephX 机制做认证:每个客户端、每个守护进程都有一份身份和密钥,存放在密钥环文件里。访问时凭密钥环向 MON 换取会话票据,再按能力声明(caps)决定能读哪些池、能做哪些操作。集群里没有匿名访问,权限全由密钥环和 caps 决定。
基本信息
| 适用平台 | Ceph(所有主流版本) |
|---|---|
| 管理命令 | ceph auth list / get / get-or-create / caps |
| 密钥环路径 | /etc/ceph/ceph.client.<名字>.keyring |
| 权限要求 | 需 client.admin 或带 auth 管理能力的身份 |
典型使用场景
- 给应用分配专用身份:不让业务直接用 admin 密钥,按需最小授权
- 限制到具体池与操作:只允许读写某个 rbd 池,禁止碰其他池
- 密钥轮换:定期重新生成密钥并更新客户端密钥环
- 排查权限报错:用 auth get 核对某身份的真实 caps 是否覆盖当前操作
常用操作
常用操作
ceph auth list # 列出所有身份与权限
ceph auth get client.admin # 查看某身份的密钥与 caps
ceph auth get-or-create client.app1 mon 'allow r' osd 'allow rw pool=data' # 建最小权限身份
ceph auth caps client.app1 osd 'allow rw pool=data' # 调整已有身份的权限
ceph auth del client.app1 # 删除不再使用的身份常见身份与用途
| 身份 | 常见授权范围 | 用途 |
|---|---|---|
| client.admin | 全集群管理权限 | 运维管理,绝不交给业务应用 |
| client.app1 | 仅指定池读写 | 应用接入,按池最小授权 |
| osd.bootstrap | 引导新 OSD 加入 | 扩容易失窃,需重点保护 |
密钥环文件本身就是凭据,权限要收敛到 600 并限定属主;导出或转发密钥环等同于交出该身份的完整权限。
把 client.admin 密钥环复制到业务服务器是最常见的越权来源:应用一旦被入侵,等于整个集群被接管。
权限自查清单
- 用 ceph auth list 全量核对,找出长期不用的历史身份并回收
- 确认 admin 密钥环只存在于管理机,业务服务器上没有副本
- 确认业务身份的能力声明精确到具体池而不是整个存储平面
- 确认密钥环文件属主与权限仅属主可读,副本留在受控位置
- 密钥轮换后确认旧密钥已失效,避免新旧并存期过长
删掉本机密钥环文件并不等于身份失效:身份记录保存在 MON,必须用 ceph auth del 才能真正回收权限。