如何通过 LDAP 组(使用 LDAP 搜索过滤器)限制对 Gitlab 的访问?

Set*_* II 7 ldap gitlab

我有一个正在运行的带有 LDAP 身份验证的 Gitlab CE 安装。现在我想根据组成员身份限制访问。

该选项user_filter似乎是可以选择的选项。但是,我似乎无法根据组成员身份允许任何人登录。

我尝试的是这个(gitlabaccess应该允许登录的组):

user_filter: '(&(objectclass=group)(samaccountname=gitlabaccess))'
Run Code Online (Sandbox Code Playgroud)

或者:

user_filter: '(memberOf=cn=gitlabaccess,DC=my,DC=domain,DC=com)'
Run Code Online (Sandbox Code Playgroud)

文件指出以下,但它也没有工作,我不知道这些数字应该是什么:

user_filter: '(memberOf:1.2.840.113556.1.4.1941:=cn=gitlabaccess,DC=my,DC=domain,DC=com)'
Run Code Online (Sandbox Code Playgroud)

特定用户的工作方式如下:

user_filter: '(&(objectclass=user)(samaccountname=jon.doe))'
Run Code Online (Sandbox Code Playgroud)

Gitlab CE 版本 9.5.5 从综合包安装。

如何根据 LDAP 组成员身份限制对 Gitlab 的访问?

Set*_* II 4

我想到了。您需要指定包含所有 OU 的组的完整路径。就我而言,这是:

user_filter: '(&(objectClass=user)(memberOf=CN=gitlabaccess,OU=mail-distribution-groups,OU=staff,DC=my,DC=domain,DC=com))'
Run Code Online (Sandbox Code Playgroud)

正如评论中指出的,上面的查询仅返回该组的直接成员。如果您还想包含嵌套组的成员,则必须像这样:1.2.840.113556.1.4.1941:添加memberOf

user_filter: '(&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=gitlabaccess,OU=mail-distribution-groups,OU=staff,DC=my,DC=domain,DC=com))'
Run Code Online (Sandbox Code Playgroud)

如果您想添加特定用户,请使用以下命令:

user_filter: '(|(&(objectClass=user)(memberOf=CN=gitlabaccess,OU=mail-distribution-groups,OU=staff,DC=my,DC=domain,DC=com))(&(objectClass=user)(sAMAccountName=jon.doe)))'
Run Code Online (Sandbox Code Playgroud)

  • 文档示例中的“数字”实际上在文档链接中的示例下方进行了解释。这是一个过滤器修改,告诉 AD 您希望该组的直接*和*嵌套成员有效。您现在的答案将只允许该组的直接成员。 (2认同)