2.3. 配置身份服务


这些步骤准备 Identity Service 以与 IdM 集成。

注意

如果使用 director,请注意以下引用的配置文件由 Puppet 管理。因此,每当运行 openstack overcloud deploy 过程时,您添加的任何自定义配置可能会被覆盖。要将这些设置应用到基于 director 的部署中,请参阅 第 4 章 将特定于域的 LDAP 后端与 director 一起使用

2.3.1. 配置控制器

注意

如果要更新任何配置文件,您需要注意某些 OpenStack 服务现在在容器内运行;这适用于 keystone、nova 和 cinder 等。因此,有一些管理实践需要考虑:

  • 不要更新您在物理节点的主机操作系统上找到的任何配置文件,例如: /etc/cinder/cinder.conf。这是因为容器化服务不引用此文件。
  • 不要更新容器中运行的配置文件。这是因为重启容器后会丢失任何更改。

    相反,如果您需要对容器化服务添加任何更改,则需要更新用于生成容器的配置文件。它们存储在 /var/lib/config-data/puppet-generated/

    例如:

  • keystone: /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf
  • cinder: /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf
  • nova: /var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf

    重启容器后,所有更改都会被应用。例如: sudo docker restart keystone

在运行 keystone 服务的控制器上执行这个步骤:

  1. 配置 SELinux:

    # setsebool -P authlogin_nsswitch_use_ldap=on

    输出可能包含类似于如下的消息。可以忽略它们:

    Full path required for exclude: net:[4026532245].
  2. 创建 目录:

    # mkdir /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
    # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
  3. 配置身份服务以使用多个后端:

    注意

    您可能需要使用 yum install crudini 安装 crudini。

    # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_specific_drivers_enabled true
    # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains
    # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf assignment driver sql
    注意

    如果使用 director,请注意 /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf 由 Puppet 管理。因此,每当运行 openstack overcloud deploy 过程时,您添加的任何自定义配置可能会被覆盖。因此,您可能需要每次手动重新添加此配置。有关基于 director 的部署,请参阅 第 4 章 将特定于域的 LDAP 后端与 director 一起使用

  4. 在控制面板中启用多个域.将这些行添加到 /var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings 中:

    OPENSTACK_API_VERSIONS = {
        "identity": 3
    }
    OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
    OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
    注意

    如果使用 director,请注意 /var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings 由 Puppet 管理。因此,每当运行 openstack overcloud deploy 过程时,您添加的任何自定义配置可能会被覆盖。因此,您可能需要每次手动重新添加此配置。

    重启 horizon 容器以应用设置:

    $ sudo docker restart horizon
  5. 配置额外后端:

    1. 为 IdM 集成创建 keystone 域。您需要决定新 keystone 域的名称,然后创建该域。例如,这个命令会创建一个名为 LAB 的 Keystone 域:

      $ openstack domain create LAB
    2. 创建配置文件:

      要添加 IdM 后端,请在名为 /var/lib/config-data/puppet-generated/keystone/etc/domains/keystone. LAB.conf 的新文件中输入 LDAP 设置。您需要编辑以下示例设置,以适应 IdM 部署:

      [ldap]
      url =  ldaps://idm.lab.local
      user = uid=svc-ldap,cn=users,cn=accounts,dc=lab,dc=local
      user_filter = (memberOf=cn=grp-openstack,cn=groups,cn=accounts,dc=lab,dc=local)
      password = RedactedComplexPassword
      user_tree_dn = cn=users,cn=accounts,dc=lab,dc=local
      user_objectclass = inetUser
      user_id_attribute = uid
      user_name_attribute = uid
      user_mail_attribute = mail
      user_pass_attribute =
      group_tree_dn               = cn=groups,cn=accounts,dc=lab,dc=local
      group_objectclass              = groupOfNames
      group_id_attribute            = cn
      group_name_attribute       =  cn
      group_member_attribute  = member
      group_desc_attribute        = description
      use_tls                  = False
      query_scope                  = sub
      chase_referrals                  = false
      tls_cacertfile =/etc/pki/ca-trust/source/anchors/anchorsca.crt
      
      [identity]
      driver = ldap

      每个设置的说明:

      设置Description

      url

      用于身份验证的 IdM 服务器。使用 LDAPS 端口 636

      user

      用于 LDAP 查询的 IdM 中的帐户。

      password

      以上使用的 IdM 帐户的纯文本密码。

      user_filter

      过滤呈现给身份服务的用户。因此,只有 grp-openstack 组的成员才能具有身份服务中定义的权限。

      user_tree_dn

      IdM 中 OpenStack 帐户的路径。

      user_objectclass

      定义 LDAP 用户的类型。对于 IdM,使用 inetUser 类型。

      user_id_attribute

      映射用于用户 ID 的 IdM 值。

      user_name_attribute

      将 IdM 值映射到 名称

      user_mail_attribute

      映射用于用户电子邮件地址的 IdM 值。

      user_pass_attribute

      将这个值留空。

      注意

      与 IdM 组集成将只返回直接成员,而不返回嵌套组。因此,依赖 LDAP_MATCHING_RULE_IN_CHAINmemberof 的查询:1.2.840.113556.1.4.1941 当前无法使用 IdM。

  6. 将配置文件的所有权改为 keystone 用户:

    # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf
  7. 授予 admin 用户对域的访问权限:

    注意

    这不向 OpenStack admin 帐户授予 IdM 中的任何权限。在本例中,术语域指的是 OpenStack 对 keystone 域的用法。

    1. 获取 LAB 域的 ID

      $ openstack domain show LAB
      +---------+----------------------------------+
      | Field   | Value                            |
      +---------+----------------------------------+
      | enabled | True                             |
      | id      | 6800b0496429431ab1c4efbb3fe810d4 |
      | name    | LAB                              |
      +---------+----------------------------------+
    2. 获取 admin 用户的 ID 值:

      $ openstack user list --domain default | grep admin
      
      | 3d75388d351846c6a880e53b2508172a | admin      |
    3. 获取 admin 角色的 ID 值:

      # openstack role list
      +----------------------------------+---------------+
      | ID                               | Name          |
      +----------------------------------+---------------+
      | 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
      | 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
      | 785c70b150ee4c778fe4de088070b4cf | admin         |
      | 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
      +----------------------------------+---------------+
    4. 使用返回的域和 admin ID 来构造将 admin 用户添加到 keystone LAB 域的 admin 角色的命令:

      $ openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
  8. 重启 keystone 服务以应用更改:

    $ sudo docker restart keystone
  9. 通过在命令中添加 keystone 域名来查看 IdM 域中的用户列表:

    $ openstack user list --domain LAB
  10. 查看本地 keystone 数据库中的服务帐户:

    $ openstack user list --domain default
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.