1. 程式人生 > 實用技巧 >在Ldap中新增多組用於不同的平臺認證

在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屬性來實現不同分組驗證登陸到不同的平臺。