葉光芳,肖興楷
贛州銀行股份有限公司,江西贛州,341001
運(yùn)行維護(hù)工作的目標(biāo)是保證生產(chǎn)系統(tǒng)的安全穩(wěn)定運(yùn)行,這是一個繁雜的過程,涉及各式各樣工具與系統(tǒng)平臺的使用,而每個系統(tǒng)都擁有各自的用戶管理與認(rèn)證功能。隨著系統(tǒng)不斷增加,用戶信息的管理成本也不斷提高,此時(shí)容易出現(xiàn)多個系統(tǒng)之間用戶信息冗余、信息不同步的問題。對于運(yùn)維工作人員而言,記憶眾多系統(tǒng)的賬號和口令十分繁雜且容易出錯。為了解決此類問題,我們開始探索搭建企業(yè)內(nèi)部的OpenLDAP,并結(jié)合騰訊藍(lán)鯨智云PaaS平臺開發(fā)一個SaaS應(yīng)用進(jìn)行管理。
軟件即服務(wù)是來自英文Software-as-a-Service,簡稱SaaS。藍(lán)鯨智云是騰訊對外開放的一套運(yùn)維解決方案。這套解決方案永久免費(fèi),并且支持私有云部署,我們的企業(yè)內(nèi)部就是運(yùn)用了該方案進(jìn)行藍(lán)鯨PaaS平臺的私有云部署。該平臺為一個SaaS應(yīng)用從創(chuàng)建到部署、再到后續(xù)的維護(hù)管理提供了完善的自動化和自助化服務(wù),本文所介紹的統(tǒng)一用戶SaaS應(yīng)用(下文簡稱SaaS)就是在該平臺上進(jìn)行開發(fā)部署的。
LDAP(lightweight directory access protocol)即輕量目錄訪問協(xié)議,這是一種標(biāo)準(zhǔn)的目錄服務(wù)技術(shù)[1],由密歇根州(Michigan)大學(xué)推出的基于TCP/IP協(xié)議的LDAP協(xié)議。該協(xié)議對于Internet訪問的支持非常好,并且它還為瀏覽和查找目錄以及內(nèi)容讀取提供了專門的優(yōu)化,使得讀取速度比一般的關(guān)系數(shù)據(jù)庫要快得多[2]。OpenLDAP軟件是LDAP協(xié)議的開源實(shí)現(xiàn),可以與Zabbix、Apache、OpenVPN等眾多應(yīng)用系統(tǒng)集成[3],本文所闡述的SaaS即是基于OpenLDAP進(jìn)行設(shè)計(jì)與開發(fā)。
首先我們需要搭建LDAP服務(wù),安裝OpenLDAP服務(wù)端,修改相關(guān)配置,按照設(shè)計(jì)的字段新建用戶進(jìn)行測試。字段設(shè)計(jì)見表1。
表1 新建用戶字段
用戶通過瀏覽器客戶端輸入賬戶密碼來登錄應(yīng)用系統(tǒng),相應(yīng)系統(tǒng)會請求LDAP服務(wù)器獲取數(shù)據(jù)庫存儲的賬號及密碼信息進(jìn)行驗(yàn)證,驗(yàn)證通過即可成功進(jìn)入系統(tǒng),認(rèn)證過程如圖1所示。
圖1 認(rèn)證過程
在完成LDAP服務(wù)搭建后,可以發(fā)現(xiàn)通過命令行創(chuàng)建用戶的方法極為復(fù)雜,相關(guān)的管理操作同樣復(fù)雜。此時(shí)大多數(shù)用戶會使用工具phpldapadmin進(jìn)行管理,該工具將原本需要進(jìn)行命令行操作的過程轉(zhuǎn)變?yōu)閳D形化操作,但是該工具的設(shè)計(jì)對于我們來說不夠簡潔、易用,這也是制作一個SaaS應(yīng)用進(jìn)行LDAP管理的原因之一。本SaaS應(yīng)用的總體框架結(jié)構(gòu)如圖2所示,接下來將對其進(jìn)行詳細(xì)說明。
圖2 SaaS應(yīng)用的總體框架結(jié)構(gòu)
企業(yè)內(nèi)部有HR系統(tǒng)對員工信息進(jìn)行管理,每天會對組織架構(gòu)和人員信息進(jìn)行卸數(shù)(抽取、轉(zhuǎn)換、加載)成為文本文件,放置在文件交換服務(wù)器中。我們通過調(diào)用藍(lán)鯨作業(yè)平臺快速分發(fā)文件API,將該卸數(shù)文件傳輸?shù)轿覀兊腟aaS服務(wù)器上,確認(rèn)傳輸成功后,將文件進(jìn)行解析并入庫,如圖3所示。通過celery設(shè)定定時(shí)任務(wù),每日定時(shí)進(jìn)行上述操作,從而保證數(shù)據(jù)的每日同步。
圖3 數(shù)據(jù)傳輸流程
LDAP目錄服務(wù)器對于信息的存儲以及目錄服務(wù),主要是通過目錄數(shù)據(jù)庫來進(jìn)行的。為了能夠使用戶對信息進(jìn)行快速查找和定位,目錄數(shù)據(jù)庫對于數(shù)據(jù)的存儲主要是用樹狀的層次結(jié)構(gòu)[4]。本SaaS用戶認(rèn)證信息的LDAP目錄服務(wù)器存儲模型的目錄樹結(jié)構(gòu)如圖4所示。
圖4 LDAP目錄服務(wù)器存儲模型的目錄樹結(jié)構(gòu)
4.4.1 管理員批量開通LDAP賬號
為員工開通LDAP賬戶,設(shè)置默認(rèn)密碼為員工身份證號后六位。前端設(shè)計(jì)為可以批量操作,也可以選擇自動開通某個部門所有員工的LDAP賬戶,當(dāng)該部門有新員工加入時(shí)會觸發(fā)自動開通,并發(fā)送郵件告知新員工。
4.4.2 用戶自助開通LDAP賬號
企業(yè)員工數(shù)量眾多,每一個員工可能在不同的時(shí)間需要開通賬號,如果都通過管理員開通賬號,效率是非常低的。因此我們設(shè)計(jì)了一個自助操作頁面,員工可以自行操作。通過匹配員工的工號與手機(jī)號,即可獲取短信驗(yàn)證碼,進(jìn)行開通賬戶的操作。這將大大降低管理員的工作量,避免低效重復(fù)地工作。
4.4.3 用戶LDAP賬戶的修改與刪除
LDAP賬戶的各個屬性中,大多是由HR系統(tǒng)的數(shù)據(jù)進(jìn)行同步,可以人工修改設(shè)置的只有密碼屬性。在自助操作頁面中也提供了重置密碼功能,使用匹配的工號與手機(jī)號獲取驗(yàn)證碼,可以填寫自定義密碼,也可以不填寫則默認(rèn)身份證號后六位。當(dāng)有員工離職時(shí),在每日同步數(shù)據(jù)的過程中會將此類員工的LDAP賬號刪除,管理員也可以手動刪除LDAP賬號。
4.4.4 擴(kuò)展功能
公司的企業(yè)微信賬號管理,原先是通過企業(yè)微信后臺進(jìn)行手工管理,初始化導(dǎo)入一批新增的用戶時(shí),需手動維護(hù)部門、手機(jī)號、郵箱等信息,且原始賬戶ID設(shè)置為姓名拼音,可能會出現(xiàn)重名的情況。當(dāng)有員工離職時(shí),也需要手工操作刪除,如此管理賬號,容易出錯的同時(shí)也不易于數(shù)據(jù)同步管理。本SaaS已對接員工的基本信息,將企業(yè)微信用戶的管理放在本SaaS中,并不需要大幅度改動SaaS的結(jié)構(gòu),還能夠改善上面提到的問題。
目前的擴(kuò)展功能主要是完成企業(yè)微信用戶的新增與刪除操作。通過調(diào)用企業(yè)微信提供的API新建用戶與部門,新開通的賬號ID使用員工號,并將現(xiàn)存的企業(yè)微信用戶同步到SaaS后端。當(dāng)有員工離職時(shí),將自動刪除其企業(yè)微信。為了統(tǒng)一開通企業(yè)微信賬號的入口,我們將企業(yè)微信端的申請加入設(shè)置為“不允許加入”,只能通過本SaaS,避免出現(xiàn)兩端數(shù)據(jù)不同步。
本SaaS用于管理LDAP賬戶,用戶需要在已接入LDAP的系統(tǒng)中才能使用,接下來將以藍(lán)鯨平臺為例介紹如何對接運(yùn)維系統(tǒng)。藍(lán)鯨平臺從6.0版本開始支持OpenLDAP目錄,只需要通過藍(lán)鯨用戶管理SaaS進(jìn)行用戶目錄的相關(guān)配置,即可同步LDAP用戶至藍(lán)鯨。此過程中,需注意以下幾個問題。
4.5.1 HR系統(tǒng)提供的數(shù)據(jù)不全面
在我們企業(yè)的ITSM流程中,組織架構(gòu)細(xì)化至團(tuán)隊(duì)層級,需要獲得每個員工的直接上級信息;但在HR系統(tǒng)中,組織架構(gòu)僅細(xì)化至部門中心層級,也沒有直接上級信息。因此,我們對SaaS進(jìn)行了小改動:①組織架構(gòu)表新增負(fù)責(zé)人字段,即屬于該組織的員工,其直接上級為該組織負(fù)責(zé)人;②添加新增與編輯組織架構(gòu)的功能,即可以在部門中心層級下新增團(tuán)隊(duì)層級并自由調(diào)整人員。ITSM流程問題解決的同時(shí),還需要確保每日的數(shù)據(jù)同步正確,即同步時(shí)不會將我們在SaaS上新增的組織架構(gòu)及調(diào)整之后的員工信息恢復(fù)至HR系統(tǒng)的架構(gòu),同時(shí)確保員工在更換部門時(shí)能夠?qū)⑿畔⒄M街罶aaS。
4.5.2 藍(lán)鯨6.0的用戶目錄同步不支持自定義字段
在當(dāng)前版本中,企業(yè)微信ID、直接上級都無法通過用戶目錄從OpenLDAP直接同步至藍(lán)鯨。由于SaaS和藍(lán)鯨用戶管理的數(shù)據(jù)庫在同一個MySQL中,于是我們在SaaS中添加定時(shí)任務(wù),通過腳本直接修改藍(lán)鯨用戶管理數(shù)據(jù)庫中的數(shù)據(jù),將企業(yè)微信ID與直接上級插入數(shù)據(jù)庫中。
4.5.3 新LDAP賬號與系統(tǒng)原有賬號之間的過渡
本SaaS上線后,為藍(lán)鯨本地目錄的用戶都開通了新的LDAP賬號,原本用戶具有自己管理的系統(tǒng)業(yè)務(wù)對應(yīng)權(quán)限,但此時(shí)新賬號是沒有相應(yīng)權(quán)限的,這里我們需要通過腳本進(jìn)行權(quán)限同步:①同步權(quán)限中心用戶組,遍歷所有本地用戶信息,通過姓名獲取工號和LDAP賬號,若該LDAP賬號存在便將其加入對應(yīng)原始賬號所屬的用戶組中;②更新CMDB的維護(hù)人信息,通過API更新業(yè)務(wù)信息,兩個賬號同步使用一段時(shí)間確定沒有問題后,即可將老賬戶停用,完成過渡。
至此,藍(lán)鯨平臺接入LDAP用戶體系順利完成,之后陸續(xù)對接了Zabbix、Grafana、知識庫等運(yùn)維管理系統(tǒng),對接方案大同小異。
上述方案充分利用了藍(lán)鯨PaaS平臺提供的良好的SaaS應(yīng)用開發(fā)環(huán)境以及LDAP協(xié)議所具有的相關(guān)特性,企業(yè)中原本分散的員工賬號信息在本SaaS中得到集中管理,通過一個SaaS即可擁有最全、最準(zhǔn)確的員工信息、LDAP賬號信息、企業(yè)微信賬號等各類信息。同時(shí),只需記憶一個LDAP賬號與口令,就可以簡化眾多運(yùn)維系統(tǒng)的信息管理維護(hù)過程,使得用戶使用各運(yùn)維系統(tǒng)的便利性大大提高,進(jìn)而提高運(yùn)維人員的工作效率。得益于藍(lán)鯨PaaS平臺的良好支持,本SaaS應(yīng)用輕便,總體功能較為簡單,具有較好的可擴(kuò)展性。例如,我們后續(xù)開發(fā)了發(fā)送企業(yè)微信通知等信息的API接口,通過工號即可快速發(fā)送消息,無需再查詢企業(yè)微信ID或考慮發(fā)送消息的具體實(shí)現(xiàn)。本SaaS充分利用了統(tǒng)一信息管理的優(yōu)勢,起到了降低運(yùn)維系統(tǒng)信息維護(hù)難度、集中統(tǒng)一管理用戶的作用。