Akemi

Ceph用户认证

2025/07/03

ceph使用cephx协议授权客户端、应用程序和守护进程之间的通信,并基于共享密钥

Ceph使用用户帐户有以下几个目的:
1.用于Ceph守护进程之间的内部通信
2.对于通过librados库访问集群的客户机应用程序
3.用于集群管理

安装的时候会创建超级用户账号client.admin,这个账号允许访问任何组件并修改集群配置

  • 如果外部访问,只需要完成rgw的认证即可,rgw会使用client.rgw.demo的账号访问ceph集群
  • 如果是个性化的应用程序,则需要创建该程序的账号来访问ceph集群

Key-ring文件

ceph在创建每个账户时,都会为其生成key-ring文件,如果要使用它,则需要将其复制到对于的客户机系统或应用程序服务端上

在客户端系统中,librados使用/etc/ceph/ceph.conf配置文件中的keyring参数来定位keyring文件

默认值为/etc/ceph/$cluster.$name.keyring,比如client.openstack账户,keyring文件就是/etc/ceph/ceph.client.openstack.keyring

默认是明文存储密钥

传输secret key

cephx以加密的形式传输共享密钥,客户端解密后向MON发请求ticket

配置用户认证

使用用户认证

使用ceph rados rbd等命令行工具,管理员可以使用--id或--keyring 来指定用户账户和keyring文件,如果不指定,就默认使用client.keyring

如果在缺省的位置存放keyring文件,就可以不使用--keyring 参数,cephadm shell自动从/etc/ceph目录挂载keyring

能力capabilities

1
2
3
4
5
6
7
定义用户的操作权限
# 语法
{daemon-type} '{capability} [{capability} ...]'
# 示例
mon 'allow r, allow command "osd blacklist"'
osd 'allow rw pool=rbd-pool'
mds 'allow rw path=/cephfs/dir'

用户管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 创建用户
ceph auth add client.wangsheng mon 'allow r' osd 'allow rw pool=mypool'

# 查看用户权限
ceph auth get client.wangsheng
[client.wangsheng]
key = AQCwXWZoosBKExAAwQ0S9u0WgbR7KOYEJQ+0dg==
caps mon = "allow r"
caps osd = "allow rw pool=mypool"

# 列出所有用户
ceph auth ls

# 创建密钥环
ceph-authtool --create-keyring /etc/ceph/ceph.client.wangsheng.keyring

# 添加用户到密钥环
ceph auth get client.wangsheng -o /etc/ceph/ceph.client.wangsheng.keyring

# 合并多个密钥环
cat user1.keyring user2.keyring > combined.keyring

# 修改用户权限
ceph auth caps client.john mon 'allow rw' osd 'allow rwx pool=data-pool'

# 删除用户
ceph auth del client.wangsheng

原文作者:王盛

原文链接:https://akemi.zj.cn/2025/07/03/Ceph-Auth/

发表日期:July 3rd 2025, 6:54:16 pm

更新日期:July 3rd 2025, 6:54:29 pm

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. Key-ring文件
  • 配置用户认证