三、Ceph的认证

Ceph作为一个分布式存储系统,支持对象存储、块设备和文件系统。为了在网络传输中防止数据被篡改,做到较高程度的安全性,加入了Cephx加密认证协议。其目的是识别身份,加密、验证传输中的数据。

cephx 用于对ceph 保存的数据进行认证访问和授权,用于对访问ceph 的请求进行认证和授权检测,与mon 通信的请求都要经过ceph 认证通过,但是也可以在mon 节点关闭cephx认证,但是关闭认证之后任何访问都将被允许,因此无法保证数据的安全性。

Client与OSD必须先连接到mon上完成认证,Client才能读写数据。

下面为ceph.conf中的cephx的配置:

$vim /etc/ceph/ceph.conf
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

  

1、Ceph的授权流程

(1)每个mon 节点都可以对客户端进行身份认证并分发秘钥,因此多个mon 节点就不存在单点故障和认证性能瓶颈。

(2)mon 节点会返回用于身份认证的数据结构,其中包含获取ceph 服务时用到的session key,session key 通过客户端秘钥进行加密,秘钥是在客户端提前配置好的,/etc/ceph/ceph.client.admin.keyring。

(3)客户端使用session key 向mon 请求所需要的服务,mon 向客户端提供一个tiket,用于向实际处理数据的OSD 等服务验证客户端身份,MON 和OSD 共享同一个secret,因此OSD会信任所有MON 发放的tiket。

(4)tiket 存在有效期。

注意:
CephX 身份验证功能仅限制在Ceph 的各组件之间,不能扩展到其他非ceph 组件
Ceph 只负责认证授权,不能解决数据传输的加密问题

  

要访问 Ceph 集群,客户端首先访问 Ceph monitor,并只把它的用户名发送给 monitor。Cephx 协议的工作方式是,客户端和 monitor 双方都有一份密钥的副本,因此能在不暴露密钥的情况下互相证明自己的身份。这就是为什么客户端只需要发送它的用户名而不是密钥给 monitor。 Ceph monitor 随即为该用户产生一个会话密钥(sessionkey),并且使用该用户的密钥对它进行加密。然后, monitor 将加密后的会话密钥发回给客户端。然后客户端使用它自己的密钥对加密过的会话密钥进行解密来获取原始的会话密钥。该会话密钥会在当前会话中一直保持有效。 使用这个会话密钥,客户端向 Ceph monitor 申请一个 ticket(票券)。Cephmonitor 首先校验会话密钥,然后产生一个 ticket,使用该用户的密钥对它加密,然后将它传回给客户端。然后客户端将它解密以获得 ticket,并使用它对将要发给 OSD 和元数据服务器的请求做签名。 Cephx 协议会对客户端和 Ceph 集群节点之间的通信进行身份验证。在最初的身份验证之后,客户端和 Ceph 节点之间传递的所有消息都会被这个 ticket 签名,然后这些消息会被 monitor、OSD 和元数据节点使用共享的密钥做验证。而且,Cephx ticket 是会过期的,因此一个攻击者无法使用一个过期的 ticket 或者会话密钥来获取 Ceph 集群的访问权限。下图显示了完整的用户身份验证过程。

2、Ceph的访问流程

无论ceph 客户端是哪种类型,例如块设备、对象存储、文件系统,ceph 都会在存储池中将所有数据存储为对象。 ceph 用户需要拥有存储池pool访问权限,才能读取和写入数据。

ceph 用户必须拥有执行权限才能使用ceph 的管理命令。

(1)Client向mon申请一个有权限可以访问osd的用户,client和mon共享该用户权限信息。

(2)同时该用户也会给mon、mds和osd共享。

(3)Client拿到了授权用户开始向mon认证。

(4)mon通过认证后,会生成一个随机并加密的session key发送给Client.

(5)Client收到mon发送过来的session key并解密后,再向mon发起ticket申请请求。

(6)mon将ticket信息发送给client。

