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