LDAPの問題を最もよく解決する方法は?

LDAPの問題を最もよく解決する方法は?

LDAPSを介して認証するようにRed Hat Ansible Towerを設定しようとしています。 LDAPS設定を構成するWeb GUIがありますが、これをテストする唯一の方法はldapsearchCLIユーティリティを介することです。このプロジェクトを始める前に、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

accessgroupansiblegroup実際のユーザー(たとえば、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

追加の質問と回答

追加文書

おすすめ記事