Ceph安全 - CephX
如果需要与osd打交道,需要通过mon检索集群运行图才能够访问的客户端,通常经由mon认证后才能访问ceph存储。Ceph本身实现了数据服务的认证访问和授权控制机制,CephX协议来实现 CephX Protocol CephX本身只负责认证和授权检测,不处理通讯过程是否加密。一般来讲需要与moniotr交互的客户端组件(OSD、RBD、RGW等)一般而言都经由CephX认证 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证 每个MON都可以对客户端进行身份验正并分发密钥,不存在单点故障和性能瓶颈。(在集群模式下,任何一个monitor在实现认证时是无状态的,每个monitor都能完成身份检验的任务) MON会返回用于身份验正的数据结构,其包含获取Ceph服务时用到的session key session key通过客户端密钥进行加密,需事先有一个预共享秘钥存在 客户端使用session key向MON请求所需的服务。session key只是拿来做中间通讯使用。 MON向客户端提供一个ticket,用于向实际处理数据的OSD等验正客户端身份。 MON和OSD共享同一个secret,因此OSD会信任由MON发放的ticket ticket存在有效期限 注意: CephX身份验正功能仅限制Ceph的各组件之间,它不能扩展到其它非Ceph组件。 它并不解决数据传输加密的问题。 为了实现Cephx认证,Ceph服务器端一定会为每一个客户端事先生成一个密码 认证与授权 无论Ceph客户端时何类型,Ceph都会在存储池中将所有的数据存储为对象 Ceph用户需要拥有存储池访问权限才能读取和写入数据 Ceph用户必须拥有执行全年才能使用Ceph管理命令 相关概念 用户 用户是指个人或系统参与者(例如应用) 通过创建用户,可以控制谁(或哪个参与者)能够访问Ceph存储集群、以及可访问的存储池及存储池中的数据。 Ceph支持多种类型的用户,单可管理的用户都属于Client类型 区分用户种类的原因在于,mon、osd、mds等系统组件也使用cephx协议,但它们非为客户端 通过点号来分隔用户类型和用户名,格式为TYPE.ID,例如:client.admin等 授权 使能(Capabilities) Ceph基于"使能(caps)“来描述用户可针对MON、OSD或MDS使用的权限范围或级别。 通用语法格式:daemon-type'allow caps[...] 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所有存储池都获得相关授权 MDS使能 只需要allow,或留空 各使能的意义 allow 需先于守护进程的访问设置指定 仅对MDS表示rw之意,其它的表示字面意义 r:读取权限,访问MON以检索CRUSH时依赖此使能 w:对象写入权限 x:调用类方法(读取和写入)的能力,以及在MON上执行auth操作的能力。 class-read:x能力的子集,授予用户调用类读取方法的能力 class-write:x的子集,授予用户调用类写入方法的能力 ·*:授予用户对特定守护进程/存储池的读取、写入和执行权限,以及执行管理命令的能力。 profile osd 授予用户以某个OSD身份连接到其他OSD或监视器的权限 授予OSD权限,使OSD能够处理复制检测信号流量和状态报告 profile mds 授予用户以某个MDS身份连接到其他MDS或监视器的权限 profile bootstrap-osd...