6.2. 配置 Active Directory 和 Ceph 对象网关


执行以下步骤,将 Active Directory 服务器配置为对 Ceph 对象网关用户进行身份验证。

6.2.1. 使用 Microsoft Active Directory

Ceph 对象网关 LDAP 身份验证与任何兼容 LDAP 的目录服务兼容,可针对简单绑定(包括 Microsoft Active Directory)进行配置。使用 Active Directory 与使用 RH Directory 服务器类似,Ceph 对象网关绑定为 rgw_ldap_binddn 设置中配置的用户,并使用 LDAP 来确保安全性。

配置 Active Directory 的过程基本上与配置 LDAP 和 Ceph 对象网关相同,但可能有一些特定于 Windows 的用法。

6.2.2. 为 LDAPS 配置 Active Directory

Active Directory LDAP 服务器默认配置为使用 LDAP。Windows Server 2012 及更高版本可以使用 Active Directory 证书服务。以下 MS TechNet 文章中提供了生成和安装与 Active Directory LDAP 一起使用的 SSL 证书的说明:LDAP over SSL (LDAPS) Certificate

注意

确保 Active Directory 主机上打开了 port 636

6.2.3. 检查网关用户是否存在

在创建网关用户之前,请确保 Ceph 对象网关还没有用户。

示例

[ceph: root@host01 /]# radosgw-admin metadata list user

用户名不应在此用户列表中。

6.2.4. 添加网关用户

创建 Ceph 对象网关用户到用户 LDAP。

流程

  1. 为 Ceph 对象网关创建 LDAP 用户,并记下 binddn。由于 Ceph 对象网关使用 ceph 用户,因此请考虑使用 ceph 作为用户名。用户需要具有搜索目录的权限。Ceph 对象网关按照 rgw_ldap_binddn 中指定的绑定到此用户。
  2. 测试以确保用户创建有效。其中 cephPeople 下的用户 ID,example.com 是您可以在其中搜索用户的域。

    # ldapsearch -x -D "uid=ceph,ou=People,dc=example,dc=com" -W -H ldaps://example.com -b "ou=People,dc=example,dc=com" -s sub 'uid=ceph'
  3. 在每个网关节点上,为用户的机密创建一个文件。例如,机密可能存储在具有 /etc/bindpass 的文件中。为安全起见,请将此文件的所有者更改为 ceph 用户和组,以确保它不能全局可读。
  4. 添加 rgw_ldap_secret 选项:

    语法

    ceph config set client.rgw OPTION VALUE

    示例

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_secret /etc/bindpass

  5. 将绑定密码文件修补到 Ceph 对象网关容器,并重新应用 Ceph 对象网关规格:

    示例

    service_type: rgw
    service_id: rgw.1
    service_name: rgw.rgw.1
    placement:
      label: rgw
      extra_container_args:
      - -v
      - /etc/bindpass:/etc/bindpass

    注意

    Red Hat Ceph Storage 不会自动提供 /etc/bindpass,您需要确保内容在所有可能的 Ceph 对象网关实例节点上可用。

6.2.5. 将网关配置为使用 Active Directory

  1. 设置 rgw_ldap_secret 设置后添加以下选项:

    语法

    ceph config set client.rgw OPTION VALUE

    示例

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_uri ldaps://_FQDN_:636
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_binddn "_BINDDN_"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_searchdn "_SEARCHDN_"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_dnattr "cn"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_ldap true

    对于 rgw_ldap_uri 设置,使用 LDAP 服务器的完全限定域名替换 FQDN。如果有多个 LDAP 服务器,请指定每个域。

    对于 rgw_ldap_binddn 设置,将 BINDDN 替换为 bind 域。对于 example.com 域以及 用户帐户 下的 ceph 用户,它应如下所示:

    示例

    rgw_ldap_binddn "uid=ceph,cn=users,cn=accounts,dc=example,dc=com"

    对于 rgw_ldap_searchdn 设置,请将 SEARCHDN 替换为搜索域。对于 example.com 域以及 usersaccounts 下的用户,它应如下所示:

    rgw_ldap_searchdn "cn=users,cn=accounts,dc=example,dc=com"
  2. 重启 Ceph 对象网关:

    注意

    使用 ceph orch ps 命令的输出,在 NAME 列下获取 SERVICE_TYPEID 信息。

    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

6.2.6. 将 S3 用户添加到 LDAP 服务器

在 LDAP 服务器上的管理控制台中,至少创建一个 S3 用户,以便 S3 客户端可以使用 LDAP 用户凭据。在将凭据传递给 S3 客户端时,记下要使用的用户名和机密。

6.2.7. 导出 LDAP 令牌

使用 LDAP 运行 Ceph 对象网关时,需要访问令牌。但是,访问令牌是从 access key 和 secret key 创建的。将 access key 和 secret key 导出为 LDAP 令牌。

  1. 导出访问密钥:

    语法

    export RGW_ACCESS_KEY_ID="USERNAME"

  2. 导出 secret 密钥:

    语法

    export RGW_SECRET_ACCESS_KEY="PASSWORD"

  3. 导出令牌。对于 LDAP,使用 ldap 作为令牌类型(ttype)。

    示例

    radosgw-token --encode --ttype=ldap

    对于 Active Directory,使用 ad 作为令牌类型。

    示例

    radosgw-token --encode --ttype=ad

    结果是一个 base-64 编码字符串,即访问令牌。将此访问令牌提供给 S3 客户端,以代替 access key。不再需要 secret 密钥。

  4. 可选:为方便起见,如果 S3 客户端使用环境变量,请将 base-64 编码字符串导出到 RGW_ACCESS_KEY_ID 环境变量。

    示例

    export RGW_ACCESS_KEY_ID="ewogICAgIlJHV19UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAibGRhcCIsCiAgICAgICAgImlkIjogImNlcGgiLAogICAgICAgICJrZXkiOiAiODAwI0dvcmlsbGEiCiAgICB9Cn0K"

6.2.8. 使用 S3 客户端测试配置

使用 Python Boto 等脚本,使用 Ceph 对象网关客户端测试配置。

流程.

  1. 使用 RGW_ACCESS_KEY_ID 环境变量配置 Ceph 对象网关客户端。或者,您可以复制 base-64 编码字符串,并将其指定为 access key。以下是配置的 S3 客户端的示例:

    示例

    cat .aws/credentials
    
    [default]
    aws_access_key_id = ewogICaGbnjlwe9UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAiYWQiLAogICAgICAgICJpZCI6ICJjZXBoIiwKICAgICAgICAia2V5IjogInBhc3M0Q2VwaCIKICAgIH0KfQo=
    aws_secret_access_key =

    注意

    不再需要 secret 密钥。

  2. 运行 aws s3 ls 命令来验证用户:

    示例

    [root@host01 ~]# aws s3 ls --endpoint http://host03
    
    2023-12-11 17:08:50 mybucket
    2023-12-24 14:55:44 mybucket2

  3. 可选: 您还可以运行 radosgw-admin user 命令来验证目录中的用户:

    示例

    [root@host01 ~]# radosgw-admin user info --uid dir1
    {
        "user_id": "dir1",
        "display_name": "dir1",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "ldap",
        "mfa_ids": []
    }

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.