11 在命令行上管理用户和角色 #
本节说明如何管理 Ceph Dashboard 使用的用户帐户。该工具可帮助您创建或修改用户帐户,以及设置正确的用户角色和权限。
11.1 管理密码策略 #
默认情况下会启用密码策略功能,包括以下检查:
密码长度是否超过 N 个字符?
旧密码和新密码是否相同?
可以完全打开或关闭密码策略功能:
cephuser@adm >
ceph dashboard set-pwd-policy-enabled true|false
可以打开或关闭以下各项检查:
cephuser@adm >
ceph dashboard set-pwd-policy-check-length-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-oldpwd-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-username-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-exclusion-list-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-complexity-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-sequential-chars-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-repetitive-chars-enabled true|false
此外,可使用以下选项配置密码策略行为。
最短密码长度(默认值为 8):
cephuser@adm >
ceph dashboard set-pwd-policy-min-length N最小密码复杂性(默认值为 10):
cephuser@adm >
ceph dashboard set-pwd-policy-min-complexity N密码复杂性是通过对密码中的每个字符进行分类来计算的。
密码中不允许使用的逗号分隔的单词列表:
cephuser@adm >
ceph dashboard set-pwd-policy-exclusion-list word[,...]
11.2 管理用户帐户 #
Ceph Dashboard 支持管理多个用户帐户。每个用户帐户包含用户名、密码(使用 bcrypt
以加密形式存储)、可选名称和可选电子邮件地址。
用户帐户存储在 Ceph Manager 的配置数据库中,并在所有 Ceph Manager 实例之间全局共享。
使用以下命令可管理用户帐户:
- 显示现有用户:
cephuser@adm >
ceph dashboard ac-user-show [USERNAME]- 创建新用户:
cephuser@adm >
ceph dashboard ac-user-create USERNAME [PASSWORD] [ROLENAME] [NAME] [EMAIL]- 删除用户:
cephuser@adm >
ceph dashboard ac-user-delete USERNAME- 更改用户密码:
cephuser@adm >
ceph dashboard ac-user-set-password USERNAME PASSWORD- 修改用户名和电子邮件:
cephuser@adm >
ceph dashboard ac-user-set-info USERNAME NAME EMAIL- 禁用用户
cephuser@adm >
ceph dashboard ac-user-disable USERNAME- 启用用户
cephuser@adm >
ceph dashboard ac-user-enable USERNAME
11.3 用户角色和权限 #
本节说明您可为用户角色指定的安全作用范围、如何管理用户角色,以及如何为用户帐户指定角色。
11.3.1 定义安全作用范围 #
用户帐户与一组角色相关联,这些角色定义了该用户可以访问仪表盘的哪些部分。仪表盘的各个部分均会划分在某个安全作用范围内。安全作用范围已预先定义且固定不变。当前可用的安全作用范围如下:
- hosts
包含与
菜单项相关的所有特性。- config-opt
包含与 Ceph 配置选项管理相关的所有特性。
- pool
包含与存储池管理相关的所有特性。
- osd
包含与 Ceph OSD 管理相关的所有特性。
- monitor
包含与 Ceph Monitor 管理相关的所有特性。
- rbd-image
包含与 RADOS 块设备映像管理相关的所有特性。
- rbd-mirroring
包含与 RADOS 块设备镜像管理相关的所有特性。
- iscsi
包含与 iSCSI 管理相关的所有特性。
- rgw
包含与对象网关管理相关的所有特性。
- cephfs
包含与 CephFS 管理相关的所有特性。
- manager
包含与 Ceph Manager 管理相关的所有特性。
- log
包含与 Ceph 日志管理相关的所有特性。
- grafana
包含与 Grafana 代理相关的所有特性。
- prometheus
包含与 Prometheus 告警管理相关的所有特性。
- dashboard-settings
允许更改仪表盘设置。
11.3.2 指定用户角色 #
角色指定了一个安全作用范围与一组权限之间的一组映射。权限分为四种类型:“read”、“create”、“update”和“delete”。
下面的示例指定了一个角色,具有该角色的用户拥有与存储池管理相关的特性的“read”和“create”权限,以及与 RBD 映像管理相关的特性的全部权限:
{ 'role': 'my_new_role', 'description': 'My new role', 'scopes_permissions': { 'pool': ['read', 'create'], 'rbd-image': ['read', 'create', 'update', 'delete'] } }
仪表盘提供了一组预定义角色,我们称之为系统角色。全新安装 Ceph Dashboard 后即可使用这些角色:
- administrator
提供针对所有安全作用范围的全部权限。
- read-only
提供针对仪表盘设置以外的其他所有安全作用范围的读取权限。
- block-manager
提供针对“rbd-image”、“rbd-mirroring”和“iscsi”作用范围的全部权限。
- rgw-manager
提供针对“rgw”作用范围的全部权限。
- cluster-manager
提供针对“hosts”、“osd”、“monitor”、“manager”和“config-opt”作用范围的全部权限。
- pool-manager
提供针对“pool”作用范围的全部权限。
- cephfs-manager
提供针对“cephfs”作用范围的全部权限。
11.3.2.1 管理自定义角色 #
您可以使用以下命令创建新用户角色:
- 创建新角色:
cephuser@adm >
ceph dashboard ac-role-create ROLENAME [DESCRIPTION]- 删除角色:
cephuser@adm >
ceph dashboard ac-role-delete ROLENAME- 为角色添加作用范围权限:
cephuser@adm >
ceph dashboard ac-role-add-scope-perms ROLENAME SCOPENAME PERMISSION [PERMISSION...]- 从角色中删除作用范围权限:
cephuser@adm >
ceph dashboard ac-role-del-perms ROLENAME SCOPENAME
11.3.2.2 为用户帐户指定角色 #
使用以下命令可为用户指定角色:
- 设置用户角色:
cephuser@adm >
ceph dashboard ac-user-set-roles USERNAME ROLENAME [ROLENAME ...]- 为用户添加其他角色:
cephuser@adm >
ceph dashboard ac-user-add-roles USERNAME ROLENAME [ROLENAME ...]- 删除用户的角色:
cephuser@adm >
ceph dashboard ac-user-del-roles USERNAME ROLENAME [ROLENAME ...]
如果您创建了自定义用户角色,并打算以后使用 ceph.purge
运行程序删除 Ceph 集群,则需要先清除自定义角色。有关详细信息,请参见第 13.9 节 “删除整个 Ceph 集群”。
11.3.2.3 示例:创建用户和自定义角色 #
本节说明创建具有以下权限的用户帐户的过程:可管理 RBD 映像、查看和创建 Ceph 存储池,并拥有针对任何其他安全作用范围的只读访问权限。
创建名为
tux
的新用户:cephuser@adm >
ceph dashboard ac-user-create tux PASSWORD创建角色并指定作用范围权限:
cephuser@adm >
ceph dashboard ac-role-create rbd/pool-managercephuser@adm >
ceph dashboard ac-role-add-scope-perms rbd/pool-manager \ rbd-image read create update deletecephuser@adm >
ceph dashboard ac-role-add-scope-perms rbd/pool-manager pool read create将角色与
tux
用户相关联:cephuser@adm >
ceph dashboard ac-user-set-roles tux rbd/pool-manager read-only
11.4 代理配置 #
如果您要建立固定 URL 以访问 Ceph Dashboard,或者不允许直接连接到 Manager 节点,可以设置一个代理将传入请求转发到当前活动的 ceph-mgr
实例。
11.4.1 使用反向代理访问仪表盘 #
如果您要通过反向代理配置访问仪表盘,则可能需要使用 URL 前缀来访问。要让仪表盘使用包含您前缀的超链接,您可以设置 url_prefix
设置:
cephuser@adm >
ceph config set mgr mgr/dashboard/url_prefix URL_PREFIX
然后,您便可通过网址 http://HOST_NAME:PORT_NUMBER/URL_PREFIX/
来访问仪表盘。
11.4.2 禁用重定向 #
如果 Ceph Dashboard 位于 HAProxy 等负载平衡代理之后,请禁用重定向行为,以防止出现将内部(无法解析的)URL 发布到前端客户端的情况。使用以下命令可让仪表盘以 HTTP 错误(默认为500
)响应,而不是重定向到活动仪表盘:
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_behaviour "error"
要将设置重置为默认的重定向行为,请使用以下命令:
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
11.4.3 配置错误状态码 #
如果禁用了重定向行为,则应自定义待机仪表盘的 HTTP 状态码。为此,请运行以下命令:
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_error_status_code 503
11.4.4 HAProxy 示例配置 #
以下示例配置适用于使用 HAProxy 的 TLS/SSL 传递。
该配置适用于以下情况:如果仪表盘发生故障转移,前端客户端可能会收到 HTTP 重定向 (303
) 响应,并将重定向到无法解析的主机。
两次 HAProxy 健康状况检查期间发生故障转移时,会发生此情况。在这种情况下,之前处于活动状态的仪表盘节点现在将以 303 进行响应,从而指向新活动节点。为避免出现该情况,您应该考虑禁用待机节点上的重定向行为。
defaults log global option log-health-checks timeout connect 5s timeout client 50s timeout server 450s frontend dashboard_front mode http bind *:80 option httplog redirect scheme https code 301 if !{ ssl_fc } frontend dashboard_front_ssl mode tcp bind *:443 option tcplog default_backend dashboard_back_ssl backend dashboard_back_ssl mode tcp option httpchk GET / http-check expect status 200 server x HOST:PORT ssl check verify none server y HOST:PORT ssl check verify none server z HOST:PORT ssl check verify none
11.5 审计 API 请求 #
Ceph Dashboard 的 REST API 可在 Ceph 审计日志中记录 PUT、POST 和 DELETE 请求。记录功能默认处于禁用状态,但您可使用以下命令将其启用:
cephuser@adm >
ceph dashboard set-audit-api-enabled true
如果记录功能处于启用状态,将会记录每个请求的以下参数:
- from
请求的来源,例如“https://[::1]:44410”。
- path
REST API 路径,例如
/api/auth
。- method
“PUT”、“POST”或“DELETE”。
- user
用户的名称(或“None”)。
示例日志项如下所示:
2019-02-06 10:33:01.302514 mgr.x [INF] [DASHBOARD] \ from='https://[::ffff:127.0.0.1]:37022' path='/api/rgw/user/exu' method='PUT' \ user='admin' params='{"max_buckets": "1000", "display_name": "Example User", "uid": "exu", "suspended": "0", "email": "user@example.com"}'
请求有效负载(自变量及其值的列表)的记录功能默认处于启用状态。您可以按照如下方式禁用该功能:
cephuser@adm >
ceph dashboard set-audit-api-log-payload false
11.6 在 Ceph Dashboard 中配置 NFS Ganesha #
Ceph Dashboard 可以管理使用 CephFS 或对象网关作为其后备存储的 NFS Ganesha 导出项。该仪表盘用于管理存储在 CephFS 集群上的 RADOS 对象中的 NFS Ganesha 配置文件。NFS Ganesha 必须将其部分配置存储在 Ceph 集群中。
运行以下命令以配置 NFS Ganesha 配置对象的位置:
cephuser@adm >
ceph dashboard set-ganesha-clusters-rados-pool-namespace pool_name[/namespace]
现在您便可以使用 Ceph Dashboard 管理 NFS Ganesha 导出项。
11.6.1 配置多个 NFS Ganesha 集群 #
Ceph Dashboard 支持管理属于不同 NFS Ganesha 集群的 NFS Ganesha 导出项。建议每个 NFS Ganesha 集群将其配置对象存储在不同的 RADOS 存储池/名称空间中,以便相互隔离各自配置。
使用以下命令可指定每个 NFS Ganesha 集群的配置位置:
cephuser@adm >
ceph dashboard set-ganesha-clusters-rados-pool-namespace cluster_id:pool_name[/namespace](,cluster_id:pool_name[/namespace])*
cluster_id 是唯一标识 NFS Ganesha 集群的任意字符串。
使用多个 NFS Ganesha 集群配置 Ceph Dashboard 时,Web UI 会自动让您选择导出项的所属集群。
11.7 调试插件 #
Ceph Dashboard 插件扩展了仪表盘的功能。调试插件允许根据调试模式来自定义仪表盘的行为。可以使用以下命令启用、禁用或检查调试插件:
cephuser@adm >
ceph dashboard debug status Debug: 'disabled'cephuser@adm >
ceph dashboard debug enable Debug: 'enabled'cephuser@adm >
dashboard debug disable Debug: 'disabled'
默认情况下,它处于禁用状态。这是适用于生产部署的推荐设置。如果需要,可以启用调试模式,而无需重启动。