LDAPSを介して認証するようにRed Hat Ansible Towerを設定しようとしています。 LDAPS設定を構成するWeb GUIがありますが、これをテストする唯一の方法は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
。 「LDAPサーバーURI」、「LDAPバインディングDN」、および「LDAPグループタイプパラメータ」をタワーとして-H
「LDAPグループタイプパラメータ」に設定しようとしましたが、成功しませんでした。-D
-b
accessgroup
ansiblegroup
実際のユーザー(たとえば、user1
および)を含む追加のOU呼び出しがありますが、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
。
追加の質問と回答
追加文書