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 服务提供三个角色: adminmemberreader。这些角色是分层的;具有 admin 角色的用户继承 member 角色的能力,以及具有 member 角色的用户继承 reader 角色的功能。

注意

member 角色的读取权限仅应用到它所属的项目的对象。

admin

admin 角色保留为特定范围内授权的最高级别。这通常包括资源或 API 的所有 create、read、update 或 delete 操作。

成员

默认情况下,member 角色不直接使用。它在部署过程中提供了灵活性,有助于减少管理员的责任。

例如,您可以使用 default member 角色和简单的策略覆盖覆盖部署的策略,以允许系统成员更新服务和端点。这提供了 adminreader 角色之间的授权层。

reader

reader 角色保留用于只读操作,而不考虑范围。

警告

如果您使用 读者 访问敏感信息,如镜像许可证键、管理镜像数据、管理卷元数据、应用程序凭证和 secret,您可能会意外地公开敏感信息。因此,公开这些资源的 API 应仔细考虑 reader 角色的影响,并适当地防御对 memberadmin 角色的访问权限。

5.5.3. Keystone 身份验证和 Ceph 对象网关

使用 OpenStack Keystone 验证用户身份的组织可以将 Keystone 与 Ceph 对象网关集成。Ceph 对象网关使网关能够接受 Keystone 令牌,验证用户,以及创建对应的 Ceph 对象网关用户。当 Keystone 验证令牌时,网关将考虑用户经过身份验证。

优点

  • adminmemberreader 角色分配给具有 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

    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

    设置端点将输出服务端点设置。

5.5.6. 验证 Openstack 使用 Ceph 对象网关端点

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

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。

流程

  1. 列出 Swift 服务下的端点:

    [root@swift~]# openstack endpoint list --service=swift
  2. 验证上一命令中列出的端点的设置:

    语法

    [root@swift~]# openstack endpoint show ENDPOINT_ID

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

    表 5.2. 示例

    字段

    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

其它资源

  • 有关获取端点详情的更多信息,请参阅 Red Hat OpenStack 指南中的 显示端点

5.5.7. 配置 Ceph 对象网关以使用 Keystone SSL

转换 Keystone 使用的 OpenSSL 证书,配置 Ceph 对象网关以搭配 Keystone 使用。当 Ceph 对象网关与 OpenStack 的 Keystone 身份验证交互时,Keystone 将终止自签名 SSL 证书。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。

流程

  1. 将 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"

  2. 在运行 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 特权。

流程

  1. 为每个网关实例执行以下操作:

    1. rgw_s3_auth_use_keystone 选项设置为 true

      示例

      [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_keystone true

    2. thenss_db_path 设置设置为 NSS 数据库存储的路径:

      示例

      [ceph: root@host01 /]# ceph config set client.rgw nss_db_path "/var/lib/ceph/radosgw/ceph-rgw.rgw01/nss"

  2. 提供身份验证凭证:

    可以为 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 接受或拒绝请求。

其它资源

5.5.9. 重启 Ceph 对象网关守护进程

必须重新启动 Ceph 对象网关才能激活配置更改。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。
  • 生产环境的 admin特权。

流程

  • 保存 Ceph 配置文件并将其分发到每个 Ceph 节点后,重启 Ceph 对象网关实例:

    注意

    使用 ceph orch ps 命令的输出(在 NAME 列下),获取 SERVICE_TYPE.ID 信息。

    1. 要在存储集群中的单个节点上重启 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

    2. 在存储集群的所有节点上重启 Ceph 对象网关:

      语法

      ceph orch restart SERVICE_TYPE

      示例

      [ceph: root@host01 /]# ceph orch restart rgw