Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

使用 Keystone 验证 Ceph 对象网关用户

Red Hat Ceph Storage 3

配置 OpenStack 和 Ceph 对象网关,以使用 Keystone 进行用户身份验证。

摘要

本文档介绍如何配置 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

http://radosgw.example.com:8080/swift/v1

id

e4249d2b60e44743a67b5e5b38c18dd3

internalURL

http://radosgw.example.com:8080/swift/v1

publicURL

http://radosgw.example.com:8080/swift/v1

region

us-west

service_id

37c4c0e79571404cb4644201a4a6e5ee

service_name

swift

service_type

object-store

1.3. 验证设置

创建 Swift 服务并设置端点后,显示端点以确保所有设置都正确。

# openstack endpoint show object-store

显示端点将回显端点设置和服务设置。例如:

字段

adminURL

http://radosgw.example.com:8080/swift/v1

enabled

True

id

e4249d2b60e44743a67b5e5b38c18dd3

internalURL

http://radosgw.example.com:8080/swift/v1

publicURL

http://radosgw.example.com:8080/swift/v1

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 版本。有效选项为 23
类型
整数
默认
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

描述
在自己的租户中创建新用户,它们的名称相同。在大多数情况下,将它设置为 truefalse。若要与以前版本的红帽 Ceph 存储兼容,也可以将它设置为 s3swift。这意味着拆分身份空间,使得只有指定的协议才会使用隐式租户。些较早版本的红帽 Ceph 存储仅支持 Swift 的隐式租户。
类型
字符串
默认
false

2.3. 重启 Civetweb

保存 Ceph 配置文件并将其分发到每个 Ceph 节点后,请重新启动 Ceph 对象网关实例。用法应该是:

# systemctl restart ceph-radosgw
# systemctl restart ceph-radosgw@rgw.`hostname -s`