(7)Client接受到mon发来的ticke后,下面开始请求数据。

(8)如果Client访问的是cephfs,client会向mds发送请求;如果Client访问是块存储等设备,则直接向osd发送请求。

3、Ceph的用户

用户是指个人(ceph 管理者)或系统参与者(MON/OSD/MDS)。 通过创建用户,可以控制用户或哪个参与者能够访问ceph 存储集群、以及可访问的存储池及存储池中的数据。 ceph 支持多种类型的用户,但可管理的用户都属于client 类型区分用户类型的原因在于,MON/OSD/MDS 等系统组件特使用cephx 协议,但是它们为非客户端。

通过点号来分割用户类型和用户名,格式为TYPE.ID,例如client.admin。client.admin:用户命名遵循 <TYPE.ID> 的命名规则,也就是<用户类型.用户名>。其中 Type 有 mon、osd、mgr 为守护进程,client为客户端用户。

cephadmin@ceph-deploy:~$ cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==   #admin用户的加密密钥
	#下面为admin用户对ceph集群各个组件的管理权限
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"

  

查看指定用户信息:

 
cephadmin@ceph-deploy:~$ ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME             STATUS  REWEIGHT  PRI-AFF
-1         0.29228  root default                                   
-3         0.07794      host ceph-node01                           
16    hdd  0.01949          osd.16            up   1.00000  1.00000
17    hdd  0.01949          osd.17            up   1.00000  1.00000
18    hdd  0.01949          osd.18            up   1.00000  1.00000
19    hdd  0.01949          osd.19            up   1.00000  1.00000
-5         0.05846      host ceph-node02                           
 4    hdd  0.01949          osd.4             up   1.00000  1.00000
 5    hdd  0.01949          osd.5             up   1.00000  1.00000
 6    hdd  0.01949          osd.6             up   1.00000  1.00000
-7         0.07794      host ceph-node03                           
 8    hdd  0.01949          osd.8             up   1.00000  1.00000
 9    hdd  0.01949          osd.9             up   1.00000  1.00000
10    hdd  0.01949          osd.10            up   1.00000  1.00000
11    hdd  0.01949          osd.11            up   1.00000  1.00000
-9         0.07794      host ceph-node04                           
12    hdd  0.01949          osd.12            up   1.00000  1.00000
13    hdd  0.01949          osd.13            up   1.00000  1.00000
14    hdd  0.01949          osd.14            up   1.00000  1.00000
15    hdd  0.01949          osd.15            up   1.00000  1.00000




cephadmin@ceph-deploy:~$ ceph auth get osd.10
[osd.10]
	key = AQCn3xth8E1QKhAAiNtNqTYia0PKroZrPTKkBw==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
exported keyring for osd.10

#osd.10  用户类型为osd,id号为10

cephadmin@ceph-deploy:~$ ceph auth get client.admin
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
exported keyring for client.admin

  

4、Ceph授权及使能

用户的授权,只有在授权之后,用户才可以使用权限范围内的 MON、OSD、MDS 的功能。

ceph 基于使能/能力(Capabilities,简称caps )来描述用户可针对MON/OSD 或MDS 使用的授权范围或级别。

通用的语法格式:daemon-type ‘allow caps’ [...]

能力一览表:

授权阶段分2种:访问授权和能力授权
访问授权:
allow:在守护进程进行访问设置之前就已经具有特定权限,仅对 MDS 隐含 rw
r:向用户授予读取权限。访问监视器(mon)以检索CRUSH 运行图时需具有此能力。
w:向用户授予针对对象的写入权限。
x:授予用户调用类方法(包括读取和写入)的能力,以及在监视器中执行auth 操作的能力。
*,all:授予用户对特定守护进程/存储池的读取、写入和执行权限,以及执行管理命令的能力
class-read:授予用户调用类读取方法的能力, x 的子集
class-write:授予用户调用类写入方法的能力, x 的子集

