倪葉青



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