5.2. Ceph 用户管理背景

当 Ceph 在启用身份验证和授权运行时,您必须指定包含指定用户 secret 密钥的用户名和密钥环。如果未指定用户名,Ceph 将使用 client.admin 管理用户作为默认用户名。如果未指定密钥环,Ceph 将通过使用 Ceph 配置中的 密钥环 设置来查找密钥环。例如,如果您在不指定用户或密钥环的情况下执行 ceph health 命令:

# ceph health

Ceph 会解释如下命令:

# ceph -n client.admin --keyring=/etc/ceph/ceph.client.admin.keyring health

或者,您可以使用 CEPH_ARGS 环境变量以避免重新输入用户名和 secret。

无论 Ceph 客户端的类型(例如块设备、对象存储、文件系统、原生 API 或 Ceph 命令行),Ceph 都会将所有数据在池中作为对象保存。Ceph 用户必须有权访问池才能读取和写入数据。此外,管理 Ceph 用户必须具有执行 Ceph 管理命令的权限。

以下概念可帮助您理解 Ceph 用户管理。

存储集群用户

Red Hat Ceph Storage 集群的用户是个人或一个应用程序。通过创建用户,您可以控制谁可以访问存储集群、池以及这些池中的数据。

Ceph 具有用户类型的概念。对于用户管理而言,类型将始终是 客户端。Ceph 使用带有句点(.)作为分隔符的名称来标识用户,它由用户类型和用户 ID 组成。例如,TYPE.IDclient.adminclient.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 集群用户在网关守护进程和存储集群间进行通信,但网关具有自己的用户管理功能。

授权功能

Ceph 使用术语"capabilities(功能)"(大写)描述授权经过身份验证的用户来练习 Ceph 监控器和 OSD 的功能。功能也可以限制对池或池中命名空间中的数据的访问。Ceph 管理用户在创建或更新用户时设置用户的功能。功能语法遵循以下形式:

语法

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 存储集群守护进程类型。

以下条目描述了每个功能。

allow

守护进程的以前访问设置。

r

授予用户读取访问权限。需要 monitor 来检索 CRUSH map。

w

授予用户对对象的写入访问权限。

x

为用户提供调用类方法(即读写)的能力,并在 monitor 上执行 auth 操作。

class-read

授予用户调用类读取方法的能力。x 的子集.

class-write

授予用户调用类写入方法的能力。x 的子集.

*

授予用户对特定守护进程或池的读取、写入和执行权限,以及执行 admin 命令的能力。

配置集 osd

授予用户权限以 OSD 连接到其他 OSD 或 monitor。在 OSD 上延迟,使 OSD 能够处理复制心跳流量和状态报告。

配置集 bootstrap-osd

授予用户引导 OSD 的权限,以便在引导 OSD 时具有添加密钥的权限。

profile rbd

授予用户对 Ceph 块设备的读写访问权限。

profile rbd-read-only

授予用户对 Ceph 块设备的只读访问权限。

pool

池为 Ceph 客户端定义存储策略,并充当该策略的逻辑分区。

在 Ceph 部署中,创建池来支持不同类型的用例是很常见的。例如,云卷或镜像、对象存储、热存储、冷存储等等。将 Ceph 部署为 OpenStack 的后端时,典型的部署会具有卷、镜像、备份和虚拟机以及诸如 client.glanceclient.cinder 等用户的池。

命名空间

池中的对象可以关联到池中命名空间的逻辑对象组。用户对池的访问可以关联到命名空间,以便用户读取和写入仅在命名空间内进行。写入到池中的一个命名空间的对象只能由有权访问该命名空间的用户访问。

注意

目前,命名空间仅适用于在 librados 之上编写的应用。块设备和对象存储等 Ceph 客户端目前不支持此功能。

命名空间的比率是池可以根据用例来计算聚合数据的计算方法,因为每个池创建了一组映射到 OSD 的放置组。如果多个池使用相同的 CRUSH 层次结构和规则集,OSD 性能可能会随着负载增加而降级。

例如,一个池对于每个 OSD 应有大约 100 个 PG。因此,有 1000 个 OSD 的集群对于一个池有 100,000 个 PG。映射到同一 CRUSH 层次结构的每个池将在 exemplary 集群中创建另一个 100,000 个放置组。相反,将对象写入命名空间只是将命名空间与对象名称关联的对象名称与单独池的计算开销相关联。您可以使用命名空间,而不是为用户或一组用户创建单独的池。

注意

目前仅在使用 librados 时才可用。

其它资源