第 6 章 Ceph 用户管理
作为存储管理员,您可以通过向 Red Hat Ceph Storage 集群中的对象提供身份验证和访问控制来管理 Ceph 用户。
只要客户端在 Cephadm 范围内,Cephadm 便管理 Red Hat Ceph Storage 集群的客户端密钥环。用户不应修改 Cephadm 管理的密钥环,除非需要进行故障排除。
6.1. Ceph 用户管理背景
当 Ceph 在启用身份验证和授权的情况下运行时,您必须指定一个用户名。如果未指定用户名,Ceph 将使用 client.admin
管理用户作为默认用户名。
或者,您可以使用 CEPH_ARGS
环境变量以避免重新输入用户名和 secret。
无论 Ceph 客户端的类型(例如块设备、对象存储、文件系统、原生 API 或 Ceph 命令行),Ceph 都会将所有数据在池中作为对象保存。Ceph 用户必须有权访问池才能读取和写入数据。此外,管理 Ceph 用户必须具有执行 Ceph 管理命令的权限。
以下概念可帮助您理解 Ceph 用户管理。
存储集群用户
Red Hat Ceph Storage 集群的用户是个人或一个应用程序。通过创建用户,您可以控制谁可以访问存储集群、池以及这些池中的数据。
Ceph 具有用户类型
的概念。对于用户管理而言,类型将始终是 客户端
。Ceph 使用带有句点(.)作为分隔符的名称来标识用户,它由用户类型和用户 ID 组成。例如,TYPE.ID
、client.admin
或 client.user1
。用户需要键入的原因是 Ceph 监控器和 OSD 也使用 Cephx 协议,但它们并不是客户端。区分用户类型有助于区分客户端用户和其他用户精简访问控制、用户监控和可追溯性。
有时,Ceph 的用户类型似乎比较混乱,因为 Ceph 命令行允许您根据命令行使用而指定具有或没有类型的用户。如果指定了 --user
或 --id
,可以省略该类型。因此,输入 user1
可以代表 client.user1
。如果指定 --name
或 -n
,您必须指定类型和名称,如 client.user1
。作为最佳做法,红帽建议尽可能使用类型和名称。
Red Hat Ceph Storage 集群用户与 Ceph Object Gateway 用户不同。对象网关使用 Red Hat Ceph Storage 集群用户在网关守护进程和存储集群间进行通信,但网关具有自己的用户管理功能。
语法
DAEMON_TYPE 'allow CAPABILITY' [DAEMON_TYPE 'allow CAPABILITY']
monitor Caps: Monitor 功能包括
r
,w
,x
,allow profile CAP
, 和profile rbd
。示例
mon 'allow rwx` mon 'allow profile osd'
OSD Caps: OSD 功能包括
r
,w
,x
,class-read
,class-write
,profile osd
,profile rbd
,profile rbd-read-only
。另外,OSD 功能还允许池和命名空间设置。语法
osd 'allow CAPABILITY' [pool=POOL_NAME] [namespace=NAMESPACE_NAME]
Ceph 对象网关守护进程 (radosgw
) 是 Ceph 存储集群的客户端,因此不表示 Ceph 存储集群守护进程类型。
以下条目描述了每个功能。
| 守护进程的以前访问设置。 |
| 授予用户读取访问权限。需要 monitor 来检索 CRUSH map。 |
| 授予用户对对象的写入访问权限。 |
|
为用户提供调用类方法(即读写)的能力,并在 monitor 上执行 |
|
授予用户调用类读取方法的能力。 |
|
授予用户调用类写入方法的能力。 |
| 授予用户对特定守护进程或池的读取、写入和执行权限,以及执行 admin 命令的能力。 |
| 授予用户权限以 OSD 连接到其他 OSD 或 monitor。在 OSD 上延迟,使 OSD 能够处理复制心跳流量和状态报告。 |
| 授予用户引导 OSD 的权限,以便在引导 OSD 时具有添加密钥的权限。 |
| 授予用户对 Ceph 块设备的读写访问权限。 |
| 授予用户对 Ceph 块设备的只读访问权限。 |
pool
池为 Ceph 客户端定义存储策略,并充当该策略的逻辑分区。
在 Ceph 部署中,创建池来支持不同类型的用例是很常见的。例如,云卷或镜像、对象存储、热存储、冷存储等等。将 Ceph 部署为 OpenStack 的后端时,典型的部署会具有卷、镜像、备份和虚拟机以及诸如 client.glance
、client.cinder
等用户的池。
命名空间
池中的对象可以关联到池中命名空间的逻辑对象组。用户对池的访问可以关联到命名空间,以便用户读取和写入仅在命名空间内进行。写入到池中的一个命名空间的对象只能由有权访问该命名空间的用户访问。
目前,命名空间仅适用于在 librados
之上编写的应用。块设备和对象存储等 Ceph 客户端目前不支持此功能。
命名空间的比率是池可以根据用例来计算聚合数据的计算方法,因为每个池创建了一组映射到 OSD 的放置组。如果多个池使用相同的 CRUSH 层次结构和规则集,OSD 性能可能会随着负载增加而降级。
例如,一个池对于每个 OSD 应有大约 100 个 PG。因此,有 1000 个 OSD 的集群对于一个池有 100,000 个 PG。映射到同一 CRUSH 层次结构的每个池将在 exemplary 集群中创建另一个 100,000 个放置组。相反,将对象写入命名空间只是将命名空间与对象名称关联的对象名称与单独池的计算开销相关联。您可以使用命名空间,而不是为用户或一组用户创建单独的池。
目前仅在使用 librados
时才可用。
其它资源
- 有关配置身份验证的详细信息,请参阅 Red Hat Ceph Storage 配置指南。