Red Hat Training
A Red Hat training course is available for Red Hat Ceph Storage
使用 Keystone 验证 Ceph 对象网关用户
配置 OpenStack 和 Ceph 对象网关,以使用 Keystone 进行用户身份验证。
摘要
前言
使用 OpenStack Keystone 验证用户身份的组织可以将 Keystone 与 Ceph 对象网关集成,这使得网关能够接受 Keystone 令牌,验证用户身份,并创建对应的 Ceph 对象网关用户。当 Keystone 验证令牌时,网关将考虑用户经过身份验证。
优点包括:
- 使用 Keystone 管理用户
- 在 Ceph 对象网关中自动创建用户
- Ceph 对象网关将定期查询 Keystone,以获取已撤销令牌的列表。
第 1 章 配置 OpenStack
在配置 Ceph 对象网关之前,请配置 Keystone,使 Swift 服务已启用并指向 Ceph 对象网关。
1.1. 创建 Swift 服务
若要使用 OpenStack 验证 Swift 用户,首先要创建 Swift 服务。
# openstack service create --name=swift --description="Swift Service" object-store
创建服务将回显服务设置。例如:
字段 | 值 |
---|---|
description | Swift 服务 |
enabled | True |
id | 37c4c0e79571404cb4644201a4a6e5ee |
name | swift |
type | object-store |
1.2. 设置端点
在创建了 Swift 服务后,将它指向 Ceph 对象网关。将 {region-name}
替换为网关的 zone group 名称或区域名称。将示例 URL 替换为适合 Ceph 对象网关的 URL。
# openstack endpoint create --region {region-name} \ --publicurl "http://radosgw.example.com:8080/swift/v1" \ --adminurl "http://radosgw.example.com:8080/swift/v1" \ --internalurl "http://radosgw.example.com:8080/swift/v1" \ swift
设置端点将回显服务端点设置。例如:
字段 | 值 |
---|---|
adminURL | |
id | e4249d2b60e44743a67b5e5b38c18dd3 |
internalURL | |
publicURL | |
region | us-west |
service_id | 37c4c0e79571404cb4644201a4a6e5ee |
service_name | swift |
service_type | object-store |
1.3. 验证设置
创建 Swift 服务并设置端点后,显示端点以确保所有设置都正确。
# openstack endpoint show object-store
显示端点将回显端点设置和服务设置。例如:
字段 | 值 |
---|---|
adminURL | |
enabled | True |
id | e4249d2b60e44743a67b5e5b38c18dd3 |
internalURL | |
publicURL | |
region | us-west |
service_id | 37c4c0e79571404cb4644201a4a6e5ee |
service_name | swift |
service_type | object-store |
第 2 章 配置 Ceph 对象网关
2.1. 配置 SSL
将 Ceph 对象网关配置为使用 Keystone 使用时,需要将 Keystone 用于创建请求的 OpenSSL 证书转换为随后使用 db
格式,例如:
mkdir /var/ceph/nss openssl x509 -in /etc/keystone/ssl/certs/ca.pem -pubkey | \ certutil -d /var/ceph/nss -A -n ca -t "TCu,Cu,Tuw" openssl x509 -in /etc/keystone/ssl/certs/signing_cert.pem -pubkey | \ certutil -A -d /var/ceph/nss -n signing_cert -t "P,P,P"
OpenStack Keystone 也可使用自签名 SSL 证书终止,以便 Ceph 对象网关与 Keystone 交互。在运行 Ceph 对象网关的节点中安装 Keystone 的 SSL 证书,或者将可配置 rgw_keystone_verify_ssl
设置的 值设置为 false
。将 rgw_keystone_verify_ssl
设置为 false
表示网关不会尝试验证证书。
2.2. 配置 Civetweb
若要将 Ceph 对象网关配置为使用 Keystone,可在管理节点上打开 Ceph 配置文件,再导航到 [client.radosgw.{instance-name}]
,其中 {instance-name}
是要配置的网关实例的名称。对于每个网关实例,将 rgw_s3_auth_use_keystone
设置设置为 true
,然后将 thenss_db_path
设置设置为 NSS 数据库存储的路径。
提供身份验证凭据。可以配置 Keystone 服务租户、适用于 OpenStack 身份 API 的 v2.0 版本的 Keystone 用户和密码,这与系统管理员倾向于配置 OpenStack 服务的方式类似。提供用户名和密码可避免向 rgw_keystone_admin_token
设置提供共享 secret。红帽建议在生产环境中通过 admin 令牌禁用身份验证。
服务租户凭据应当具有 admin
特权。如需了解更多详细信息,请参阅红帽 OpenStack 平台 13 的用户和身份管理指南。的必要配置选项有:
rgw_keystone_admin_user = {keystone service tenant user name} rgw_keystone_admin_password = {keystone service tenant user password} rgw_keystone_admin_tenant = {keystone service tenant name}
Ceph 对象网关用户映射到 Keystone 租户
。Keystone 用户在 上分配有不同的角色,可能有多个租户。当 Ceph 对象网关获取票据时,它将查看租户,以及分配给该票据的用户角色,并根据可配置的 rgw_keystone_accepted_roles
接受/拒绝请求。
典型的配置可能具有以下设置:
[client.radosgw.gateway] rgw_keystone_url = {keystone server url:keystone server admin port} ##Authentication using an admin token. Not preferred. #rgw_keystone_admin_token = {keystone admin token} ##Authentication using username, password and tenant. Preferred. rgw_keystone_admin_user = {keystone service tenant user name} rgw_keystone_admin_password = {keystone service tenant user password} rgw_keystone_admin_tenant = {keystone service tenant name} rgw_keystone_accepted_roles = {accepted user roles} ## rgw_keystone_token_cache_size = {number of tokens to cache} rgw_keystone_revocation_interval = {number of seconds before checking revoked tickets} rgw_keystone_make_new_tenants = {true for private tenant for each new user} rgw_s3_auth_use_keystone = true nss_db_path = {path to nss db}
保存对 Ceph 配置文件的更改。然后,将更新的 Ceph 配置文件复制到每个 Ceph 节点。例如:
# scp /etc/ceph/ceph.conf <node-name>:/etc/ceph/
有关可用 Keystone 集成配置选项的详细信息,请参见以下:
rgw_s3_auth_use_keystone
- 描述
-
如果设为
true
,Ceph 对象网关将使用 Keystone 验证用户的身份。 - 类型
- 布尔值
- 默认
-
false
nss_db_path
- 描述
- NSS 数据库的路径。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_url
- 描述
- Keystone 服务器上管理 RESTful API 的 URL。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_admin_token
- 描述
- Keystone 中为管理请求配置令牌或共享机密。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_admin_user
- 描述
- keystone admin 用户名。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_admin_password
- 描述
- keystone admin 用户密码.
- 类型
- 字符串
- 默认
-
""
rgw_keystone_admin_tenant
- 描述
- keystone v2.0 的 Keystone admin 用户租户。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_admin_project
- 描述
- keystone v3 的 Keystone admin 用户项目。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_admin_domain
- 描述
- Keystone admin 用户域。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_api_version
- 描述
-
要使用的 Keystone API 版本。有效选项为
2
或3
。 - 类型
- 整数
- 默认
-
2
rgw_keystone_accepted_roles
- 描述
- 为请求提供服务所需的角色。
- 类型
- 字符串
- 默认
-
"Member、admin"
rgw_keystone_accepted_admin_roles
- 描述
- 角色列表,允许用户获取管理特权。
- 类型
- 字符串
- 默认
-
""
rgw_keystone_token_cache_size
- 描述
- Keystone 令牌缓存中条目的最大数量。
- 类型
- 整数
- 默认
-
10000
rgw_keystone_revocation_interval
- 描述
- 令牌撤销检查之间的秒数。
- 类型
- 整数
- 默认
-
15 * 60
rgw_keystone_verify_ssl
- 描述
-
如果为
true
,Ceph 将尝试验证 Keystone 的 SSL 证书。 - 类型
- 布尔值
- 默认
-
true
rgw_keystone_implicit_tenants
- 描述
-
在自己的租户中创建新用户,它们的名称相同。在大多数情况下,
将它设置为 true
或false
。若要与以前版本的红帽 Ceph 存储兼容,也可以将它设置为s3
或swift
。这意味着拆分身份空间,使得只有指定的协议才会使用隐式租户。些较早版本的红帽 Ceph 存储仅支持 Swift 的隐式租户。 - 类型
- 字符串
- 默认
-
false
2.3. 重启 Civetweb
保存 Ceph 配置文件并将其分发到每个 Ceph 节点后,请重新启动 Ceph 对象网关实例。用法应该是:
# systemctl restart ceph-radosgw # systemctl restart ceph-radosgw@rgw.`hostname -s`