Ansible Tower 中的 LDAP 身份验证入门
Ansible Tower 中的 LDAP 身份验证入门
“入门”系列的下一部分将介绍如何配置 Red Hat Ansible Tower 以允许用户使用 LDAP 凭据登录的基本知识。在本篇文章中,我们将解释一些故障排除技巧,以帮助缩小问题范围并进行纠正。只要您拥有 LDAP 树/林的映射,本文档应该可以帮助用户使用其 LDAP 凭据登录。
配置设置
要配置 Ansible Tower 以进行 LDAP 身份验证,请导航到“设置”(齿轮图标)并转到“配置 Tower”部分。这些配置设置中我们关注的区域是“身份验证”,子类别应设置为“LDAP”。
主要关注的字段包括:
- LDAP 服务器 URI
- 绑定 DN 和密码
- 用户/组搜索
其他字段允许您优化 LDAP 搜索以减少生产中使用的资源或映射您的组织。
LDAP URI 只是 LDAP 服务器的 IP 或主机名,前面加上协议 (ldap://
)。
\
绑定 DN 将是一个用户凭据和密码(后跟组和域),具有读取 LDAP 结构的权限。
优化用户搜索
Ansible Tower 能够连接到 LDAP 服务器后,优化用户搜索即可完成配置。用户搜索条目将与位置和范围指定的模式匹配。在本例中,用户 ID 是 sAMAccountName 值(而不是 uid),因为搜索针对的是 Active Directory 树。
用户和组搜索
用户和组搜索可能是需要进行最多故障排除的地方,具体取决于目录结构的复杂程度。使用 openldap 软件包中的 ldapsearch 工具来构建针对 LDAP 服务器的搜索。从基本搜索开始,然后逐步深入以优化您的搜索。
ldapsearch -x -H ldap://10.10.10.254 -D "CN=jarvis,CN=Users,DC=shield,DC=team" -w 01Password! -b "cn=Users,dc=shield,dc=team"
此搜索是通用的,它将在指定位置 ((-b "cn=Users,dc=shield,dc=team")
) 列出结果,该位置与您针对服务器使用的 LDAP 搜索范围匹配。
LDAP Require Group 和 LDAP Deny Group 字段用于添加单个条目,通过单个组缩小搜索范围。LDAP User DN Template 字段将范围缩小到您在字段中输入的格式。在配置页面中的 LDAP User Search 字段中使用:
- SCOPE_SUBTREE:递归搜索目录树
- SCOPE_ONELEVEL:仅指定在树中向下搜索一层
- SCOPE_BASE:仅搜索基本 DN 中指定的那一层
使用 LDAP 搜索工具返回的结果来选择要搜索的值,例如:uid 或 sAMAccountName & group 或 groupOfNames。值得注意的是,LDAP User DN Template 将覆盖您的 LDAP User Search,因此在设置时只使用其中一个。
适用于 Windows/AD 管理员
这些步骤为登录 LDAP 用户的 Ansible Tower 设置了单点登录。针对连接到 LDAP 的主机的 Ansible Tower 身份验证配置将在“凭据”部分完成,并且对 Ansible 适用于 Windows 主机的身份验证也适用相同的注意事项。注意事项包括在主机上准备 WinRM 以接受连接。在准备和针对 Active Directory 中的 Windows 主机运行作业之前,请确保已正确设置凭据!
用户属性映射
最后,在测试 LDAP 身份验证时,务必花一些时间来处理属性用户和组织映射。LDAP User Attribute Map 是将 LDAP 属性映射到 Ansible Tower 属性的地方。例如:名字、姓氏、电子邮件等。在本例中,电子邮件属性映射到正在使用的 Active Directory 服务器中的 [userPrincipalName]。对于大多数 LDAP 布局,默认值为“mail”,但您需要了解您的结构才能进行相应映射。
LDAP User Flags By Group 字段可用于快速缩小映射范围。例如,以下示例中,属于名为“secret”的 OU 的用户映射到 Ansible Tower 中的超级用户组
将映射到 Ansible Tower 中的团队和组织时,更复杂的映射也会变得更加复杂。正在使用的示例包含一个组织,其中组织管理员定义为名为“secret”的 OU,该 OU 在 User Flags By Group 中进行了匹配。
{ "Shield": { "admins": [ "ou=secret,dc=shield,dc=team" ], "remove_admins": false, "remove_users": false, "users": true } }
使用 LDAP Team Map 字段将用户分配给团队。以下示例中的简单 LDAP 数据库将两个组映射到同一组织中的两个相应团队。
{ "secret": { "organization": "Shield", "users": "OU=secret,DC=shield,DC=team", "remove": false }, "avengers": { "organization": "Shield", "users": "OU=avengers,DC=shield,DC=team", "remove": false } }
将用户和组映射到 Ansible Tower 的难度将根据 LDAP 数据库布局而有所不同。使用 LDAP 搜索命令优化您的组查询,并在 Ansible Tower 中相应地进行匹配。
总结
- 要对登录 Ansible Tower 的 LDAP 用户进行身份验证,请使用:LDAP 服务器 URI、绑定 DN & 密码以及用户和组搜索
- 使用 LDAP User DN Template 会覆盖 User Search
- 使用 LDAP Require Group 和/或 LDAP Deny Group 减少 Ansible Tower 搜索的组数
- Ansible Tower 中的 LDAP 用户属性在 LDAP User Attribute Map 中定义
- 使用 LDAP User Flags By Group 在 Ansible Tower 中设置 LDAP 用户标志
- LDAP 中的组分别映射到 LDAP Organization Map 和 LDAP Team Map 中的组织或团队