第 5 章 配置外部身份验证
通过使用外部身份验证,您可以从外部身份提供程序中的用户组成员资格生成用户和用户组权限。使用外部身份验证时,您不必在卫星服务器上手动创建这些用户并手动维护其组成员资格。如果外部源不提供电子邮件,它将在第一次通过 Satellite Web UI 登录时请求。
重要用户和组帐户信息
所有用户和组群帐户都必须是本地帐户。这是为了确保您的卫星服务器上的本地帐户和 Active Directory 域中的帐户之间没有身份验证冲突。
如果您的用户和组帐户在 /etc/passwd 和 /etc/group 文件中都存在,则您的系统不会受到此冲突的影响。例如,要检查 /etc/passwd 和 /etc/group 文件中是否存在 puppet、apache、foreman 和 foreman-proxy 组的条目,请输入以下命令:
# cat /etc/passwd | grep 'puppet\|apache\|foreman\|foreman-proxy' # cat /etc/group | grep 'puppet\|apache\|foreman\|foreman-proxy'
配置外部身份验证的情况
Red Hat Satellite 支持以下常规场景来配置外部身份验证:
- 使用轻量级目录访问协议( LDAP)服务器作为外部身份提供程序。LDAP 是一组开放协议,用于通过网络访问集中存储的信息。使用 Satellite,您可以完全通过 Satellite Web UI 管理 LDAP。更多信息请参阅 第 5.1 节 “使用 LDAP”。虽然您可以使用 LDAP 连接到红帽身份管理或 AD 服务器,但设置不支持在 Satellite 的 Web UI 中使用 Kerberos 进行服务器发现、跨林信任或单点登录。
- 使用红帽身份管理服务器作为外部身份提供程序。红帽身份管理处理单个身份、其凭证和在网络环境中使用的权限管理。使用红帽身份管理的配置不能只使用 Satellite Web UI 完成,而且需要一些与 CLI 交互。如需更多信息,请参阅 第 5.2 节 “使用红帽身份管理”。
- 通过跨林信任 Kerberos 信任作为外部身份提供程序,使用与红帽身份管理集成的 Active Directory (AD)。如需更多信息,请参阅 第 5.3.5 节 “带有 Cross-Forest Trust 的活动目录”。
- 使用 Red Hat Single Sign-On 作为 Satellite 外部身份验证的 OpenID 提供程序。更多信息请参阅 第 5.8 节 “使用红帽单点登录身份验证配置 Satellite”。
- 使用 Red Hat Single Sign-On 作为使用 TOTP 对 Satellite 进行外部身份验证的 OpenID 提供程序。更多信息请参阅 第 5.9 节 “使用 TOTP 配置红帽单点登录身份验证”。
除了提供对卫星服务器的访问外,通过卫星调配的主机也可与红帽身份管理域集成。Red Hat Satellite 具有域功能,它会自动管理注册到域或域提供程序的任何系统的生命周期。更多信息请参阅 第 5.7 节 “用于置备主机的外部身份验证”。
表 5.1. 身份验证概述
| 类型 | 身份验证 | 用户组 |
|---|---|---|
| Red Hat Identity Management | Kerberos 或 LDAP | 是 |
| Active Directory | Kerberos 或 LDAP | 是 |
| POSIX | LDAP | 是 |
5.1. 使用 LDAP
Satellite 支持使用一个或多个 LDAP 目录的 LDAP 身份验证。
如果您需要 Red Hat Satellite 使用 TLS 建立安全 LDAP 连接(LDAPS),请首先获取您要连接的 LDAP 服务器使用的证书,并将其标记为在 Satellite 服务器的基本操作系统中信任的证书,如下所述。如果您的 LDAP 服务器使用具有中间证书颁发机构的证书链,则链中的所有 root 和中间证书都必须被信任,因此请确保获取所有证书。如果您此时不需要安全 LDAP,请继续 第 5.1.2 节 “将 Red Hat Satellite 配置为使用 LDAP”。
用户不能同时使用 Red Hat Identity Management 和 LDAP 作为身份验证方法。用户使用某种方法进行身份验证后,他们无法使用其他方法。
要更改用户的身份验证方法,您必须从 Satellite 中删除自动创建的用户。
有关使用 Red Hat Identity Management 作为验证方法的详情,请参考 第 5.2 节 “使用红帽身份管理”。
5.1.1. 为安全 LDAP 配置 TLS
使用 Satellite CLI 为安全 LDAP (LDAPS)配置 TLS。
流程
从 LDAP 服务器获取证书。
-
如果您使用 Active Directory 证书服务,请使用 Base-64 编码的 X.509 格式导出企业 PKI CA 证书。如需了解有关从 Active Directory 服务器创建和导出 CA 证书的信息,请参阅 如何在 Satellite 上使用
TLS配置 Active Directory 身份验证。 将 LDAP 服务器证书下载到卫星服务器的临时位置,并在完成后将其删除。
例如:
/tmp/example.crt。文件名扩展.cer和.crt只是惯例,可以引用 DER 二进制文件或 PEM ASCII 格式证书。
-
如果您使用 Active Directory 证书服务,请使用 Base-64 编码的 X.509 格式导出企业 PKI CA 证书。如需了解有关从 Active Directory 服务器创建和导出 CA 证书的信息,请参阅 如何在 Satellite 上使用
信任 LDAP 服务器的证书。
Satellite 服务器要求 LDAP 身份验证的 CA 证书是
/etc/pki/tls/certs/目录中的各个文件。使用
install命令将导入的证书安装到/etc/pki/tls/certs/目录中,并具有正确的权限:# install /tmp/example.crt /etc/pki/tls/certs/以
root用户身份输入以下命令信任从 LDAP 服务器获取的 example.crt 证书:# ln -s example.crt /etc/pki/tls/certs/$(openssl \ x509 -noout -hash -in \ /etc/pki/tls/certs/example.crt).0
重启
httpd服务:# systemctl restart httpd
5.1.2. 将 Red Hat Satellite 配置为使用 LDAP
在卫星 Web UI 中,将卫星配置为使用 LDAP。
请注意,如果您需要在 Satellite Web UI 上带有 Kerberos 的单点登录功能,则应使用 Red Hat Identity Management 和 AD 外部身份验证。如需更多信息,请参阅:
流程
将网络信息系统(NIS)服务布尔值设置为 true,以防止 SELinux 停止传出的 LDAP 连接:
# setsebool -P nis_enabled on
- 在 Satellite Web UI 中,导航到 Administer > Authentication Sources。
- 单击 Create LDAP Authentication Source。
-
在 LDAP 服务器 选项卡上,输入 LDAP 服务器的名称、主机名、端口和服务器类型。默认端口为 389,默认的服务器类型是 POSIX (根据身份验证服务器的类型,您可以选择 FreeIPA 或 Active Directory)。对于
TLS加密连接,请选择 LDAPS 复选框来启用加密。端口应更改为 636,这是 LDAPS 的默认值。 - 在 Account 选项卡中,输入帐户信息和域名详情。有关描述和示例,请参阅 第 5.1.3 节 “LDAP 设置描述”。
- 在 属性映射选项卡上,将 LDAP 属性映射到 Satellite 属性。您可以映射登录名称、名字、姓氏、电子邮件地址和照片属性。如需示例,请参阅 第 5.1.4 节 “LDAP 连接设置示例”。
- 在 位置 选项卡上,从左侧表中选择位置。所选位置将分配给从 LDAP 身份验证源创建的用户,并在首次登录时可用。
- 在 组织 选项卡上,从左侧表中选择组织。所选机构被分配给从 LDAP 身份验证源创建的用户,并在首次登录时可用。
- 点 Submit。
为 LDAP 用户配置新帐户:
5.1.3. LDAP 设置描述
下表提供了 Account 选项卡中每个设置的描述。
表 5.2. account Tab 设置
| 设置 | 描述 |
|---|---|
| 帐户 | 对 LDAP 服务器的读取访问权限的 LDAP 帐户的用户名。如果服务器允许匿名读取,则不需要用户名,否则使用用户对象的完整路径。例如: uid=$login,cn=users,cn=accounts,dc=example,dc=com
变量不能与来自 LDAP 源的外部用户组一起使用,因为 Satellite 需要在不登录用户的情况下检索组列表。使用匿名或专用服务用户。 |
| 帐户密码 |
帐户用户名 字段中定义的用户的 LDAP 密码。如果 帐户用户名 正在使用 |
| 基本 DN | LDAP 目录的顶级域名。 |
| 组基础 DN | 包含组的 LDAP 目录树的顶级域名。 |
| LDAP 过滤器 | 用于限制 LDAP 查询的过滤器。 |
| 在 Satellite 中自动创建帐户 | 如果选中此复选框,卫星会在首次登录 Satellite 时为 LDAP 用户创建用户帐户。在第一次登录时,Satellite 管理员必须手动为它们分配角色。请参阅 管理 Red Hat Satellite 中的为用户分配角色,以便在 Satellite 中为用户帐户分配适当的角色。https://access.redhat.com/documentation/zh-cn/red_hat_satellite/6.12/html-single/administering_red_hat_satellite/index#Assigning_Roles_to_a_User_admin |
| usergroup Sync | 如果选择了这个选项,用户的用户组成员资格会在用户登录时自动同步,这样可确保成员资格始终保持最新状态。如果清除此选项,卫星将依赖于 cron 作业来定期同步组成员资格(默认为 30 分钟)。更多信息请参阅 第 5.4 节 “配置外部用户组”。 |
5.1.4. LDAP 连接设置示例
下表显示了不同类型的 LDAP 连接设置示例。以下示例使用一个名为 redhat 的专用服务帐户,该帐户对用户和组条目具有绑定、读取和搜索权限。请注意,LDAP 属性名称区分大小写。
表 5.3. Active Directory、Free IPA 或 Red Hat Identity Management 和 POSIX LDAP 连接的设置示例
| 设置 | Active Directory | freeipa 或 Red Hat Identity Management | POSIX (OpenLDAP) |
|---|---|---|---|
| 帐户 | DOMAIN\redhat | uid=redhat,cn=users, cn=accounts,dc=example, dc=com | uid=redhat,ou=users, dc=example,dc=com |
| 帐户密码 | P@ssword | - | - |
| 基本 DN | DC=example,DC=COM | dc=example,dc=com | dc=example,dc=com |
| 组基础 DN | CN=Users,DC=example,DC=com | cn=groups,cn=accounts, dc=example,dc=com | cn=employee,ou=userclass, dc=example,dc=com |
| 登录名称属性 | userPrincipalName | uid | uid |
| 名字属性 | givenName | givenName | givenName |
| 姓氏属性 | sn | sn | sn |
| 电子邮件地址属性 | | | |
| photo 属性 | thumbnailPhoto | - | - |
userPrincipalName 允许在 usernames 中使用空格。登录名称属性 sAMAccountName (上方表中未列出)提供与旧 Microsoft 系统的向后兼容性。sAMAccountName 不允许在用户名中使用空格。
5.1.5. LDAP 过滤器示例
作为管理员,您可以创建 LDAP 过滤器,以限制特定用户对 Satellite 的访问。
表 5.4. 允许特定用户登录的过滤器示例
| 用户 | Filter |
|---|---|
| User1 | (distinguishedName=cn=User1,cn=Users,dc=domain,dc=example) |
| User1、User3 | (memberOf=cn=Group1,cn=Users,dc=domain,dc=example) |
| User2, User3 | (memberOf=cn=Group2,cn=Users,dc=domain,dc=example) |
| User1、User2、User3 | (|(memberOf=cn=Group1,cn=Users,dc=domain,dc=example) (memberOf=cn=Group2,cn=Users,dc=domain,dc=example)) |
| User1、User2、User3 | (memberOf:1.2.840.113556.1.4.1941:=cn=Users,dc=domain,dc=example) |
组 Users 是包含组 Group1 和 Group2 的嵌套组。如果要过滤嵌套组中的所有用户,您必须在嵌套组名称前添加 memberOf:1.2.840.113556.1.4.1941:=。请参阅上表中的最后一个示例。
LDAP 目录结构
示例中使用的过滤器的 LDAP 目录结构:
DC=Domain,DC=Example
|
|----- CN=Users
|
|----- CN=Group1
|----- CN=Group2
|----- CN=User1
|----- CN=User2
|----- CN=User3LDAP 组成员身份
示例中使用的过滤器的组成员资格:
| 组 | 成员 |
|---|---|
| Group1 | User1、User3 |
| Group2 | User2, User3 |