封尘网

让学习成为一种习惯!

在Ldap中添加多组用于不同的平台认证

接上一篇centos7以Docker方式运行的ldap服务,本文记录如何在ldap中添加多个不同的组和用户来实现不同平时使用不同组下的用户登陆。

本次操作全在LDAP Account Manager平台上实现。

提示
文中所使用的域名仅是通过/etc/hosts中配置实现,所以在不同的机器中要添加一个对应的记录即可。

完成上篇的安装后,登陆系统时默认会提示创建两个用组,People和group,这两组默认情况下所有创建的用户都会在People下,而我们创建的组都保存在group下。

接下来看操作吧。

新建一个用户Groups

这个中文翻译有点,呃,看得懂就算了。

点击菜单Groups,选择New Group创建

保存后,接下来创建几个测试用户。

一般带"*"号的填写,其它的都可以不写,建议也可以把邮箱地址写上,因为我们只建了一个用户组,所以默认用的户都在这个组ldapuser内。给每个用户设置一个密码后,保存即可。

然后点击右上角的Tree view就以看到以下界面。

这里创建三个Object属性为: groupOfUniqueNames的组,分别harbor,jenkins和gitgroup。

点击Create new entry here进入后选择Default,然后选择Object classes类型为groupOfUniqueNames,点击proceed进入下一步。

选择相应的Object属性

填写cn名称(这里暂称为组名)

再次确认提交

1、RDN这里选择CN
2、cn 这里定义组名harbor
3、uniqueMember这里因为是必填,所以先选择一个用户,属于此组的。
4、description描述,自己备注一下好区分
5、ou选择属于哪个OU下group
6、Create object
7、再次询问是否创建,选择commit即可。

剩余jenkins和gitgroup我就不写了,同样的方法创建。

完成三个组的其本效果如下,这里为了方便测试,每个用户都只属于其它一个组。

说明
因为要通过ldap来分组实现不同的组来授权到不同的平台这样需要memberof的一个功能,那么我们怎么知道这个openldap镜像是否支持memberof的功能。

为了更直观,我们回到机器上使用命令查看一下。

  • 查看openldap是否有支持并加载到相应的模块
    [root@ldap ~]# docker exec -it openldap slapcat -n 0 | grep olcModuleLoad
    olcModuleLoad: {0}back_mdb
    olcModuleLoad: {1}memberof
    olcModuleLoad: {2}refint
    
    看到上面的返回数据就知道是支持了。
  • 接下来直接点,查看openldap服务下的dn配置都有哪些。
    [root@ldap ~]# docker exec openldap ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn 
    dn: cn=config
    dn: cn=module{0},cn=config
    dn: cn=schema,cn=config
    dn: cn={0}core,cn=schema,cn=config
    dn: cn={1}cosine,cn=schema,cn=config
    dn: cn={2}nis,cn=schema,cn=config
    dn: cn={3}inetorgperson,cn=schema,cn=config
    dn: cn={4}ppolicy,cn=schema,cn=config
    dn: cn={5}dhcp,cn=schema,cn=config
    dn: cn={6}dnszone,cn=schema,cn=config
    dn: cn={7}mail,cn=schema,cn=config
    dn: cn={8}mmc,cn=schema,cn=config
    dn: cn={9}openssh-lpk,cn=schema,cn=config
    dn: cn={10}quota,cn=schema,cn=config
    dn: cn={11}radius,cn=schema,cn=config
    dn: cn={12}samba,cn=schema,cn=config
    dn: cn={13}zarafa,cn=schema,cn=config
    dn: olcBackend={0}mdb,cn=config
    dn: olcDatabase={-1}frontend,cn=config
    dn: olcDatabase={0}config,cn=config
    dn: olcDatabase={1}mdb,cn=config
    dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
    dn: olcOverlay={1}refint,olcDatabase={1}mdb,cn=config
    

通过上的可以看到,该有的都已经有了。如果此时你再通过写一个配置文件,然后再使用命令导入的话就会提示错误,说相应的dn已经存在之类的。所以省去了写配置再导入了的步骤了。

我们再查看OU列表,可以看到刚创建的几个组(称为组不太规范,大概懂就算了)下都有一个uniqueMember属性,并带有一个用户。

[root@ldap ~]# docker exec openldap ldapsearch -LLL -x -H ldap:/// -D "cn=admin,dc=sotemalltest,dc=com" -b "dc=sotemalltest,dc=com" "(ou=*)" -w redhat
dn: ou=group,dc=sotemalltest,dc=com
objectClass: organizationalUnit
ou: group

dn: ou=People,dc=sotemalltest,dc=com
objectClass: organizationalUnit
ou: People

dn: cn=harbor,ou=group,dc=sotemalltest,dc=com
cn: harbor
description:: aGFyYm9y5LuT5bqT6K6k6K+B55So5oi357uE
objectClass: groupOfUniqueNames
objectClass: top
ou: group
uniqueMember: cn=jack,ou=People,dc=sotemalltest,dc=com

dn: cn=jenkins,ou=group,dc=sotemalltest,dc=com
cn: jenkins
description:: amVua2luc+eUqOaIt+e7hA==
objectClass: groupOfUniqueNames
objectClass: top
ou: group
uniqueMember: cn=swper,ou=People,dc=sotemalltest,dc=com

dn: cn=gitgroup,ou=group,dc=sotemalltest,dc=com
cn: gitgroup
description:: Z2l055So5oi357uE
objectClass: groupOfUniqueNames
objectClass: top
ou: group
uniqueMember: cn=jarry,ou=People,dc=sotemalltest,dc=com

至此,LDAP Account Manager平台上的操作就暂告一段落了,接下来我们就靠这个uniqueMember属性来实现不同分组验证登陆到不同的平台。

提醒:本文最后更新于 80 天前,文中所描述的信息可能已发生改变,请谨慎使用。