LDAP:创建具有有限权限的绑定用户

LDAP:创建具有有限权限的绑定用户

我需要绑定到 OpenLDAP 服务器来验证用户身份,但我不希望这个低权限或“委派管理员”能够看到比严格必要的更多的属性。

如何使用白名单减少绑定用户可以看到的属性?哪些属性对于验证用户身份是必需的?

例如,这个特定的绑定用户不需要查看NTPassword,我认为其他属性如主目录等。

这是我目前所做的:

  1. 我已禁用匿名绑定:

    # disable anon bind
    dn: cn=config
    changetype: modify
    add: olcDisallows
    olcDisallows: bind_anon
    
    dn: cn=config
    changetype: modify
    add: olcRequires
    olcRequires: authc
    
    dn: olcDatabase={-1}frontend,cn=config
    changetype: modify
    add: olcRequires
    olcRequires: authc
    
  2. 我创建了一个“应用程序”OU 和一个“gitlab”用户:

    # file: applications.ldif
    dn: ou=Applications,dc=example,dc=com
    objectclass: top 
    objectClass: organizationalunit
    ou: Applications
    
    dn: cn=gitlab,ou=Applications,dc=example,dc=com
    cn: gitlab
    objectClass: simpleSecurityObject
    objectClass: organizationalRole
    userPassword: {CRYPT}.....
    
  3. 为了创建用户,我使用了 LDAP 管理员用户:

    ldapadd -xvvv -f applications.ldif -D 'cn=admin,dc=example,dc=com' -W
    
  4. 为了限制“gitlab”权限,我尝试这样做:

    # file: give-applications-access.ldif
    dn: cn=config
    changetype: modify
    # allow Applications (e.g. GitLab) access to userPassword
    access to dn.chidren="ou=People,dc=example,dc=com" attrs=userPassword
      by dn.exact="ou=Applications,dc=eaxmple,dc=com" read
    
  5. 然后我习惯ldapmodify应用以前的 LDIF:

    ldapmodify -xvvv  -D 'cn=admin,dc=example,dc=com' -W -f give-applications-access.ldif
    

现在我可以成功地ou=People从 gitlab验证用户身份。但是,如果我使用例如jxplorer或用户ldapsearch凭据gitlab,我可以看到所有用户属性除了用户密码:

ldapsearch -h ldaps://ldap.example.com -p 636 -LLL -D 'cn=gitlab,ou=Applications,dc=example,dc=com' -s base -b "ou=People,dc=example,dc=com"  -s sub -W "(objectclass=*)" | grep -i userpassword | wc -l
0

这是怎么回事?我猜 gitlab 正在使用它sambaNTPassword进行身份验证。但我认为attrs=userPassword它是只读的,现在它甚至不在属性中。

抱歉粘贴了所有命令 - 我将它们留在这里,希望其他人会觉得这很有用。我发现的大多数文档都描述了每个可用选项,但没有提供任何适用于最新版本的 OpenLDAP 的好示例;并且大多数可用示例涉及编辑 slapd.conf,而不是“新”数据库(cn=config)类型,因此很难理解什么是相关的。

更新-当前 ACL 是:

olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read

我已经关注这个答案读取我例子中的 ACL {0}mdbldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config 'olcDatabase={1}mdb'

相关内容