2.8. 配置 Identity Service


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

2.8.1. 启用 keystone v3 的命令行访问

要从命令行管理 Identity Service 域,您需要启用对 keystone v3 的访问。

从运行 keystone 服务的控制器执行此步骤。

1.创建现有环境变量文件的副本。在基于 director 的部署中,它将称为 overcloudrc

$ cp overcloudrc overcloudrc-v3
Copy to Clipboard Toggle word wrap

2.编辑新的 overcloudrc-v3 文件:

  • OS_AUTH_URLv2.0 更改为 v3。例如:
export OS_AUTH_URL=https://controllerIP:5000/v3/
Copy to Clipboard Toggle word wrap
  • 将以下条目添加到 overcloudrc-v3 的底部:
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
Copy to Clipboard Toggle word wrap

3.通过提供文件,为您的当前命令行会话启用这些选项:

$ source overcloudrc-v3
Copy to Clipboard Toggle word wrap

2.8.2. 配置控制器

从运行 keystone 服务的控制器执行此步骤:

1.配置 SELinux:

# setsebool -P authlogin_nsswitch_use_ldap=on
Copy to Clipboard Toggle word wrap

2.创建 domains 目录:

# mkdir /etc/keystone/domains/
# chown keystone /etc/keystone/domains/
Copy to Clipboard Toggle word wrap

3.配置 Identity Service 以使用多个后端:

注意

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

# crudini --set /etc/keystone/keystone.conf identity domain_specific_drivers_enabled true
# crudini --set /etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains
# crudini --set /etc/keystone/keystone.conf assignment driver sql
Copy to Clipboard Toggle word wrap
注意

如果使用 Red Hat OpenStack Platform director,则需要注意 /etc/keystone/keystone.conf 由 Puppet 管理。因此,每当您运行 openstack overcloud deploy 过程时,您添加的任何自定义配置都可能会被覆盖。因此,您可能需要每次手动重新添加此配置。以后的 director 版本会包括 Puppet 参数,允许您使用部署后脚本自动重新应用这些设置。

4.配置额外的后端:

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

# openstack domain create LAB
Copy to Clipboard Toggle word wrap
注意

如果这个命令不可用,请检查您为命令行会话启用了 keystone v3

b.创建配置文件:

要添加 IdM 后端,请在名为 /etc/keystone/domains/keystone.LAB.conf (其中 LAB 是之前创建的域名)的新文件中输入 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 =
user_allow_create = False
user_allow_update = False
user_allow_delete = False
tls_cacertfile = /etc/ssl/certs/ca.crt

[identity]
driver = keystone.identity.backends.ldap.Identity
Copy to Clipboard Toggle word wrap

每个设置的说明:

Expand
设置描述

url

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

user

IdM 中用于 LDAP 查询的帐户。

password

上面使用的 IdM 帐户的明文密码。

user_filter

过滤提供给 Identity Service 的用户。因此,只有 grp-openstack 组的成员可以在 Identity Service 中定义权限。

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

将此值设置为。

user_allow_create

将此值设置为 False,因为 keystone 只需要只读访问权限。

user_allow_update

将此值设置为 False,因为 keystone 只需要只读访问权限。

user_allow_delete

将此值设置为 False,因为 keystone 只需要只读访问权限。

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

# chown keystone /etc/keystone/domains/keystone.LAB.conf
Copy to Clipboard Toggle word wrap

6.授予 admin 用户对域的访问权限:

注意

这不授予 OpenStack admin 帐户在 IdM 中任何权限。在这种情况下,术语域指的是 OpenStack Keystone 域的使用。

a.获取 LAB 域的 ID

# openstack domain show LAB
+---------+----------------------------------+
| Field   | Value                            |
+---------+----------------------------------+
| enabled | True                             |
| id      | 6800b0496429431ab1c4efbb3fe810d4 |
| name    | LAB                              |
+---------+----------------------------------+
Copy to Clipboard Toggle word wrap

b.获取 admin 用户的 ID 值:

# openstack user list --domain default | grep admin

| 3d75388d351846c6a880e53b2508172a | admin      |
Copy to Clipboard Toggle word wrap

c.获取 admin 角色的 ID 值:

# openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
| 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
| 785c70b150ee4c778fe4de088070b4cf | admin         |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
+----------------------------------+---------------+
Copy to Clipboard Toggle word wrap