能力授权:
profile osd :授予用户以某个OSD 身份连接到其他OSD 或监视器的权限。授予OSD 权限,使OSD 能够处理复制检测信号流量和状态报告(获取OSD 的状态信息)。
profile mds :授予用户以某个MDS 身份连接到其他MDS 或监视器的权限。
profile bootstrap-osd:授予用户引导OSD 的权限(初始化OSD 并将OSD 加入ceph 集群),授权给部署工具,使其在引导OSD 时有权添加密钥。通常授予部署工具ceph-deploy,让它们在引导 OSD 时就有增加密钥的权限了.
profile bootstrap-mds:授予用户引导元数据服务器的权限,授权部署工具权限,使其在引导元数据服务器时有权添加密钥。
profile bootstrap-rbd:授权用户引导 RBD 守护进程的能力,同上
profile bootstrap-rbd-mirror:授权用户引导 rbd-mirror守护进程的能力,同上
profile rbd:授权一个用户可以操作rbd image的权限
profile rbd-mirror:授权一个用户可以操作rbd image的权限和获得osd Mirroring配置秘钥
profile rbd-read-only:授权一个用户只读rbd image的权限

  MON 能力:

包括r/w/x 和allow profile cap(ceph 的运行图)
例如:
mon 'allow rwx'
mon 'allow profile osd'

  OSD 能力:

包括r、w、x、class-read、class-write(类读取))和profile osd(类写入),另外OSD 能力还允
许进行存储池和名称空间设置。
osd 'allow capability' [pool=poolname] [namespace=namespace-name]

  MDS 能力:

只需要allow 或空都表示允许。
mds 'allow'

  

5、Ceph用户管理

用户管理功能可让Ceph 集群管理员能够直接在Ceph 集群中创建、更新和删除用户。 在Ceph 集群中创建或删除用户时,可能需要将密钥分发到客户端,以便将密钥添加到密钥环中/etc/ceph/ceph.client.admin.keyring,此文件中可以包含一个或者多个用户认证信息,凡是拥有此文件的节点,将具备访问ceph 的权限,而且可以使用其中任何一个账户的权限,此文件类似于linux 系统的中的/etc/passwd 文件。

1创建用户的流程

要使用 Cephx,集群的管理员(administrator),也就是 client.admin,需要在集群中创建一个用户账号(user account)。要创建用户账号,client.admin 需要调用 ceph auth get-or-create 命令。Ceph 用户验证子系统会产生一 个用户名(username)和一个密钥(secret key),并将它们保存在Ceph monitor 上,再将用户密钥返回给client.admin。Ceph 系统管理员需要将用户名和密码提供给需要安全地访问 Ceph 存储服务的客户端。

 

2)列出用户

cephadmin@ceph-deploy:~$ ceph auth list
osd.10
	key: AQCn3xth8E1QKhAAiNtNqTYia0PKroZrPTKkBw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.11
	key: AQC73xthe8HdLhAAPn3Odus1lnVgS33FTKMsOw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.12
	key: AQDY3xthEimIJhAAZBtxRVnGk7lQ4ePrQX/IFg==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.13
	key: AQDu3xthFw/BAxAA188g6znSfBhVp0KS2rfuDw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.14
	key: AQBW4BthbLItCRAAZToVdPYXX3OioYSk7drN2A==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.15
	key: AQBJ4Rth1J7yEhAAEBjhszfv+/l8Sn8oC5CIwQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.16
	key: AQDUohxhNOYfFhAAvia7vpPfuAHTJkH+Y//a6g==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.17
	key: AQD2ohxheYwbNBAAUJeYKzBkG3DdEytc3oJ04g==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.18
	key: AQAioxxhX99KKxAApi1oYobuhiNob/Sya1dHZw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.19
	key: AQBLoxxhNQU1GxAAr9hDPMy/szq/4fEvkcLucQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.4
	key: AQAe3xthhdCRJRAAB/pYzWMaoBImp79bS0FDWg==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.5
	key: AQA03xthXTvYJRAAqkRD4AAo7mlYD7C+u5AmpQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.6
	key: AQBJ3xthAu98ABAAYjUZPZLY9dc0G+2tyzPHSA==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.8
	key: AQB+3xthHQYTABAAVGRxMD3LtfSuCkuasVrLAQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.9
	key: AQCS3xthK5WJOBAAXQomcwWHG7wgQe/AZrtcLw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
