ceph 认证高可用

本文深入探讨了Cephx认证系统的实现原理,包括如何通过共享秘钥进行用户和进程认证,以及其与kerberos协议的相似之处。重点阐述了Cephx在保护数据安全、避免单点故障和瓶颈方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认证高可用

为了识别用户和防止中间人攻击,ceph提供了cephx 认证系统来认证用户和进程。

注:cephx不提供对地址数据的加密和 rest的加密。
Cephx是通过共享秘钥来实现认证的,也就是说,客户端和服务端拥有相同的秘钥。认证协议是这样的,交互的双方能够相互证明彼此有秘钥的副本而不把它暴露出来。这样就能提供相互认证,即:客户端确信用户拥有秘钥,用户也确信客户端也有一个秘钥的副本。
Ceph key 的可伸缩特性是避免ceph 对象存储的接口集中,也就是说ceph client必须可以直接与osd交互。为了保护数据,ceph提供了cephx认证系统,它主要认证用户操作的客户端。Cephx协议操作在某种意义上类似于kerberos。
用户或者角色通过client来联系monitor。这个跟kerberos不同,每个moniter都能够认证用户和分发秘钥,所以使用cephx认证系统就不会有单点故障和瓶颈。Monitor会返回一个结构类似于kerberos ticket的认证数据,里面包含使用ceph service的时候需要的session key。Session key是经用户的秘钥加密过得,所以只有用户本身可以从monitors请求服务。Client使用session key从monitor那请求需要的服务,monitors会发送给客户端一个key,这个key用于client和osd之间的认证。Ceph的monitors和osd共享一个秘钥,所以客户端可以在集群中和osd ,metadata server共同使用这个monitors提供的key。类似于kerberos,ceph ticket是有期限的,所以攻击者不能够使用过期的ticket或者session key。这种认证方式可以防止攻击者中间伪造用户消息,或者篡改用户消息,只要用户的密码没有暴露出来。
使用cephx,首先管理员必须要先建立一个用户。下面这张图展示了,用户client.admin调用命令ceph auth get-or-create-key 创建一个用户和秘钥。Ceph的子系统auth会产生一个用户名和秘钥,在monitor中保存一个副本,然后把用户的秘钥传给client.admin用户。这意味着client和monitor共用同一个密码。

    在使用monitors认证的时候,客户端要把用户名提供给monitor,monitor产生一个session key,而且使用用户的秘钥对session key加密,然后,monitor把加了密的session key传递给client,客户端使用共享的秘钥对接收到的包解密得到session key。Session key是用来鉴别正在会话的用户。Client 然后使用session key向monitor请求一个代表用户签名的ticket。Monitor就会为用户产生一个ticket,使用用户的秘钥对其进行加密,然后再传送给client。Client再对ticket解密,然后使用ticket签署对osd和metadata server的请求。

使用cephx协议在client和ceph sever之间交互的时候,在经过认证之后,client 和server之间的消息都要经 monitor,osd和metadata 使用共享秘钥审查的ticket签名。

认证只存在于client和server之间,对于对client的访问是没有认证机制的,用户主机到client主机之间的认证是无效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值