Cephx认证机制

ceph使用cephx协议对客户端进行身份认证

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

1、授权流程

每个 mon 节点都可以对客户端进行身份认证并分发秘钥,因此多个 mon 节点就不存在单点
故障和认证性能瓶颈。
mon 节点会返回用于身份认证的数据结构,其中包含获取 ceph 服务时用到的 session key,
session key 通 过 客 户 端 秘 钥 进 行 加 密 , 秘 钥 是 在 客 户 端 提 前 配 置 好 的 ,
/etc/ceph/ceph.client.admin.keyring。
客户端使用 session key 向 mon 请求所需要的服务,mon 向客户端提供一个 tiket,用于
向实际处理数据的 OSD 等服务验证客户端身份,MON 和 OSD 共享同一个 secret,因此
OSD 会信任所有 MON 发放的 tiket。(tiket存在有效期)

注意:

cephx身份验证功能仅限制在ceph的各组件之间,不能扩展到其他非ceph组件,ceph只负责认证授权,不能解决数据传输加密的问题
在这里插入图片描述

2、访问流程

无论ceph客户端是那种类型,例如块设备、对象存储、文件系统,ceph都会在存储中奖所有数据存储为对象:

ceph用户需要拥有存储池访问权限,才能读取和写入数据

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

3、ceph用户

用户是指个人(ceph管理者)或系统参与者(MON/OSD/MDS)

通过创建用户,可以控制用户或哪个参与者能够访问ceph存储集群、以及可访问的存储池及存储中的数据。

ceph支持多种类型的用户,但可管理的用户都属于client类型

区分用户类型的原因在于,MON、OSD、MDS等系统组件特使用cephx协议,但是他们为非客户端。

通过点号来分割用户类型和用户名,格式为user.type 例如:client.admin

cephadmin@ceph-mon1:/etc/ceph$ cat ceph.client.admin.keyring
[client.admin]
	key = AQBqc6ZkIP0/BBAArwh+Kk3ynP/KDtHU6KL5dg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"

4、管理ceph用户

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

4.1 查看集群的用户列表

cephadmin@ceph-mon1:/etc/ceph$ ceph auth list

4.2 列出指定用户的详细信息

cephadmin@ceph-mon1:/etc/ceph$ ceph auth get osd.1
[osd.1]
	key = AQCfeKZk1lB5FRAAc80u9CRs/lx3Bnoq54pJrQ==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
exported keyring for osd.1

4.3 添加用户并赋权

cephadmin@ceph-mon1:~$ ceph auth add  client.qiang mon "allow r" osd "allow rwx pool=mypool"

#验证用户
cephadmin@ceph-mon1:/etc/ceph$ ceph auth get client.qiang
[client.qiang]
	key = AQCOGalksy8EDRAA3B+EFlRa//sUou4pSSkCcg==
	caps mon = "allow r"
	caps osd = "allow rwx pool=mypool"
exported keyring for client.qiang

#创建新用户并返回包含用户名和密钥的密钥文
cephadmin@ceph-mon1:~$ ceph auth get-or-create  client.weng mon "allow r" osd "allow rwx pool=mypool"

#把返回的用户名和密钥的密钥文输出保存到一个文件中
cephadmin@ceph-mon1:~$ ceph auth get-or-create  client.weng mon "allow r" osd "allow rwx pool=mypool" -o passwd.txt
或者
cephadmin@ceph-mon1:~$ ceph auth get-or-create  client.weng mon "allow r" osd "allow rwx pool=mypool" > passwd.txt

12、修改用户的权限
cephadmin@ceph-mon1:~$ ceph auth caps client.weng mon "allow rw" osd "allow r pool=mypool"

13、删除用户
cephadmin@ceph-mon1:~$ ceph auth  del client.weng

5、ceph授权和使能

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

能力一览表:

  • r:向用户授予读取权限。访问监视器(mon)以检索 CRUSH 运行图时需具有此能力。
  • w:向用户授予针对对象的写入权限。
  • x:授予用户调用类方法(包括读取和写入)的能力,以及在监视器中执行 auth 操作的能
    力。
  • *:授予用户对特定守护进程/存储池的读取、写入和执行权限,以及执行管理命令的能力
  • profile osd:授予用户以某个 OSD 身份连接到其他 OSD 或监视器的权限。授予 OSD 权
    限,使 OSD 能够处理复制检测信号流量和状态报告(获取 OSD 的状态信息)。
  • profile mds:授予用户以某个 MDS 身份连接到其他 MDS 或监视器的权限。
  • profile bootstrap-osd:授予用户引导 OSD 的权限(初始化OSD并将OSD加入ceph集群),
    授权给部署工具,使其在引导 OSD 时有权添加密钥。
  • profile bootstrap-mds:授予用户引导元数据服务器的权限,授权部署工具权限,使其在引
    导元数据服务器时有权添加密钥

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'

还允许进行存储池和名称空间设置。
osd ‘allow capability’ [pool=poolname] [namespace=namespace-name]


**MDS 能力:**

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

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