client.admin
	key: AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps: [mds] allow *
	caps: [mgr] allow *
	caps: [mon] allow *
	caps: [osd] allow *
client.bootstrap-mds
	key: AQAKyxthbBHbORAARZ9YWc91MsEpI47n4bBiaQ==
	caps: [mon] allow profile bootstrap-mds
client.bootstrap-mgr
	key: AQAKyxthhCbbORAAAU6l1aSb76vYWU/U8Ow++w==
	caps: [mon] allow profile bootstrap-mgr
client.bootstrap-osd
	key: AQAKyxthJzrbORAAeoL4+iqegTQqAAhg51yEYg==
	caps: [mon] allow profile bootstrap-osd
client.bootstrap-rbd
	key: AQAKyxth+EzbORAABONpnXhO6FmRXZmrQTRqaw==
	caps: [mon] allow profile bootstrap-rbd
client.bootstrap-rbd-mirror
	key: AQAKyxthNF/bORAAuO3Tx8uZOEOelSW1V2U2sQ==
	caps: [mon] allow profile bootstrap-rbd-mirror
client.bootstrap-rgw
	key: AQAKyxthNHDbORAARVjOD8xlmwg8pRnG/gdr0g==
	caps: [mon] allow profile bootstrap-rgw
mgr.ceph-mgr01
	key: AQB50Bthh1XKDxAAigNmg5O8ROcafDZysfJCgg==
	caps: [mds] allow *
	caps: [mon] allow profile mgr
	caps: [osd] allow *
mgr.ceph-mgr02
	key: AQCuqxxhtqofCRAAJ4HdN+6Bmv2k8zF8REcIjQ==
	caps: [mds] allow *
	caps: [mon] allow profile mgr
	caps: [osd] allow *
installed auth entries:

  注意:TYPE.ID 表示法 针对用户采用TYPE.ID 表示法,例如osd.0 指定是osd 类并且ID 为0 的用户(节点),client.admin是client 类型的用户,其ID 为admin, 注意,每个项包含一个key=xxxx 项,以及一个或多个caps 项。 可以结合使用-o 文件名选项和ceph auth list 将输出保存到某个文件。

cephadmin@ceph-deploy:~$ ceph auth list -o /tmp/ceph_user.key

  

3用户管理命令

 

添加一个用户会创建用户名(TYPE.ID)、机密密钥,以及包含在命令中用于创建该用户的所有能力,用户可使用其密钥向Ceph 存储集群进行身份验证。用户的能力授予该用户在Ceph monitor (mon)、Ceph OSD (osd) 或Ceph 元数据服务器(mds) 上进行读取、写入或执行的能力,可以使用以下几个命令来添加用户。

3.1创建用户及获取用户信息

3.1.1 ceph auth add

此命令是添加用户的规范方法。它会创建用户、生成密钥,并添加所有指定的能力。

cephadmin@ceph-deploy:~$ ceph auth add -h
auth add <entity> {<caps> [<caps>...]}

cephadmin@ceph-deploy:~$ ceph osd pool ls
device_health_metrics
myrbd1
#给pool=myrbd1创建一个client的ywx用户,对mon有r权限,对myrbd1地址池有rwx权限
cephadmin@ceph-deploy:~$ ceph auth add client.ywx mon 'allow r' osd 'allow rwx pool=myrbd1'
added key for client.ywx
cephadmin@ceph-deploy:~$ ceph auth get client.ywx
[client.ywx]
	key = AQAjNCJhFgTkCBAA+Xzg30Mu0F1k7eqGOvEaMw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.ywx

  

3.1.2 ceph auth get-or-create

ceph auth get-or-create 此命令是创建用户较为常见的方式之一,它会返回包含用户名(在方括号中)和密钥的密钥文,如果该用户已存在,此命令只以密钥文件格式返回用户名和密钥,还可以使用-o 指定文件名选项将输出保存到某个文件。

 
#创建kaka用户
cephadmin@ceph-deploy:~$ ceph auth get-or-create client.kaka mon 'allow r' osd 'allow rwx pool=myrbd1'
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
cephadmin@ceph-deploy:~$ ceph auth get client.kaka
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.kaka
#再次创建kaka用户
cephadmin@ceph-deploy:~$ ceph auth get-or-create client.kaka mon 'allow r' osd 'allow rwx pool=myrbd1'
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
#注意:该命令为没有创建的用户,则创建用户并显示用户名(在方括号中)和密钥的密钥文;创建的用户已存在,则直接显示用户名(在方括号中)和密钥的密钥文。

  

3.1.3 ceph auth get-or-create-key

此命令是创建用户并仅返回用户密钥,对于只需要密钥的客户端(例如libvirt),此命令非常有用。如果该用户已存在,此命令只返回密钥。您可以使用-o 文件名选项将输出保存到某个文件。 创建客户端用户时,可以创建不具有能力的用户。不具有能力的用户可以进行身份验证,但不能执行其他操作,此类客户端无法从监视器检索集群地图,但是,如果希望稍后再添加能力,可以使用ceph auth caps 命令创建一个不具有能力的用户。典型的用户至少对Ceph monitor 具有读取功能,并对Ceph OSD 具有读取和写入功能。此外,用户的OSD 权限通常限制为只能访问特定的存储池。

 
cephadmin@ceph-deploy:~$ ceph auth get-or-create-key client.kaka mon 'allow r' osd 'allow rwx pool=myrbd1'
AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
#1、仅仅只显示用户密钥key
#2、用户有key就显示,没有key就创建

  

3.1.4 ceph auth print-key

获取单个指定用户的key 信息

cephadmin@ceph-deploy:~$ ceph auth print-key client.kaka
AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==

  

3.2修改用户权限能力

使用ceph auth caps 命令可以指定用户以及更改该用户的能力,设置新能力会完全覆盖当前的能力,因此要加上之前的用户已经拥有的能和新的能力,如果看当前能力,可以运行ceph auth get USERTYPE.USERID,如果要添加能力,使用以下格式时还需要指定现有能力:

 
root # ceph auth caps USERTYPE.USERID daemon 'allow [r|w|x||...] 
[pool=pool-name] [namespace=namespace-name]' [daemon 'allow [r|w|x||...] 
[pool=pool-name] [namespace=namespace-name]']

  案例

#查看上面创建的kaka用户权限
cephadmin@ceph-deploy:~$ ceph auth get client.kaka
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.kaka
#将mon权限改为rw,osd权限改为rw

cephadmin@ceph-deploy:~$ ceph auth caps client.kaka mon 'allow rw' osd 'allow rw pool=myrbd1'
updated caps for client.kaka
#验证权限
cephadmin@ceph-deploy:~$ ceph auth get client.kaka
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
	caps mon = "allow rw"
	caps osd = "allow rw pool=myrbd1"
exported keyring for client.kaka

  

3.3删除用户

要删除用户使用ceph auth del TYPE.ID,其中TYPE 是client、osd、mon 或mds 之一,ID 是用户名或守护进程的ID。

 
#删除kaka用户
cephadmin@ceph-deploy:~$ ceph auth del client.kaka
updated
cephadmin@ceph-deploy:~$ ceph auth get client.kaka
Error ENOENT: failed to find client.kaka in keyring
#无kaka用户

  

6、密钥环管理

ceph 的秘钥环是一个保存了secrets、keys、certificates 并且能够让客户端通认证访问ceph的keyring file(集合文件),一个keyring file 可以保存一个或者多个认证信息,每一个key 都有一个实体名称加权限,类型为:

{client、mon、mds、osd}.name

  当客户端访问ceph 集群时,ceph 会使用以下四个密钥环文件预设置密钥环设置:

/etc/ceph/<$cluster name>.<user $type>.<user $id>.keyring #保存单个用户的keyring
/etc/ceph/cluster.keyring #保存多个用户的keyring
/etc/ceph/keyring #未定义集群名称的多个用户的keyring
/etc/ceph/keyring.bin #编译后的二进制文件

  

6.1创建密钥环文件

密钥环文件的创建分为:用户创建--->空的keyring文件创建--->把用户信息导入keyring文件。

#1、创建一个user1的用户文件
cephadmin@ceph-deploy:~$ ceph auth get-or-create client.user1 mon 'allow r' osd 'allow rwx pool=myrbd1'
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
cephadmin@ceph-deploy:~$ ceph auth get client.user1
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.user1


#2、创建一个名为ceph.client.user1.keyring的空的密钥环文件
cephadmin@ceph-deploy:~$ ceph-authtool --create-keyring ceph.client.user1.keyring
creating ceph.client.user1.keyring #是个空文件

cephadmin@ceph-deploy:~$ file ceph.client.user1.keyring
ceph.client.user1.keyring: empty

#3、导出user1信息之指定的keyring文件
cephadmin@ceph-deploy:~$ ceph auth get client.user1 -o ceph.client.user1.keyring 
exported keyring for client.user1
cephadmin@ceph-deploy:~$ cat ceph.client.user1.keyring
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"

  

在创建包含单个用户的密钥环时,通常建议使用ceph 集群名称、用户类型和用户名及keyring来命名, 并将其保存在/etc/ceph 目录中。例如为client.user1 用户创建ceph.client.user1.keyring。

6.2从keyring文件恢复删除的用户认证信息

#1、删除client.user1用户
cephadmin@ceph-deploy:~$ ceph auth get client.user1
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.user1
#删除client.use1
cephadmin@ceph-deploy:~$ ceph auth del client.user1
updated
#验证client.user1用户被删除
cephadmin@ceph-deploy:~$ ceph auth get client.user1
Error ENOENT: failed to find client.user1 in keyring

#2、使用client.user1的keyring恢复用户client.user1的认证信息
cephadmin@ceph-deploy:~$ ceph auth import -i ceph.client.user1.keyring 
imported keyring
#client.user1信息被恢复
cephadmin@ceph-deploy:~$ ceph auth get client.user1
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.user1

  

6.3将多用户信息导入至同一个keyring

#1、创建一个空的keyring 文件:
cephadmin@ceph-deploy:~$ ceph-authtool --create-keyring ceph.client.user.keyring
creating ceph.client.user.keyring
#2、将admin用户keyring文件内容导入到user的keyring文件
cephadmin@ceph-deploy:~$ ceph-authtool --create-keyring ceph.client.user.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring 
creating ceph.client.user.keyring
importing contents of /etc/ceph/ceph.client.admin.keyring into ceph.client.user.keyring
#3、验证ceph.client.user.keyring文件
cephadmin@ceph-deploy:~$ ceph-authtool -l ./ceph.client.user.keyring 
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
#4、再把ceph.client.user1.keyring文件内容信息导入到user的keyrig文件中
cephadmin@ceph-deploy:~$ ceph-authtool ./ceph.client.user.keyring --import-keyring ./ceph.client.user1.keyring 
importing contents of ./ceph.client.user1.keyring into ./ceph.client.user.keyring
#5、验证ceph.client.user.keyring文件信息
cephadmin@ceph-deploy:~$ ceph-authtool -l ./ceph.client.user.keyring 
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"

  

 

I have a dream so I study hard!!!
原文地址:https://www.cnblogs.com/yaokaka/p/15206447.html