倪葉青
摘要:高校數(shù)字化校園網(wǎng)建設(shè)中,通過OpenLDAP實(shí)現(xiàn)用戶信息、身份的統(tǒng)一存儲(chǔ)、檢索是統(tǒng)一身份認(rèn)證的常見場景。由于高校用戶數(shù)量多,用戶并發(fā)數(shù)較大,需要考慮通過OpenLDAP的syncrepl同步機(jī)制實(shí)現(xiàn)數(shù)據(jù)統(tǒng)一,輔以相應(yīng)acl安全設(shè)置,搭配前端nginx負(fù)載均衡等設(shè)備實(shí)現(xiàn)校園統(tǒng)一身份認(rèn)證的高可用性服務(wù)。
Abstract: In the construction of digital campus network in colleges and universities, the unified storage and retrieval of user information and identity through OpenLDAP is a common scenario for unified identity authentication. Due to the large number of college users and the large number of concurrent users, it is necessary to consider to realize data synchronization through the syncrepl synchronization mechanism of OpenLDAP, supplemented by the corresponding acl security settings, and realize the high-availability service for campus unified identity authentication with devices such as front-end nginx load balancing.
關(guān)鍵詞:OpenLDAP;高可用;syncrepl;負(fù)載均衡
Key words: OpenLDAP;high availability;syncrepl;load balancing
中圖分類號(hào):TP202? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào):1006-4311(2019)35-0284-03
0? 引言
在目前高校數(shù)字化校園網(wǎng)建設(shè)中,統(tǒng)一身份認(rèn)證已經(jīng)成為了必不可少的基礎(chǔ)服務(wù)之一,實(shí)現(xiàn)用戶信息、密碼、身份的統(tǒng)一存儲(chǔ)、統(tǒng)一檢索、統(tǒng)一管理是統(tǒng)一身份認(rèn)證的基本功能要求。使用輕量目錄訪問協(xié)議(LDAP:Light Directory Access Protocol)產(chǎn)品提供的目錄服務(wù)實(shí)現(xiàn)統(tǒng)一身份認(rèn)證服務(wù)是大家的常用選擇,而OpenLDAP就是其中之一。
1? OpenLDAP簡介
LDAP是由密歇根大學(xué)研發(fā)的一種的目錄訪問協(xié)議,其中數(shù)據(jù)以對(duì)象(Object)目錄方式組織,對(duì)象由可視為鍵、值對(duì)映射關(guān)系的屬性(attribute)信息組成。LDAP服務(wù)具有遠(yuǎn)高于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)查詢性能,但寫入性能較差,修改操作也不支持事務(wù)機(jī)制,所以LDAP服務(wù)更適合具有大量數(shù)據(jù)讀取、查詢操作,而寫操作較少的業(yè)務(wù)場景。
LDAP具有X.500和LDAP兩個(gè)標(biāo)準(zhǔn),其典型產(chǎn)品包括OpenLDAP、MicroSoft AD,ApacheDS等;其中OpenLDAP是一種基于X.500標(biāo)準(zhǔn)并支持TCP/IP網(wǎng)絡(luò)協(xié)議的開源軟件實(shí)現(xiàn)。
目前OpenLDAP2.4默認(rèn)后端服務(wù)器已經(jīng)修改為MDB(Memory-Mapped Database,內(nèi)存映射數(shù)據(jù)庫),用戶也可使用傳統(tǒng)的Berkeley DB,甚至Mysql等傳統(tǒng)關(guān)系數(shù)據(jù)庫。其支持的操作主要有查詢操作(ldapsearch),更新操作(ldapupdate),增加操作(ldapadd),刪除操作(ldapdelte)等。
在OpenLDAP2.4版本中,默認(rèn)支持配置數(shù)據(jù)庫(cn=config)進(jìn)行動(dòng)態(tài)配置,也可通過傳統(tǒng)的配置(slapd.conf)文件方式進(jìn)行配置。
2? OpenLDAP同步模式
OpenLDAP目前采用syncrepl作為同步復(fù)制引擎。Syncrepl以slapd線程形式常駐消費(fèi)者進(jìn)程中,使消費(fèi)者LDAP服務(wù)器保持有DIT片段(目錄信息樹)影子拷貝,使用LDAP內(nèi)容同步協(xié)議(LDAP Content Synchronization protocol)作為服務(wù)器之間數(shù)據(jù)傳輸協(xié)議定期或根據(jù)更新下拉目錄樹內(nèi)容來保持LDAP數(shù)據(jù)的同步。
LDAP內(nèi)容同步協(xié)議(RFC4533)采用refreshOnly(刷新)和refreshAndPersist(刷新并保持)兩種同步機(jī)制,兩種同步機(jī)制均由客戶端服務(wù)器發(fā)起請(qǐng)求,所不同的是同步完成后進(jìn)行的操作。在refreshOnly機(jī)制,消費(fèi)者服務(wù)器(客戶端)采用拉(pull)模式同步,相關(guān)請(qǐng)求信息不必維護(hù)和跟蹤,通過請(qǐng)求本身的cookie來實(shí)現(xiàn)同步。在refreshAndPersist機(jī)制,生產(chǎn)者服務(wù)器(服務(wù)端)采用推(push)模式同步,服務(wù)端維護(hù)對(duì)請(qǐng)求了一個(gè)持久性搜索的而消費(fèi)者服務(wù)器的跟蹤,并且當(dāng)提供者復(fù)制內(nèi)容修改的時(shí)候向他們發(fā)生必要的更新,服務(wù)端負(fù)責(zé)發(fā)送相應(yīng)的改變數(shù)據(jù),而客戶端負(fù)責(zé)接受并處理本地ldap條目。Cookie是服務(wù)端計(jì)算(查詢本地條目)的依據(jù),在每種模式中,都涉及到如何計(jì)算數(shù)據(jù)的變化,包括:添加的數(shù)據(jù)、修改的數(shù)據(jù)以及刪除的數(shù)據(jù)。Ldap的每個(gè)條目包含了時(shí)間信息,包括生成時(shí)間戳(createTimestamp)和修改時(shí)間戳(modifyTimestamp)。對(duì)于添加和修改的數(shù)據(jù),服務(wù)端根據(jù)客戶端傳送來的cookie(包含時(shí)間信息)計(jì)算得到,并將這些條目信息與客戶端進(jìn)行同步。
OpenLDAP服務(wù)器間要實(shí)現(xiàn)同步,首要要實(shí)現(xiàn)6點(diǎn)基本要求:①OpenLDAP服務(wù)器之間要求保持時(shí)間同步。②服務(wù)器上安裝的OpenLDAP軟件包版本要求一致。③各OpenLDAP服務(wù)節(jié)點(diǎn)之間域名可互相解析。④各OpenLDAP服務(wù)器需提供相同的配置及DIT(目錄信息樹)信息。⑤各OpenLDAP服務(wù)器數(shù)據(jù)條目需保持一致。⑥各服務(wù)器上Schema文件需保持一致。
OpenLDAP 2.4版本目前主要擁有5種同步模式。
①Syncrepl同步(全量)復(fù)制模式。Syncrepl同步模式下slave(從)服務(wù)器將以pull(拉)模式從master(主)服務(wù)器同步目錄樹。當(dāng)主服務(wù)器中某些條目修改屬性時(shí),從服務(wù)器會(huì)整體同步這些條目,修改所有條目信息。
②Delta-syncrepl replication 基于日志(增量)同步模式。相對(duì)Syncrepl全量同步模式帶來的低效問題,通過基于changelog日志同步,從服務(wù)器可根據(jù)日志進(jìn)行相應(yīng)的修改操作,在保證主服務(wù)器與從服務(wù)器數(shù)據(jù)一致的同時(shí),提高數(shù)據(jù)同步效率,減少同步資源消耗。這種同步模式下,對(duì)服務(wù)器main DB和changelog DB都要做好備份、恢復(fù)工作,以保證數(shù)據(jù)一致性。
③N-Way Multi-Master replication 多主多路同步模式。N-Way Multi-Master replication實(shí)現(xiàn)了多臺(tái)主(master)服務(wù)器之間進(jìn)行LDAP目錄信息樹同步的目標(biāo),服務(wù)器可部署在不同網(wǎng)絡(luò),實(shí)現(xiàn)高可用性的LDAP服務(wù)器,進(jìn)行故障切換,更好的提供了LDAP服務(wù)器冗余性,避免了單點(diǎn)故障。
④MirrorMode replication 鏡像同步模式。鏡像同步模式實(shí)現(xiàn)多服務(wù)器間的高可用性和單臺(tái)主服務(wù)器持續(xù)保證服務(wù)的混合配置,可視作為雙機(jī)熱備工作模式。鏡像同步模式最多只允許兩臺(tái)主服務(wù)之間互相以push(推)模式進(jìn)行數(shù)目錄樹同步,通過前端服務(wù)器的切換,當(dāng)一臺(tái)主服務(wù)器發(fā)生故障時(shí),另一臺(tái)服務(wù)器可即時(shí)切換,但同時(shí)只會(huì)對(duì)一臺(tái)服務(wù)器進(jìn)行寫操作,故不能視為多主機(jī)模式。本文以此為例介紹OpenLDAP服務(wù)器間的同步。(圖3)
⑤Syncrepl Proxy Mode 代理同步模式。代理同步模式用來替代傳統(tǒng)的slurpd同步機(jī)制,解決了需要人為干涉同步數(shù)據(jù)不一致的問題,解決了在增加節(jié)點(diǎn)時(shí)需要停機(jī)的問題等。
3? OpenLDAP的負(fù)載均衡實(shí)現(xiàn)
OpenLDAP目前采用syncrepl實(shí)現(xiàn)了服務(wù)器之間的目錄樹信息同步,提供了服務(wù)的高可用性,但不管是N-Way Multi-Master replication 多主多路同步模式還是MirrorMode replication 鏡像同步模式,均還需要前端負(fù)載均衡服務(wù)配合,以實(shí)現(xiàn)真正的性能拓展。
本文以nginx作為負(fù)載均衡服務(wù)器,以keepalived作為狀態(tài)監(jiān)測服務(wù)器進(jìn)行示例說明;如條件允許,也可以使用LVS或F5硬件負(fù)載均衡設(shè)備進(jìn)行相應(yīng)配置。
nginx.conf配置文件說明:
Keepalived配置文件說明:
4? OpenLDAP的安全設(shè)置等相關(guān)配置
作為學(xué)校統(tǒng)一身份認(rèn)證基礎(chǔ)設(shè)施的OpenLDAP服務(wù),存有大量師生用戶的敏感信息,由于使用戶面廣,對(duì)接應(yīng)用系統(tǒng)眾多,必須重視OpenLDAP服務(wù)的安全防護(hù)工作。首先必須對(duì)OpenLDAP服務(wù)器管理員賬號(hào)和密碼進(jìn)行修改,并保證足夠的密碼強(qiáng)壯度,并且一定要以密文形式進(jìn)行保持和傳輸。
其次由于LDAP往往對(duì)接了很多信息化應(yīng)用系統(tǒng),難于按理想要求進(jìn)行定期密碼修改,故需要進(jìn)行通過ACL列表等方式進(jìn)行安全控制。如:
通過該設(shè)置,就限制了只有本機(jī)和192.168.0.0/24地址段的用戶可對(duì)rootdn進(jìn)行訪問。同時(shí)配合防火墻等安全設(shè)備控制,提供LDAP校園網(wǎng)統(tǒng)一身份認(rèn)證的高可用安全服務(wù)。
參考文獻(xiàn):
[1]OpenLDAP Software 2.4 Administrator's Guide. [EB/OL]. http://www.openldap.org.
[2]郭大勇.Linux/UNIX OpenLDAP實(shí)戰(zhàn)指南[M].北京:人民郵電出版社,2016:174-227.
[3]章松,劉春波.基于LDAP的高可用目錄服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn).[J]軟件,2015,36(12):146-148,157.