用户和身份管理指南
管理用户和身份验证机制
摘要
前言 复制链接链接已复制到粘贴板!
作为云管理员,您可以管理项目、用户和角色。项目是云中的组织单元,您可以为其分配用户。项目也称为租户或帐户。用户可以是一个或多个项目的成员。角色定义用户可以执行的操作。
每个 OpenStack 部署必须至少包含一个项目、一个用户和一个角色(链接在一起)。作为云管理员,您可以添加、更新和删除项目与用户,将用户分配给一个或多个项目,以及更改或删除这些分配。您可以独立于彼此管理项目和用户。
您还可以使用 Keystone 身份服务配置用户身份验证,以控制对服务和端点的访问。Keystone 提供基于令牌的身份验证,并可与 LDAP 和 Active Directory 集成,以便您可以在外部管理用户和身份,并将用户数据与 Keystone 同步。
第 1 章 用户管理 复制链接链接已复制到粘贴板!
1.1. 用户管理 复制链接链接已复制到粘贴板!
作为云管理员,您可以在仪表板中添加、修改和删除用户。用户可以是一个或多个项目的成员。您可以独立于彼此管理项目和用户。
1.1.1. 创建用户 复制链接链接已复制到粘贴板!
使用这个流程在仪表板中创建用户。您可以为用户分配主项目和角色。请注意,在仪表板中创建的用户默认为 Keystone 用户。要集成 Active Directory 用户,您可以配置 Red Hat OpenStack Platform Identity 服务中包含的 LDAP 供应商。
- 在控制面板中以 admin 用户身份,选择 Identity > Users。
- 点 Create User.
- 输入用户的用户名、电子邮件和初始密码。
- 从 Primary Project 列表中选择一个项目。
-
从 Role 列表中选择用户的角色(默认角色为
_member_)。 - 点 Create User.
1.1.2. 编辑用户 复制链接链接已复制到粘贴板!
使用这个流程更新用户的详情,包括主项目。
- 在控制面板中以 admin 用户身份,选择 Identity > Users。
- 在 User's Actions 列中,单击 Edit。
- 在 Update User 窗口中,您可以更新 User Name, Email, and Primary Project。
- 单击 Update User。
1.1.3. 启用或禁用用户 复制链接链接已复制到粘贴板!
使用这个流程启用或禁用用户。您可以一次禁用或启用一个用户。禁用的用户无法登录控制面板,也无法访问任何 OpenStack 服务。此外,禁用的用户的主项目不能设置为 active。禁用的用户可以再次启用,这与删除无法撤销操作的用户不同。控制面板中的任何 user-project 操作必须重新启用禁用的用户。
- 在控制面板中以 admin 用户身份,选择 Identity > Users。
-
在 Actions 列中,单击箭头,然后选择 Enable User 或 Disable User。在 Enabled 列中,值然后更新为
True或False。
1.1.4. 删除用户 复制链接链接已复制到粘贴板!
以 admin 用户身份,使用此流程使用控制面板删除用户。此操作不能反向,这与禁用用户不同。删除的用户会从它所属的项目成员列表中列出。与 user-project 对关联的所有角色也会丢失。
- 在控制面板中以 admin 用户身份,选择 Identity > Users。
- 选择您要删除的用户。
- 单击 Delete Users。此时会显示 Confirm Delete Users 窗口。
- 单击 Delete Users 以确认操作。
第 2 章 角色管理 复制链接链接已复制到粘贴板!
2.1. 角色管理 复制链接链接已复制到粘贴板!
OpenStack 使用基于角色的访问控制(RBAC)机制来管理对其资源的访问。角色定义用户可以执行的操作。默认情况下,有两个预定义角色:一个成员角色附加到租户,以及一个管理角色,使非管理员用户能够管理环境。请注意,有抽象级别的权限,可以创建管理员需要的角色,并充分配置服务。
2.1.1. 查看角色 复制链接链接已复制到粘贴板!
使用以下命令列出可用的预定义角色:
要获取指定角色的详情,请运行:
keystone role-get [ROLE]
$ keystone role-get [ROLE]
Example
2.1.2. 创建并分配角色 复制链接链接已复制到粘贴板!
作为云管理员,您可以使用以下一组命令在 Keystone 客户端上创建和管理角色:每个 OpenStack 部署必须至少包含一个项目、一个用户和一个角色(链接在一起)。但是,用户可以是多个项目的成员。要将用户分配到多个项目,请创建一个角色,并将该角色分配给 user-project 对。请注意,您可以创建一个用户并在仪表板中分配主项目和默认角色。
名称或 ID 可以用来指定用户、角色或项目。
创建
new-role角色:keystone role-create --name [ROLE_NAME]
$ keystone role-create --name [ROLE_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 若要为用户分配项目,您必须将角色分配给 user-project 对。要做到这一点,获取用户、角色和项目名称或 ID:
列出用户:
keystone user-list
$ keystone user-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出角色:
keystone role-list
$ keystone role-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出项目:
keystone tenant-list
$ keystone tenant-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
为 user-project 对分配一个角色。
keystone user-role-add --user [USER_NAME] --role [ROLE_NAME] --tenant [TENANT_NAME]
$ keystone user-role-add --user [USER_NAME] --role [ROLE_NAME] --tenant [TENANT_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
在本例中,您要将
new-role角色分配给demo-demo对:keystone user-role-add --user demo --role new-role --tenant demo
$ keystone user-role-add --user demo --role new-role --tenant demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证用户
demo的角色分配:keystone user-role-list --user [USER_NAME] --tenant [TENANT_NAME]
$ keystone user-role-list --user [USER_NAME] --tenant [TENANT_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
keystone user-role-list --user demo --tenant demo
$ keystone user-role-list --user demo --tenant demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.3. 删除角色 复制链接链接已复制到粘贴板!
使用以下命令,从 user-project 对中删除角色。删除角色可确保相关的 user-project 对会丢失。
keystone user-role-remove --user [USER_NAME] --role [ROLE] --tenant [TENANT_NAME]
$ keystone user-role-remove --user [USER_NAME] --role [ROLE] --tenant [TENANT_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证角色删除:
keystone user-role-list --user [USER_NAME] --tenant [TENANT_NAME]
$ keystone user-role-list --user [USER_NAME] --tenant [TENANT_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果角色已被删除,命令输出将省略已删除的角色。
第 3 章 组管理 复制链接链接已复制到粘贴板!
3.1. 管理 Keystone 组 复制链接链接已复制到粘贴板!
3.1.1. 使用命令行 复制链接链接已复制到粘贴板!
您可以使用 Identity Service (keystone)组为多个用户帐户分配一致的权限。这个示例创建了一个组,然后为组分配权限。因此,组成员将继承分配给组相同的权限:
openstack group 子命令需要 keystone v3。
创建组
grp-Auditors:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 keystone 组列表:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 授予
grp-Auditors组权限来访问demo项目,同时使用_member_角色:openstack role add _member_ --group grp-Auditors --project demo
$ openstack role add _member_ --group grp-Auditors --project demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将现有用户
user1添加到grp-Auditors组中:openstack group add user grp-Auditors user1 user1 added to group grp-Auditors
$ openstack group add user grp-Auditors user1 user1 added to group grp-AuditorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
user1是grp-Auditors的成员:openstack group contains user grp-Auditors user1 user1 in group grp-Auditors
$ openstack group contains user grp-Auditors user1 user1 in group grp-AuditorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看分配给
user1的有效权限:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. 使用仪表板 复制链接链接已复制到粘贴板!
您可以使用控制面板管理 keystone 组成员资格。如上例所述,您将需要使用命令行为组分配角色权限。
3.1.2.1. 创建一个组 复制链接链接已复制到粘贴板!
- 在控制面板中以 admin 用户身份,选择 Identity > Groups。
- 单击 +Create Group。
- 输入组的名称和描述。
- 单击 Create Group。
3.1.2.2. 管理组成员身份 复制链接链接已复制到粘贴板!
您可以使用控制面板管理 keystone 组成员资格。
- 在控制面板中以 admin 用户身份,选择 Identity > Groups。
- 单击您需要编辑的组的 管理成员。
- 使用 Add users 向组中添加用户。如果您需要删除用户,请选中其复选框,然后单击或删除 用户。
第 4 章 配额管理 复制链接链接已复制到粘贴板!
4.1. 配额管理 复制链接链接已复制到粘贴板!
作为云管理员,您可以为项目设置和管理配额。每个项目都被分配了资源,项目用户被授予使用这些资源的访问权限。这可让多个项目使用单个云,而不会相互干扰权限和资源。创建新租户时,将预先配置一组资源配额。配额包括 VCPU 数、实例、RAM 和浮动 IP 的数量,它们可以分配给租户。配额可以在租户(或项目)和 tenant-user 级别实施。请注意,您可以使用控制面板为新的和现有的租户设置或修改计算和块存储配额。有关如何在仪表板中设置和更新项目配额的步骤,请参阅 第 5 章 项目管理。
4.1.1. 查看用户的计算配额 复制链接链接已复制到粘贴板!
运行以下命令列出用户当前设置的配额值:
nova quota-show --user [USER] --tenant [TENANT]
$ nova quota-show --user [USER] --tenant [TENANT]
Example
4.1.2. 为用户更新计算配额 复制链接链接已复制到粘贴板!
运行以下命令以更新特定的配额值:
nova quota-update --user [USER] --[QUOTA_NAME] [QUOTA_VALUE] [TENANT] nova quota-show --user [USER] --tenant [TENANT]
$ nova quota-update --user [USER] --[QUOTA_NAME] [QUOTA_VALUE] [TENANT]
$ nova quota-show --user [USER] --tenant [TENANT]
示例
要查看 quota-update 命令的选项列表,请运行:
nova help quota-update
$ nova help quota-update
4.1.3. 为用户设置对象存储配额 复制链接链接已复制到粘贴板!
对象存储配额可分为以下类别:
- 容器配额 - 限制可存储在单个容器中的对象总数(以字节为单位)或对象数量。
- 帐户配额 - 限制用户在对象存储服务中可用的总大小(以字节为单位)。
要设置容器配额或帐户配额,对象存储代理服务器必须具有参数 container_quotas 或 account_quotas (或两者)添加到 proxy-server.conf 文件的 [pipeline:main] 部分:
使用以下命令来查看和更新对象存储配额:项目中包含的所有用户都可以查看项目上放置的配额。要更新项目上的对象存储配额,您必须在项目中具有 ResellerAdmin 角色。
查看帐户配额:
更新配额:
swift post -m quota-bytes:<BYTES>
# swift post -m quota-bytes:<BYTES>
例如,要在帐户中放置 5 GB 配额:
swift post -m quota-bytes:5368709120
# swift post -m quota-bytes:5368709120
要验证配额,请再次运行 swift stat 命令:
第 5 章 项目管理 复制链接链接已复制到粘贴板!
5.1. 项目管理 复制链接链接已复制到粘贴板!
作为云管理员,您可以创建和管理项目(租户)。租户是指分配了多个 OpenStack 用户和资源的项目。可以为每个租户设置配额。这可让多个项目使用单个云,而不会相互干扰权限和资源。词语项目和租户可互换使用。用户可以与多个项目关联。每个用户对都必须关联有角色。
5.1.1. 创建一个项目 复制链接链接已复制到粘贴板!
使用这个流程创建项目,将成员添加到项目中,并为项目设置资源限值。
- 在控制面板中以 admin 用户身份,选择 Identity > Projects。
- 点击 Create Project。
- 在 Project Information 选项卡中,输入项目的名称和描述(默认情况下会选中 Enabled 复选框)。
- 在项目成员选项卡上,从 All Users 列表向项目添加成员。
- 在 Quotas 选项卡中,指定项目的资源限值。
- 点击 Create Project。
5.1.2. 编辑项目 复制链接链接已复制到粘贴板!
您可以编辑项目以更改其名称或描述、启用或禁用它,或更新其成员。
- 在控制面板中以 admin 用户身份,选择 Identity > Projects。
- 在项目的 Actions 列中,单击箭头,然后单击 Edit Project。
- 在 Edit Project 窗口中,您可以更新项目以更改其名称或描述,然后启用或禁用项目。
- 在 项目成员选项卡 上,添加成员到项目中,或者根据需要删除它们。
- 点击 Save。
Enabled 复选框会被默认选中。若要临时禁用项目,可清除 Enabled 复选框。若要启用禁用的项目,可选中 Enabled 复选框。
5.1.3. 删除项目 复制链接链接已复制到粘贴板!
- 在控制面板中以 admin 用户身份,选择 Identity > Projects。
- 选择您要删除的项目。
- 单击 Delete Projects。此时会显示 Confirm Delete Projects 窗口。
- 单击 Delete Projects 以确认操作。
该项目将被删除,并且任何用户对将被解除关联。
5.1.4. 更新项目配额 复制链接链接已复制到粘贴板!
配额是可每个项目设置的操作限制,以优化云资源。您可以设置配额来防止项目资源被耗尽,而无需通知。配额可以在项目和项目用户级别实施。
- 在控制面板中以 admin 用户身份,选择 Identity > Projects。
- 在项目的 Actions 列中,单击箭头,再单击 Modify Quotas。
- 在 Quota 选项卡中,根据需要修改项目配额。
- 点击 Save。
5.1.5. 更改活跃项目 复制链接链接已复制到粘贴板!
用户可以将项目设置为其成员的活动项目。用户也需要成为多个项目的成员,才能启用 Set as Active Project 选项。将项目设置为活跃项目可让您访问活动项目的仪表板中的对象。请注意,除非重新启用禁用的项目,否则无法将禁用的项目设置为 active。
- 在控制面板中以 admin 用户身份,选择 Identity > Projects。
- 在项目的 Actions 列中,单击箭头,再单击 Set as Active Project。
- 或者,作为非管理员用户,在项目的 Actions 列中,单击 Set as Active Project,这将成为列中的默认操作。
5.2. 项目安全管理 复制链接链接已复制到粘贴板!
安全组是一组 IP 过滤规则,可分配给项目实例,用于定义对实例的网络访问。安全组是特定于项目的;项目成员可以编辑其安全组的默认规则,并添加新的规则集。
所有项目都有一个默认安全组,它应用到没有其他定义的安全组的任何实例。除非更改默认值,否则此安全组拒绝所有传入的流量,并且只允许到实例的传出流量。
5.2.1. 创建安全组 复制链接链接已复制到粘贴板!
- 在控制面板中,选择 Project > Compute > Access & Security。
- 在 Security Groups 选项卡中,单击 Create Security Group。
- 为组提供名称和描述,然后单击 创建安全组。
5.2.2. 添加安全组规则 复制链接链接已复制到粘贴板!
默认情况下,新组的规则仅提供传出访问。您必须添加新规则以提供额外的访问权限。
- 在控制面板中,选择 Project > Compute > Access & Security。
- 在 Security Groups 选项卡中,点您要编辑的安全组的管理规则。
- 单击 Add Rule 以添加新规则。
指定规则值,然后单击 Add。
需要以下规则字段:
- 规则
节点类型。如果您指定了规则模板(如 SSH),则会自动填写其字段:
- TCP:通常用于在系统之间交换数据,以及用于最终用户通信。
- UDP:通常用于在系统间交换数据,特别是在应用程序级别。
- ICMP:网络设备(如路由器)使用来发送错误或监控消息。
- 方向
- Ingress (入站)或 Egress (出站)。
- 打开端口
对于 TCP 或 UDP 规则,打开 Port 或 Port Range(单个端口或端口范围):
- 对于一系列端口,在 From Port 和 To Port 字段中输入 port 值。
- 对于单个端口,在 Port 字段中输入端口值。
- 类型
- ICMP 规则的类型;必须在范围-1: 255 中。
- 代码
- ICMP 规则的代码;必须在范围-1: 255 中。
- 远程
此规则的流量源:
- CIDR (Classless Inter-Domain Routing): IP 地址块,它限制对块中的 IP 的访问。在 Source 字段中输入 CIDR。
- 安全组:允许组中的任何实例访问任何其他组实例的 Source 组。
5.2.3. 删除安全组规则 复制链接链接已复制到粘贴板!
- 在控制面板中,选择 Project > Compute > Access & Security。
- 在 Security Groups 选项卡中,点安全组的管理规则。
- 选择安全组规则,然后点删除规则。
- 再次单击 Delete Rule。
您无法撤销 delete 操作。
5.2.4. 删除安全组 复制链接链接已复制到粘贴板!
- 在控制面板中,选择 Project > Compute > Access & Security。
- 在 Security Groups 选项卡中,选择组,再单击 Delete Security Groups。
- 单击 Delete Security Groups。
您无法撤销 delete 操作。
5.3. Identity Service 中的分层多租户 复制链接链接已复制到粘贴板!
在 OpenStack Identity Service (keystone)中,您可以使用多租户来嵌套项目。域代表用户、组和项目的集合,其中各自归一个域所有。通过在项目(包括其他域拥有的项目)授予角色,用户可以与多个项目关联。项目是资源的容器,用于定义配额和对虚拟机镜像的访问。
多租户作为技术预览提供。有关技术预览功能的支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview/
第 6 章 域管理 复制链接链接已复制到粘贴板!
Identity Service (keystone)域是您可以在 keystone 中创建的额外命名空间。您可以使用 keystone 域对用户、组和项目进行分区。这些单独的域也可以配置为在不同 LDAP 或 Active Directory 环境中验证用户。如需更多信息,请参阅 集成 Identity Service。
Identity Service 包括一个名为 Default 的内置域。建议您只为服务帐户保留这个域,并为用户帐户创建单独的域。
6.1. 查看域列表 复制链接链接已复制到粘贴板!
您可以使用 openstack domain list 查看域列表。例如:
如果这个命令不可用,请检查您为命令行会话启用了 keystone v3。
6.2. 创建新域 复制链接链接已复制到粘贴板!
您可以使用 openstack domain create 创建新域。例如:
6.3. 查看域的详情 复制链接链接已复制到粘贴板!
您可以使用 openstack domain show 查看域的详细信息。例如:
6.4. 禁用一个域 复制链接链接已复制到粘贴板!
您可以使用-禁用
禁用域。例如:openstack domain set TestDomain --disable
$ openstack domain set TestDomain --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认域已被禁用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,您可以重新启用域:
openstack domain set TestDomain --enable
$ openstack domain set TestDomain --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 7 章 身份管理 复制链接链接已复制到粘贴板!
7.1. 安全 LDAP 通信 复制链接链接已复制到粘贴板!
如果您配置了 Identity 服务(keystone)以针对或检索 LDAP 服务器的身份信息,您可以使用 CA 证书保护 Identity 服务的 LDAP 通信。
本节概述了如何从 Active Directory 获取 CA 证书,如何将 CA 证书文件转换为 Privacy Enhanced Mail (PEM)文件格式,以及为 Identity 服务配置安全 LDAP 通信的三种方法。根据配置 CA 信任的位置和方式,每个方法中的流程都必须执行。
7.1.1. 从 Active Directory 获取 CA 证书 复制链接链接已复制到粘贴板!
以下代码演示了如何查询 Active Directory 获取 CA 证书的示例。CA_NAME 是证书的名称(您可以在 mmc.exe 中看到),并且可以根据您的设置来更改其余参数:
7.1.2. 将 CA 证书转换为 PEM 文件格式 复制链接链接已复制到粘贴板!
创建名为 /path/cacert.pem 的文件,并包含 LDAP 查询均是从 Active Directory 获取的 CA 证书的内容,在标头和页脚内,如下例所示:
-----BEGIN CERTIFICATE----- MIIDbzCCAlegAwIBAgIQQD14hh1Yz7tPFLXCkKUOszANB... -----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDbzCCAlegAwIBAgIQQD14hh1Yz7tPFLXCkKUOszANB... -----END
CERTIFICATE-----
要进行故障排除,您可以执行以下查询来检查 LDAP 是否正常工作,并确保正确创建了 PEM 证书文件。
LDAPTLS_CACERT=/path/cacert.pem ldapsearch -xLLL -ZZ -H $LDAPURL -s base -b "" "objectclass=*" currenttime
LDAPTLS_CACERT=/path/cacert.pem ldapsearch -xLLL -ZZ -H $LDAPURL -s base -b "" "objectclass=*" currenttime
查询应返回类似如下的结果:
dn: currentTime: 20141022050611.0Z
dn: currentTime:
20141022050611.0Z
如果 CA 证书由 Web 服务器托管,您可以运行以下命令获取 CA 证书。
Example
- $HOST=redhat.com
- $PORT=443
echo Q | openssl s_client -connect $HOST:$PORT | sed -n -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/ p'
# echo Q | openssl s_client -connect $HOST:$PORT | sed -n -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/ p'
7.1.3. 为 Identity 服务配置安全 LDAP 通信的方法 复制链接链接已复制到粘贴板!
7.1.3.1. 方法 1 复制链接链接已复制到粘贴板!
如果使用 PEM 文件在 LDAP 级别配置 CA 信任,则使用此方法。手动指定 CA 证书文件的位置。以下流程保护 LDAP 通信不仅针对 Identity 服务,还用于所有使用 OpenLDAP 库的应用程序。
-
将包含 PEM 格式的 CA 证书链的文件复制到
/etc/openldap/certs目录。 编辑
/etc/openldap/ldap.conf并添加以下指令,将 [CA_FILE] 替换为 CA 证书文件的位置和名称:TLS_CACERT /etc/openldap/certs/[CA_FILE]
TLS_CACERT /etc/openldap/certs/[CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 openstack-keystone 服务:
systemctl restart openstack-keystone.service
# systemctl restart openstack-keystone.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.2. 方法 2 复制链接链接已复制到粘贴板!
如果使用网络安全服务(NSS)数据库在 LDAP 库级别配置了 CA 信任,则使用此方法。使用 certutil 命令将 CA 证书导入并信任到 OpenLDAP 库使用的 NSS 证书数据库中。以下流程保护 LDAP 通信不仅针对 Identity 服务,还用于所有使用 OpenLDAP 库的应用程序。
导入并信任证书,将 [CA_FILE] 替换为 CA 证书文件的位置和名称:
certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]
# certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认正确导入了 CA 证书:
certutil -d /etc/openldap/certs -L
# certutil -d /etc/openldap/certs -LCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的 CA 证书被列出,信任属性被设置为 CT、。
重启 openstack-keystone 服务:
systemctl restart openstack-keystone.service
# systemctl restart openstack-keystone.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.3. 方法 3 复制链接链接已复制到粘贴板!
如果使用 PEM 文件在 Keystone 级别配置了 CA 信任,则使用此方法。保护 Identity 服务和 LDAP 服务器之间的通信的最终方法是为 Identity 服务配置 TLS。
但是,与上述两种方法不同,此方法只保护 Identity 服务的 LDAP 通信,对使用 OpenLDAP 库的其他应用程序不会保护 LDAP 通信。
以下流程使用 openstack-config 命令编辑 /etc/keystone/keystone.conf 文件中的值。
启用 TLS:
openstack-config --set /etc/keystone/keystone.conf ldap use_tls True
# openstack-config --set /etc/keystone/keystone.conf ldap use_tls TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定证书的位置,将 [CA_FILE] 替换为 CA 证书的名称:
openstack-config --set /etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]
# openstack-config --set /etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定在 LDAP 服务器传入的 TLS 会话上执行的客户端证书检查,将 [CERT_BEHAVIOR] 替换为以下列出的行为之一:
- 需求
- 将始终从 LDAP 服务器请求证书。如果未提供证书,则会话将被终止,或者无法针对现有的证书颁发机构文件验证提供的证书。
- allow
- 将始终从 LDAP 服务器请求证书。即使未提供证书,会话也会正常进行。如果提供了证书,但无法针对现有的证书颁发机构文件进行验证,则证书将被忽略,会话将正常进行。
- never
- 永远不会请求证书。
openstack-config --set /etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]
# openstack-config --set /etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 openstack-keystone 服务:
systemctl restart openstack-keystone.service
# systemctl restart openstack-keystone.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow