cephx认证和授权

ceph认证流程

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

所有对于ceph的访问请求都要经过cephx认证,ceph默认已经开启了cephx认证,也可以在mon节点关闭cephx认证,但是关闭认证后任何访问都将被允许,因此无法保证数据的安全性。

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

认证过程中,mon节点会返回用于身份认证的数据结构,其中包括获取ceph服务时用到的session-key,session-key通过客户端密钥进行加密传输,而密钥是客户端提前配置好的,保存在客户端的keyring文件中

客户端使用session-key向mon请求所需服务,mon向客户端提供一个ticket,用于向实际处理数据的OSD等服务验证客户端身份,MON和其它ceph组件共享同一个secret,因此OSD会信任MON所发放的ticket。

需要注意两点:

  • cephx的身份验证功能仅限制在Ceph的各组件之间,不能扩展到其它非ceph组件
  • cephx不负责数据传输加密的问题

cephx认证流程如下面两图所示:
在这里插入图片描述
在这里插入图片描述

  1. 首先创建用户时,mon会为用户提供一个secret,并且将该secret与其它ceph组件(其它mon、mds、osds)共享,客户端收到该secret后一般将其保存在keyring文件中
  2. 之后客户端通过该用户的身份连接到mon进行认证
  3. mon返回一个加密的身份验证的数据结构,里边包含session-key
  4. 客户端通过keyring中保存的secret进行解密得到session-key
  5. 客户端携带session-key向mon请求一个ticket
  6. mon返回加密的ticket
  7. 客户端通过keyring中保存的secret进行解密得到ticket
  8. 客户端向OSD或MDS发起请求时携带此ticket即可验证身份

ceph授权

ceph客户端提交的数据最终都存储在pool中,因此ceph用户需要拥有存储池的访问权限才能读写数据。ceph用户必须拥有执行权限才能使用ceph的管理命令。

在ceph的授权体系中涉及到下面3个概念:

  • 用户
  • 授权
  • 使能

用户

用户是指个人(ceph管理者)或系统参与者(mon、osd、mds)

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

ceph支持多种类型的用户,但可管理的用户都属于client类型。区分用户的原因在于,mon/mds/osd等系统组件也使用cephx协议,但它们为非客户端。

通常以点号来分割用户类型和用户名:TYPE.ID。例如client.admin、osd.10等

在这里插入图片描述

授权和使能

授权就是将使能赋予用户,使用户获得相应权限。

ceph基于使能(Capabilities,简称caps)来描述用户可针对mon、osd或mds能执行的操作和范围。

授权的通用语法格式为:daemon-type ‘allowcaps’ […]

目前可用的使能如下:

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

MON的使能:

包括r、w、x和allow profile cap
例如:
mon 'allow rwx'
mon 'allow profile osd'

OSD的使能:

包括r、w、x、class-read、class-write和profile osd,另外osd的使能还允许进行存储池和名称空间设置
例如:
osd 'allow rwx pool=test-pool'

MDS的使能:

只能设置allow或留空
例如:
mds 'allow'

ceph认证和授权常用命令

用户管理

列出所有用户
ceph auth list

在这里插入图片描述

获取指定用户的信息
ceph auth get client.admin	#获取client.admin用户的信息
ceph auth get osd.9		#获取osd.9用户信息

在这里插入图片描述

创建用户
ceph auth add  <username> [<caps> .....] #创建用户生成密钥并添加caps
例如:
ceph auth add client.tom mon 'allow r' osd 'allow rwx pool=mypool'

在这里插入图片描述

ceph auth get-or-create <username> [<caps> ....]	#创建用户,添加密钥并设置caps,最后会返回用户认证信息,如果用户已存在则直接返回认证信息
例如:
ceph auth get-or-create client.jack mon 'allow r' osd 'allow rw pool=mypool'
ceph auth get-or-create client.jack mon 'allow r' osd 'allow rw pool=mypool' -o /etc/ceph.client.jack.keyring	#还可以使用-o选项将用户的认证信息保存到keyring文件中

在这里插入图片描述

ceph auth get-or-create-key	#创建用户,添加密钥并设置caps,最后会返回密钥信息,如果用户已存在则直接返回密钥信息,需要注意返回值只包含密钥
例如:
ceph auth get-or-create-key client.peter mon 'allow r' osd 'allow rw pool=mypool'

在这里插入图片描述

获取用户的密钥
ceph auth print-key <username>	#获取用户的密钥
例如:
ceph auth print-key client.admin

在这里插入图片描述

删除用户
ceph auth del <username>
例如:
ceph auth del client.peter

在这里插入图片描述

修改用户的权限
ceph auth caps <username> [<new-caps> ....]	#使用新的权限覆盖之前的权限,注意不是添加,是覆盖
例如:
ceph auth caps client.tom mon 'allow r' osd 'allow *'

在这里插入图片描述

keyring管理

keyring是用来保存用户认证信息的文件,一个keyring文件可以保存一个或多个用户的认证信息

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

  • /etc/ceph/<cluster-name>.<user-type>.<user-id>.keyring:保存单个用户的keyring
  • /etc/ceph/<cluster-name>.keyring:保存同一个ceph集群多个用户的keyring
  • /etc/ceph/keyring:保存未定义集群名称的多个用户的keyring
  • /etc/ceph/keyring.bin:编译后的二进制文件
通过keyring文件备份和恢复用户

将用户信息导出至keyring文件,对用户进行备份

ceph auth get <username> -o <keyring-file>
例如:
ceph auth get client.tom -o /etc/ceph.client.tom.keyring

在这里插入图片描述

从keyring文件恢复用户信息

ceph auth import -i <keyring-file>
例如:
ceph auth del client.tom
ceph auth import -i /etc/ceph.client.tom.keyring

在这里插入图片描述

keyring文件合并
ceph auth-tool <keyring-file1> --import-keyring <keyring-file2>	#会把后面keyring文件的内容追加到前面的keyring文件
例如:
ceph-authtool /etc/ceph.client.tom.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43266367/article/details/129467616
今日推荐