我正在尝试将 Red Hat Ansible Tower 配置为通过 LDAPS 进行身份验证。它有一个 Web GUI 来配置 LDAPS 设置,但测试它的唯一方法是通过ldapsearch
CLI 实用程序。在把这个项目扔到我的腿上之前,我从未使用过 LDAPS。
我思考 ldapsearch -x -H ldaps://myldapserver:ldapport -D "CN=ansible,OU=blah,DC=blah" -b "OU=ansiblegroup,DC=blah" -w passwd
返回以下内容:
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntires: 2
说实话,我不知道这些结果意味着什么,但我认为它有效,因为它说Success
。我尝试将-H
as Tower 的“LDAP 服务器 URI”、-D
“LDAP 绑定 DN”和-b
“LDAP 组类型参数”设置为“LDAP 组类型参数”,但没有成功。
accessgroup
其中有一个额外的 OU 调用ansiblegroup
,其中包含实际用户(比方说user1
和user2
),但如果我将其更改为,-b "OU=accessgroup,OU=ansiblegroup,DC=blah
则会得到以下内容:
search: 2
result: 32 No such object
matchedDN: OU=ansiblegroup,DC=blah"
那么我该去哪里呢?除了 1,000 页的 LDAP 手册之外,还有什么可能有用的东西吗?
答案1
假设有以下配置
TOWER_URL="tower.example.com";
curl --silent --user "${ACCOUNT}:${PASSWORD}" --location "https://${TOWER_URL}/api/v2/settings/ldap" | jq '.'
导致输出为
{
"AUTH_LDAP_SERVER_URI": "ldaps://ad.example.com:636",
"AUTH_LDAP_BIND_DN": "CN=tower_ldap,OU=service_accounts,OU=accounts,DC=example,DC=com",
"AUTH_LDAP_BIND_PASSWORD": "$encrypted$",
"AUTH_LDAP_START_TLS": false,
"AUTH_LDAP_CONNECTION_OPTIONS": {
"OPT_REFERRALS": 0,
"OPT_NETWORK_TIMEOUT": 30
},
"AUTH_LDAP_USER_SEARCH": [
"DC=example,DC=com",
"SCOPE_SUBTREE",
"(sAMAccountName=%(user)s)"
],
"AUTH_LDAP_USER_DN_TEMPLATE": null,
"AUTH_LDAP_USER_ATTR_MAP": {
"first_name": "givenName",
"last_name": "sn",
"email": "userPrincipalName"
},
"AUTH_LDAP_GROUP_SEARCH": [
"OU=groups,DC=example,DC=com",
"SCOPE_SUBTREE",
"(objectClass=group)"
],
"AUTH_LDAP_GROUP_TYPE": "NestedActiveDirectoryGroupType",
"AUTH_LDAP_GROUP_TYPE_PARAMS": {},
"AUTH_LDAP_REQUIRE_GROUP": "CN=tower_user,OU=resource_groups,OU=groups,DC=example,DC=com",
"AUTH_LDAP_DENY_GROUP": null,
"AUTH_LDAP_USER_FLAGS_BY_GROUP": {},
"AUTH_LDAP_ORGANIZATION_MAP": {},
"AUTH_LDAP_TEAM_MAP": {},
"AUTH_LDAP_1_SERVER_URI": "",
"AUTH_LDAP_1_BIND_DN": "",
"AUTH_LDAP_1_BIND_PASSWORD": "",
"AUTH_LDAP_1_START_TLS": true,
"AUTH_LDAP_1_CONNECTION_OPTIONS": {
"OPT_REFERRALS": 0,
"OPT_NETWORK_TIMEOUT": 30
},
...
name
您可以按如下方式查询目录
ldapsearch -h ad.example.com -p 389 \
-D "tower_ldap" -x -w "${LDAP_PASSWORD}" \
-b "DC=example,DC=com" \
-s sub "(& (memberOf:1.2.840.113556.1.4.1941:=CN=tower_user,OU=resource_groups,OU=groups,DC=example,DC=com) )" name \
| grep "name:" | cut -d " " -f 2-
cn
仅获取允许登录或进一步搜索的用户的用户名
... cn | grep "cn:" | cut -d " " -f 2-
... cn | grep "cn:" | cut -d " " -f 2- | wc -l
请注意
"AUTH_LDAP_REQUIRE_GROUP": "CN=tower_user,OU=resource_groups,OU=groups,DC=example,DC=com"
包含仅作为成员的角色组
CN=tower_user_role,OU=role_groups,OU=groups,DC=example,DC=com
因此查询NestedActiveDirectoryGroupType
。
进一步问答
进一步的文档