2.3. Ceph 身份验证
为了识别用户并防止中间人攻击,Ceph 提供了验证用户和守护进程的 cephx
身份验证系统。
cephx
协议不为通过网络传输的数据或 OSD 中存储的数据进行数据加密寻址。
cephx 使用共享密钥进行身份验证,这意味着客户端和 monitor 集群都具有客户端的机密密钥的副本。认证协议使双方能够相互证明自己有一份密钥副本,而无需实际披露它。这提供了相互身份验证,这意味着集群确定用户拥有 secret 密钥,并且用户确定集群有 secret 密钥的副本。
cephx
cephx
身份验证协议的工作方式与 Kerberos 类似。
用户/actor 调用 Ceph 客户端来联系 monitor。与 Kerberos 不同,每个 monitor 都可以验证用户的身份并分发密钥,因此使用 cephx
时不会出现单点故障或瓶颈。监控器返回一个类似于 Kerberos ticket 的身份验证数据结构,其中包含用于获取 Ceph 服务的会话密钥。此会话密钥本身使用用户的永久机密密钥加密,因此只有用户能够从 Ceph 监视器请求服务。然后,客户端使用 session 键从 monitor 请求所需的服务,而 monitor 为客户端提供一个票据,它将向实际处理数据的 OSD 验证客户端的身份验证。Ceph 监视器和 OSD 共享机密,因此客户端可以将监控器提供的票据用于集群中的任何 OSD 或元数据服务器。与 Kerberos 一样,cephx
票据过期,因此攻击者无法使用已过期的票据或会话密钥。这种身份验证形式将阻止有权访问通信介质的攻击者在另一用户的身份下创建虚假消息或更改其他用户的合法消息,只要用户的机密密钥在过期之前不会被泄露。
要使用 cephx
,管理员必须首先设置用户。在下图中,client.admin
用户从命令行调用 ceph auth get-or-create-key
来生成用户名和 secret 密钥。Ceph 的 auth
子系统生成用户名和密钥,使用 monitor 存储副本,并将用户的机密传回 client.admin
用户。这意味着客户端和 monitor 共享一个 secret key。
client.admin
用户必须以安全的方式向用户提供用户 ID 和 secret 密钥。