Ceph集群使用cephx协议进行Ceph内部组件之间、client与Ceph集群的认证。
cephx 认证配置
默认cephx认证信息在 /etc/ceph/ceph.conf
中配置,默认值都是 cephx
,禁用需要配置为 none
,如下:
[global]
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
修改认证需要重启Ceph集群。
认证场景
- 命令行与Ceph集群交互,包括:
- RadosGW 对象网关认证(对象网关认证系统+cephx)
- RBD 认证
- CephFS 用户认证(文件路径+cephx)
- Ceph集群内部组件之间通信
默认执行 ceph 命令时下,会使用 client.admin
用户(加载 /etc/ceph/ceph.client.admin.keyring
)认证
cephx 认证流程
配置
cephx 的认证是基于用户的,认证使用 keyring 文件。
用户查看
- 查看 ceph 集群中认证的用户 key 和相关权限:
ceph auth ls
ceph auth list
示例:
$ ceph auth ls
...
osd.0
key: AQCyQXtiZ/YzDxAA//AH42IVenvqRiAe1xy4NQ==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
...
client.admin
key: AQCHQHtiL1ffABAASgaeyfIe0HB+QM7JxJJ3Pw==
caps: [mds] allow *
caps: [mgr] allow *
caps: [mon] allow *
caps: [osd] allow *
...
client.bootstrap-mds
key: AQCPQHtiOmKoFhAAm3ueEuNS8+lTUweUJqHJKA==
caps: [mon] allow profile bootstrap-mds
...
mgr.c1.nxrzrt
key: AQCIQHtiKbpMDRAA6aFd5G0uKI9m8MNZKsmplg==
caps: [mds] allow *
caps: [mon] profile mgr
caps: [osd] allow *
说明:
- 用户格式
<type>.<name>
组成
ceph auth get <type>.<name>
ceph auth export <type>.<name>
示例:
$ ceph auth get client.admin
exported keyring for client.admin
[client.admin]
key = AQCHQHtiL1ffABAASgaeyfIe0HB+QM7JxJJ3Pw==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
打印用户的 key
仅包括key,没有权限信息,该key一般用在挂载文件系统时使用
$ ceph auth print-key <type>.<name>
AQCHQHtiL1ffABAASgaeyfIe0HB+QM7JxJJ3Pw==
添加用户
# 创建用户和权限
ceph auth add <type>.<name> <权限格式:权限格式:caps-type "allow *|r|w|" <network/prefix>>
# 获取或创建,-o 指定文件
ceph auth get-or-create <type>.<name> <权限格式:权限格式:caps-type "allow *|r|w|" <network/prefix>>
# 获取或创建,并返回 key 文件,-o 指定文件
ceph auth get-or-create-key <type>.<name> <权限格式:caps-type "allow *|r|w|" <network/prefix>>
创建用户规则:
- 至少有 mon 的读权限
- 至少有 osd 的读权限,osd 可以(通过 pool = xxx)限定 pool,默认为所有
- caps 类型包括:
- 权限包括:
- 不同的类型有不同权限,请参考官网,如使用 profile 权限模板分配权限
<network/prefix>
可选,指定网段
示例:
ceph auth add client.xianbin mon "allow r" osd "allow *" mgr "allow rw" mds "allow *"
删除用户
ceph auth rm <type>.<name>
其中,旧版本也可以使用 ceph auth del
命令删除用户
导入/导出用户
用来用户的备份和恢复:
ceph auth ls
ceph auth import -i file