5.5. Ceph 对象网关和 OpenStack Keystone
作为存储管理员,您可以使用 OpenStack 的 Keystone 身份验证服务通过 Ceph 对象网关对用户进行身份验证。在您可以配置 Ceph 对象网关之前,您需要先配置 Keystone。这将启用 Swift 服务,并将 Keystone 服务指向 Ceph 对象网关。接下来,您需要配置 Ceph 对象网关,以接受来自 Keystone 服务的身份验证请求。
5.5.1. 先决条件
- 正在运行的 Red Hat OpenStack Platform 环境。
- 正在运行的 Red Hat Ceph Storage 环境。
- 正在运行的 Ceph 对象网关环境。
5.5.2. Keystone 身份验证的角色
OpenStack Keystone 服务提供三个角色: admin
、member
和 reader
。这些角色是分层的;具有 admin
角色的用户继承 member
角色的能力,以及具有 member
角色的用户继承 reader
角色的功能。
member
角色的读取权限仅应用到它所属的项目的对象。
admin
admin 角色保留为特定范围内授权的最高级别。这通常包括资源或 API 的所有 create、read、update 或 delete 操作。
成员
默认情况下,member
角色不直接使用。它在部署过程中提供了灵活性,有助于减少管理员的责任。
例如,您可以使用 default member
角色和简单的策略覆盖覆盖部署的策略,以允许系统成员更新服务和端点。这提供了 admin
和 reader
角色之间的授权层。
reader
reader
角色保留用于只读操作,而不考虑范围。
如果您使用 读者
访问敏感信息,如镜像许可证键、管理镜像数据、管理卷元数据、应用程序凭证和 secret,您可能会意外地公开敏感信息。因此,公开这些资源的 API 应仔细考虑 reader
角色的影响,并适当地防御对 member
和 admin
角色的访问权限。
5.5.3. Keystone 身份验证和 Ceph 对象网关
使用 OpenStack Keystone 验证用户身份的组织可以将 Keystone 与 Ceph 对象网关集成。Ceph 对象网关使网关能够接受 Keystone 令牌,验证用户,以及创建对应的 Ceph 对象网关用户。当 Keystone 验证令牌时,网关将考虑用户经过身份验证。
优点
-
将
admin
、member
和reader
角色分配给具有 Keystone 的用户。 - 在 Ceph 对象网关中创建用户。
- 使用 Keystone 管理用户.
- Ceph 对象网关将定期查询 Keystone,以获取已撤销令牌的列表。
5.5.4. 创建 Swift 服务
在配置 Ceph 对象网关之前,请配置 Keystone,使 Swift 服务已启用并指向 Ceph 对象网关。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ceph 软件存储库。
- OpenStack 控制器节点的根级别访问权限.
流程
创建 Swift 服务:
[root@swift~]# openstack service create --name=swift --description="Swift Service" object-store
创建服务将回显服务设置。
表 5.1. 示例 字段 值 description
Swift 服务
enabled
true
id
37c4c0e79571404cb4644201a4a6e5ee
name
swift
type
object-store
5.5.5. 设置 Ceph 对象网关端点
在创建了 Swift 服务后,将服务指向 Ceph 对象网关。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ceph 软件存储库。
- 在 Red Hat OpenStack Platform 17 环境中运行 Swift 服务。
流程
创建指向 Ceph 对象网关的 OpenStack 端点:
语法
openstack endpoint create --region REGION_NAME swift admin "URL" openstack endpoint create --region REGION_NAME swift public "URL" openstack endpoint create --region REGION_NAME swift internal "URL"
将 REGION_NAME 替换为网关的 zone group name 或 region 名称的名称。使用适合 Ceph 对象网关的 URL 替换 URL。
示例
[root@osp ~]# openstack endpoint create --region us-west swift admin "http://radosgw.example.com:8080/swift/v1" [root@osp ~]# openstack endpoint create --region us-west swift public "http://radosgw.example.com:8080/swift/v1" [root@osp ~]# openstack endpoint create --region us-west swift internal "http://radosgw.example.com:8080/swift/v1"
字段 值 adminurl
id
e4249d2b60e44743a67b5e5b38c18dd3
internalurl
publicurl
region
us-west
service_id
37c4c0e79571404cb4644201a4a6e5ee
service_name
swift
service_type
object-store
设置端点将输出服务端点设置。
5.5.6. 验证 Openstack 使用 Ceph 对象网关端点
创建 Swift 服务并设置端点后,请显示端点以确保所有设置都正确。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ceph 软件存储库。
流程
列出 Swift 服务下的端点:
[root@swift~]# openstack endpoint list --service=swift
验证上一命令中列出的端点的设置:
语法
[root@swift~]# openstack endpoint show ENDPOINT_ID
显示端点将回显端点设置和服务设置。
表 5.2. 示例 字段 值 adminurl
enabled
true
id
e4249d2b60e44743a67b5e5b38c18dd3
internalurl
publicurl
region
us-west
service_id
37c4c0e79571404cb4644201a4a6e5ee
service_name
swift
service_type
object-store
其它资源
- 有关获取端点详情的更多信息,请参阅 Red Hat OpenStack 指南中的 显示端点。
5.5.7. 配置 Ceph 对象网关以使用 Keystone SSL
转换 Keystone 使用的 OpenSSL 证书,配置 Ceph 对象网关以搭配 Keystone 使用。当 Ceph 对象网关与 OpenStack 的 Keystone 身份验证交互时,Keystone 将终止自签名 SSL 证书。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ceph 软件存储库。
流程
将 OpenSSL 证书转换为
db
格式:示例
[root@osp ~]# mkdir /var/ceph/nss [root@osp ~]# openssl x509 -in /etc/keystone/ssl/certs/ca.pem -pubkey | \ certutil -d /var/ceph/nss -A -n ca -t "TCu,Cu,Tuw" [root@osp ~]# openssl x509 -in /etc/keystone/ssl/certs/signing_cert.pem -pubkey | \ certutil -A -d /var/ceph/nss -n signing_cert -t "P,P,P"
在运行 Ceph 对象网关的节点中安装 Keystone 的 SSL 证书。或者,将可配置的
rgw_keystone_verify_ssl
设置的值设置为false
。将
rgw_keystone_verify_ssl
设置为false
意味着网关不会尝试验证证书。
5.5.8. 配置 Ceph 对象网关以使用 Keystone 身份验证
配置 Red Hat Ceph Storage,以使用 OpenStack 的 Keystone 身份验证。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ceph 软件存储库。
-
具有生产环境的
admin
特权。
流程
为每个网关实例执行以下操作:
将
rgw_s3_auth_use_keystone
选项设置为true
:示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_keystone true
将
thenss_db_path
设置设置为 NSS 数据库存储的路径:示例
[ceph: root@host01 /]# ceph config set client.rgw nss_db_path "/var/lib/ceph/radosgw/ceph-rgw.rgw01/nss"
提供身份验证凭证:
可以为 OpenStack 身份 API 配置 Keystone 服务租户、用户和密码,这与系统管理员倾向于配置 OpenStack 服务的方式类似。提供用户名和密码可避免向
rgw_keystone_admin_token
设置提供共享 secret。重要红帽建议在生产环境中通过 admin 令牌禁用身份验证。服务租户凭据应当具有
admin
特权。所需的配置选项有:
语法
ceph config set client.rgw rgw_keystone_url KEYSTONE_URL:ADMIN_PORT ceph config set client.rgw rgw_keystone_admin_user KEYSTONE_TENANT_USER_NAME ceph config set client.rgw rgw_keystone_admin_password KEYSTONE_TENANT_USER_PASSWORD ceph config set client.rgw rgw_keystone_admin_tenant KEYSTONE_TENANT_NAME ceph config set client.rgw rgw_keystone_accepted_roles KEYSTONE_ACCEPTED_USER_ROLES ceph config set client.rgw rgw_keystone_token_cache_size NUMBER_OF_TOKENS_TO_CACHE ceph config set client.rgw rgw_keystone_revocation_interval NUMBER_OF_SECONDS_BEFORE_CHECKING_REVOKED_TICKETS ceph config set client.rgw rgw_keystone_implicit_tenants TRUE_FOR_PRIVATE_TENANT_FOR_EACH_NEW_USER
Ceph 对象网关用户映射到 Keystone
租户
。Keystone 用户在 上分配有不同的角色,可能有多个租户。当 Ceph 对象网关获取票据时,它将查看租户,以及分配给该票据的用户角色,并且根据可配置的rgw_keystone_accepted_roles
接受或拒绝请求。
其它资源
- 请参阅 Red Hat OpenStack Platform 的 用户和身份管理指南。
5.5.9. 重启 Ceph 对象网关守护进程
必须重新启动 Ceph 对象网关才能激活配置更改。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ceph 软件存储库。
-
生产环境的
admin
特权。
流程
保存 Ceph 配置文件并将其分发到每个 Ceph 节点后,重启 Ceph 对象网关实例:
注意使用
ceph orch ps
命令的输出(在NAME
列下),获取 SERVICE_TYPE.ID 信息。要在存储集群中的单个节点上重启 Ceph 对象网关:
语法
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
示例
[root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host01 /]# ceph orch restart rgw