在ceph启用身份验证的时候,必须指定用户名以及密码或者是秘钥环,比如k8s使用ceph做后端存储。
列出系统默认存在的用户
[root@k8s-node1 ceph]# ceph auth list osd.0 key: AQAtzNVbbXXuMRAA/3D27nFKofAFNg8iwfZ7lg== caps: [mon] allow profile osd caps: [osd] allow * osd.1 key: AQBEzNVbEscVIhAA2XgkcFr/0Ol3zwNR+Xdnvg== caps: [mon] allow profile osd caps: [osd] allow *
权限解释
class-read:
给用户能够调用类的读⽅法
class-write:
给用户能够调用类 写的⽅法
*.all:
给用户特定的pool读写的权限 ,以及执⾏管理命令的权限
profile osd (monitor only):
授予用户作为 OSD 连接到其他 OSD 或监视集群状态的权限,
授予 OSD 能够处理复制⼼跳流量和状态报告
profile mds (Monitor only)
:
给予用户连接mds 的权限
profile bootstrap-osd (Monitor only):
给与用户引导启动 osd 权限,列如批量管理⼯具
,如 ceph-volume, ceph-deploy
profile rbd-read-only (OSD only):
给予用户对 rdb 镜像只有读的权限
profile bootstrap-mds (Monitor only):
给予用户只有引导启动⼀个元数据服务的权限
获取⼀个用户的权限信息以及 key
[root@k8s-node1 ~]# ceph auth get client.admin exported keyring for client.admin [client.admin] key = AQBavtVb2irGJBAAsbJcna7p5fdAXykjVbxznA== caps mds = "allow *" caps mgr = "allow *" caps mon = "allow *" caps osd = "allow *"
[root@k8s-node1 ~]# ceph auth export client.admin export auth(auid = 18446744073709551615 key=AQBavtVb2irGJBAAsbJcna7p5fdAXykjVbxznA== with 4 caps) [client.admin] key = AQBavtVb2irGJBAAsbJcna7p5fdAXykjVbxznA== caps mds = "allow *" caps mgr = "allow *" caps mon = "allow *" caps osd = "allow *" [root@k8s-node1 ~]#
添加⼀个用户的⽅法
[root@k8s-node1 ~]# ceph auth get-or-create client.li mon 'allow r' osd 'allow rw pool=disk' [client.li] key = AQDLrtlbFNYhFBAAnftA0AmtTLvEhDBOxXYxZw==
ceph auth get-or-create 创建用户,并且返回⼀个秘钥⽂件格式,包括用户和密码如果用户已经存在,则仅仅返回秘钥⽂件格式的用户名和密码。同时也可以添加⼀个 -o 可以将输出保存到特定的⽂件里面去
[root@k8s-node1 ~]# ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=test' -o ringo.txt
将创建的秘钥传送到其他的节点上去,可以按照自⼰的需求进⾏传递
[root@k8s-node1 ~]#ceph auth get-or-create client.cinder |ssh xxx (主机) tee /ect/ceph/ceph.client.keyring
这个命令是将创建的 cinder 用户的秘钥传送到特定的主机上。然后在传送的主机的上 修改秘钥的属组属主。
修改用户的权限
[root@k8s-node1 ~]# ceph auth get client.li exported keyring for client.li [client.li] key = AQDLrtlbFNYhFBAAnftA0AmtTLvEhDBOxXYxZw== caps mon = "allow r" caps osd = "allow rw pool=disk"
[root@k8s-node1 ~]# ceph auth caps client.li 'allow rw ' mon updated caps for client.li
[root@k8s-node1 ~]# ceph auth get client.li exported keyring for client.li [client.li] key = AQDLrtlbFNYhFBAAnftA0AmtTLvEhDBOxXYxZw== caps allow rw = "mon"
删除⼀个 ceph 用户
[root@k8s-node1 ~]# ceph auth del client.li updated
查看⼀个用户的 key
[root@k8s-node1 ~]# ceph auth print-key client.li AQDCttlbMmG1JhAAehvXxMytp7WxrcRnEOB7rQ==
导⼊⼀个用户的的 key
[root@k8s-node1 ~]# ceph auth import -i /xxxx/xxx/xxx/client.tom.keyring