d.使用返回的域和 admin ID 构造命令,将 admin 用户添加到 keystone LAB 域的 admin 角色中:

# openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
Copy to Clipboard Toggle word wrap

7.将控制面板配置为在登录页面中使用 LAB keystone 域。将这些行添加到 /etc/openstack-dashboard/local_settings 中:

重要

此 Red Hat OpenStack Platform 版本不支持多域仪表板配置。因此,本指南只描述了单个域的 Dashboard 配置。

OPENSTACK_API_VERSIONS = {
    "identity": 3
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'LAB'
Copy to Clipboard Toggle word wrap
注意

如果使用 Red Hat OpenStack Platform director,则需要注意 /etc/openstack-dashboard/local_settings 由 Puppet 管理。因此,每当您运行 openstack overcloud deploy 过程时,您添加的任何自定义配置都可能会被覆盖。因此,您可能需要每次手动重新添加此配置。以后的 director 版本会包括 Puppet 参数,允许您使用部署后脚本自动重新应用这些设置。

8.重启 httpd 服务以应用更改:

# systemctl restart httpd.service
Copy to Clipboard Toggle word wrap

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

# openstack user list --domain LAB
Copy to Clipboard Toggle word wrap

10.查看本地 keystone 数据库中的服务帐户:

# openstack user list --domain default
Copy to Clipboard Toggle word wrap

2.8.3. 将 Compute 配置为使用 keystone v3

默认情况下,计算使用 keystone v2.0,因此需要配置为使用 keystone v3,才能使用多域功能。

1.在每个 Compute 节点上,调整 keystone_authtoken 值:

# crudini --set /etc/nova/nova.conf keystone_authtoken auth_version v3
Copy to Clipboard Toggle word wrap

2.在控制器中重启这些服务以应用更改:

# systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-conductor.service openstack-nova-consoleauth.service openstack-nova-novncproxy.service openstack-nova-scheduler.service
Copy to Clipboard Toggle word wrap

3.在每个 Compute 节点上重启这个服务以应用更改:

# systemctl restart openstack-nova-compute.service
Copy to Clipboard Toggle word wrap

2.8.4. 配置块存储以使用 keystone v3

您还必须配置 Block Storage (cinder)来向 keystone v3 进行身份验证。

  1. /etc/cinder/cinder.conf 中:

    [keystone_authtoken]
    auth_uri = https://controllerIP:5000/v3
    auth_version = v3
    Copy to Clipboard Toggle word wrap
    • auth_uri - 将 controllerIP 替换为控制器的 IP 地址。如果您的部署有多个控制器,您应该使用 keystone 端点 VIP,而不是控制器 IP。

2.8.5. 允许 IdM 用户访问项目

作为 grp-openstack IdM 组的成员的 IdM 用户可以授予在仪表板中登录到项目的权限:

1.检索 IdM 用户列表:

# openstack user list --domain LAB
 +------------------------------------------------------------------+----------------+
| ID                                                               | Name           |
+------------------------------------------------------------------+----------------+
| 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e | user1          |
| 12c062fidm5f8b065434d9ff6fce03eb9259537c93b411224588686e9a38bf1 | user2          |
| afaf48031eb54c3e44e4cb0353f5b612084033ff70f63c22873d181fdae2e73c | user3          |
| e47fc21dcf0d9716d2663766023e2d8dc15a6d9b01453854a898cabb2396826e | user4          |
+------------------------------------------------------------------+----------------+
Copy to Clipboard Toggle word wrap

2.检索角色列表:

# openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
| 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
| 785c70b150ee4c778fe4de088070b4cf | admin         |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
+----------------------------------+---------------+
Copy to Clipboard Toggle word wrap

3.通过将项目添加到一个或多个这些角色,授予用户对项目的访问权限。例如,如果您希望 user1demo 项目的普通用户,您可以将它们添加到 _member_ 角色中:

# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_
Copy to Clipboard Toggle word wrap

或者,如果您希望 user1demo 项目的管理用户,您可以将它们添加到 admin 角色中:

# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin
Copy to Clipboard Toggle word wrap

因此,user1 可以通过输入 IdM 用户名和密码来登录到仪表板。

注意

如果用户收到错误 "Error: Unable to retrieve container list.",并且希望能够管理容器,则必须将它们添加到 SwiftOperator 角色中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat