Ceph 用户管理

Ceph 用户与认证管理

用户: 一个人(individuals) 或者系统角色(system actor),比如应用程序可以通过集群用户(client)访问Ceph存储

集群用户(cluster user): 具有类型与Id,比如client.user1

若无特殊说明,下文中的集群用户被简称为用户

Ceph 用户管理_第1张图片

当Ceph集群启用了认证功能后,访问集群时必须指定集群用户与访问密钥。若未显示指定,则集群用户默认使用client.admin,默认密钥由Ceph configuration提供。比如ceph health 命令,实际执行时,会被解析为ceph -n client.admin --keying=/etc/ceph/ceph.client.admin.keying health

Ceph中所有的数据存入到pool中的对象中,只有拥有了集群用户(client)才能够访问Ceph/Pool以及pool中的数据

注意:Ceph 集群用户与对象存储账户、文件系统账户不一样。Ceph的对象网关(Object Gateway)通过使用集群用户访问存储集群,而对象存储账户指代的是对象存储的终端用户。Ceph的文件系统中的账户概念使用的是POSIX标准中的文件账户概念。

 

认证机制(授权/赋能)/Authorization(Capabilities)

Ceph使用能力(caps)来表达授权认证过的用户访问系统组件(OSD/MON/MDS)的权限。除此之外,能力(capabilities)还被用来限制对于pool中数据或者pool中namespace的访问权限。

赋能语法具有以下形式:

{daemon-type} 'allow {capability}' [{daemon-type} ' alow {capability}']

比如,mon 'allow rwx'

            osd 'allow {capability}' [pool={poolname}] [namespace={namespace-name}]

能力 (Capability)包括r、w、x/class-read/class-write以及所有权限*

Ceph池子(POOL)

一个Pool是用户存储数据的逻辑分区。默认情况下,Ceph集群的池子(Pool)有data pool、rbd pool以及metadata pool。

命名空间(Namespace)

pool中对象组成的逻辑组(logical gropu of objects)被称之为namespace。用户访问pool的权限可以被关联到一个namespace, 使得该用户仅对该pool中某namespace具有读写权限。被写入到某namespace中的对象只能被拥有该namespace权限的用户访问。(注意,namespace仅对使用librados构建的应用有效,对于块存储/对象存储/文件存储是无效的

 

限制/不足之处

1.cephx协议仅认证了Ceph的客户端与服务端,并没有或者尝试处理human用户或者应用程序的认证。如果需要这些认证以处理访问控制,我们得需要其他的机制,就像ceph对象存储的前端一样。

2. 认证的密钥在客户端与服务端是明文存储的,这是Ceph无法回避的弊端。基于此,任何主机,尤其是便携式主机,不应该被设置为直接与Ceph集群交互,否则,安全隐患太大了。若确实需要直接交互,需要更加安全的主机,比如受信任的用户需要登陆的主机或者其他满足安全要求的主机。也许将来Ceph有更好的方案能完全解决这些问题

3. 截至目前,没有任何Ceph认证协议能够为传输的信息提供保密性,因而可能被监听/截获。再者,Ceph不支持加密用户数据。因而数据安全较高时,需要先加密,再存入Ceph系统

参考:

http://docs.ceph.com/docs/giant/rados/operations/user-management/#managing-users

你可能感兴趣的:(Ceph)