为什么所有群组都显示所有用户为 Google Secure LDAP 的成员?

为什么所有群组都显示所有用户为 Google Secure LDAP 的成员?

启用和配置 SSSD 以使用 Google 的安全 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,则所有帐户都会在结果中返回。

我怎样才能解决这个问题?

答案1

似乎是由于这些行G-Suite 针对 sssd 的推荐配置

ldap_groups_use_matching_rule_in_chain = true
ldap_initgroups_use_matching_rule_in_chain = true

删除这些后,组就会开始正确显示成员(嗯,大多数情况下,具有伪实体“每个人”作为成员的组仅显示明确列出的成员)。


具体来说,这是由于 ldap_groups_use_matching_rule_in_chain。从man sssd-ldap

ldap_groups_use_matching_rule_in_chain

此选项告知 SSSD 利用 Active Directory 特定的功能,该功能可能会加快具有复杂或深层嵌套组的部署中的组查找操作。在大多数情况下,最好将此选项禁用。它通常只会在非常复杂的嵌套上提供性能提升。

如果启用此选项,SSSD 将在初始连接时检测到服务器支持此功能,并使用该功能。因此,此处的“True”本质上意味着“自动检测”。

注意:目前已知此功能仅适用于 Active Directory 2008 R1 及更高版本。请参阅 MSDN(TM) 文档2更多细节。

默认值:False

并检查 MSDN 文档:

  • 1.2.840.113556.1.4.1941LDAP_MATCHING_RULE_IN_CHAIN 此规则仅限于适用于 DN 的过滤器。这是一个特殊的“扩展”匹配运算符,它会沿着对象中的祖先链一直走到根,直到找到匹配项。

1.2.840.113556.1.4.1941sssd 在查询中使用的规则。

我对 LDAP 查询不太熟悉,无法判断 SSSD 查询或 Google 的 LDAP 服务中哪个出现了问题。我不清楚如何在帮助中心报告此类技术缺陷,所以我没有向 Google 报告。

相关内容