Ldap

為什麼所有群組都將所有使用者顯示為具有 Google 安全 LDAP 的成員?

  • July 31, 2019

啟用並配置 SSSD 以使用 Google 的 Secure LDAP 服務後,通過 查詢時getent group,所有 G-Suite 組都將所有 G-Suite 使用者顯示為成員:

$ getent group admin
admin:*:202851646:muru,user1,user2,....
$ getent group jira-users
admin:*:202851646:user5,user3,....

所有使用者都在場,但順序不同。

具體來說,Google LDAP 日誌顯示 SSSD 使用以下查詢(站點已編輯):

(&(memberOf:1.2.840.113556.1.4.1941:=cn=all,ou=Groups,dc=<site>,dc=com)(objectClass=posixAccount))

事實上,如果我使用與 相同的查詢ldapsearch,所有帳戶都會在結果中返回。

我怎樣才能解決這個問題?

這似乎是由於G-Suite 推薦的 sssd 配置中的這些行:

ldap_groups_use_matching_rule_in_chain = true
ldap_initgroups_use_matching_rule_in_chain = true

刪除這些,組開始正確顯示成員(嗯,大多數情況下,具有偽實體“Everyone”作為成員的組只顯示明確列出的成員)。


具體來說,這是由於 ldap_groups_use_matching_rule_in_chain. 來自man sssd-ldap

ldap_groups_use_matching_rule_in_chain

此選項告訴 SSSD 利用特定於 Active Directory 的功能,該功能可以加快對具有復雜或深層嵌套組的部署的組查找操作。在最常見的情況下,最好禁用此選項。它通常只在非常複雜的嵌套上提供性能提升。

如果啟用此選項,SSSD 將在初始連接期間檢測到伺服器支持它時使用它。所以這裡的“真”本質上意味著“自動檢測”。

注意:目前已知此功能僅適用於 Active Directory 2008 R1 及更高版本。有關詳細資訊,請參閱 MSDN(TM) 文件2

預設值:假

並檢查 MSDN 文件:

  • 1.2.840.113556.1.4.1941 LDAP_MATCHING_RULE_IN_CHAIN 此規則僅限於適用於 DN 的過濾器。這是一個特殊的“擴展”匹配運算符,它將對像中的祖先鏈一直遍歷到根,直到找到匹配項。

並且1.2.840.113556.1.4.1941是 sssd 在查詢中使用的規則。

我的 LDAP 查詢不夠好,無法判斷 SSSD 的查詢或 Google 的 LDAP 服務中的哪一個已損壞。目前還不清楚我應該如何在幫助中心報告這些技術缺陷,所以我沒有向Google報告。

引用自:https://serverfault.com/questions/977376