葉光芳,肖興楷
贛州銀行股份有限公司,江西贛州,341001
運行維護工作的目標是保證生產系統的安全穩定運行,這是一個繁雜的過程,涉及各式各樣工具與系統平臺的使用,而每個系統都擁有各自的用戶管理與認證功能。隨著系統不斷增加,用戶信息的管理成本也不斷提高,此時容易出現多個系統之間用戶信息冗余、信息不同步的問題。對于運維工作人員而言,記憶眾多系統的賬號和口令十分繁雜且容易出錯。為了解決此類問題,我們開始探索搭建企業內部的OpenLDAP,并結合騰訊藍鯨智云PaaS平臺開發一個SaaS應用進行管理。
軟件即服務是來自英文Software-as-a-Service,簡稱SaaS。藍鯨智云是騰訊對外開放的一套運維解決方案。這套解決方案永久免費,并且支持私有云部署,我們的企業內部就是運用了該方案進行藍鯨PaaS平臺的私有云部署。該平臺為一個SaaS應用從創建到部署、再到后續的維護管理提供了完善的自動化和自助化服務,本文所介紹的統一用戶SaaS應用(下文簡稱SaaS)就是在該平臺上進行開發部署的。
LDAP(lightweight directory access protocol)即輕量目錄訪問協議,這是一種標準的目錄服務技術[1],由密歇根州(Michigan)大學推出的基于TCP/IP協議的LDAP協議。該協議對于Internet訪問的支持非常好,并且它還為瀏覽和查找目錄以及內容讀取提供了專門的優化,使得讀取速度比一般的關系數據庫要快得多[2]。OpenLDAP軟件是LDAP協議的開源實現,可以與Zabbix、Apache、OpenVPN等眾多應用系統集成[3],本文所闡述的SaaS即是基于OpenLDAP進行設計與開發。
首先我們需要搭建LDAP服務,安裝OpenLDAP服務端,修改相關配置,按照設計的字段新建用戶進行測試。字段設計見表1。

表1 新建用戶字段
用戶通過瀏覽器客戶端輸入賬戶密碼來登錄應用系統,相應系統會請求LDAP服務器獲取數據庫存儲的賬號及密碼信息進行驗證,驗證通過即可成功進入系統,認證過程如圖1所示。

圖1 認證過程
在完成LDAP服務搭建后,可以發現通過命令行創建用戶的方法極為復雜,相關的管理操作同樣復雜。此時大多數用戶會使用工具phpldapadmin進行管理,該工具將原本需要進行命令行操作的過程轉變為圖形化操作,但是該工具的設計對于我們來說不夠簡潔、易用,這也是制作一個SaaS應用進行LDAP管理的原因之一。本SaaS應用的總體框架結構如圖2所示,接下來將對其進行詳細說明。

圖2 SaaS應用的總體框架結構
企業內部有HR系統對員工信息進行管理,每天會對組織架構和人員信息進行卸數(抽取、轉換、加載)成為文本文件,放置在文件交換服務器中。我們通過調用藍鯨作業平臺快速分發文件API,將該卸數文件傳輸到我們的SaaS服務器上,確認傳輸成功后,將文件進行解析并入庫,如圖3所示。通過celery設定定時任務,每日定時進行上述操作,從而保證數據的每日同步。

圖3 數據傳輸流程
LDAP目錄服務器對于信息的存儲以及目錄服務,主要是通過目錄數據庫來進行的。為了能夠使用戶對信息進行快速查找和定位,目錄數據庫對于數據的存儲主要是用樹狀的層次結構[4]。本SaaS用戶認證信息的LDAP目錄服務器存儲模型的目錄樹結構如圖4所示。

圖4 LDAP目錄服務器存儲模型的目錄樹結構
4.4.1 管理員批量開通LDAP賬號
為員工開通LDAP賬戶,設置默認密碼為員工身份證號后六位。前端設計為可以批量操作,也可以選擇自動開通某個部門所有員工的LDAP賬戶,當該部門有新員工加入時會觸發自動開通,并發送郵件告知新員工。
4.4.2 用戶自助開通LDAP賬號
企業員工數量眾多,每一個員工可能在不同的時間需要開通賬號,如果都通過管理員開通賬號,效率是非常低的。因此我們設計了一個自助操作頁面,員工可以自行操作。通過匹配員工的工號與手機號,即可獲取短信驗證碼,進行開通賬戶的操作。這將大大降低管理員的工作量,避免低效重復地工作。
4.4.3 用戶LDAP賬戶的修改與刪除
LDAP賬戶的各個屬性中,大多是由HR系統的數據進行同步,可以人工修改設置的只有密碼屬性。在自助操作頁面中也提供了重置密碼功能,使用匹配的工號與手機號獲取驗證碼,可以填寫自定義密碼,也可以不填寫則默認身份證號后六位。當有員工離職時,在每日同步數據的過程中會將此類員工的LDAP賬號刪除,管理員也可以手動刪除LDAP賬號。
4.4.4 擴展功能
公司的企業微信賬號管理,原先是通過企業微信后臺進行手工管理,初始化導入一批新增的用戶時,需手動維護部門、手機號、郵箱等信息,且原始賬戶ID設置為姓名拼音,可能會出現重名的情況。當有員工離職時,也需要手工操作刪除,如此管理賬號,容易出錯的同時也不易于數據同步管理。本SaaS已對接員工的基本信息,將企業微信用戶的管理放在本SaaS中,并不需要大幅度改動SaaS的結構,還能夠改善上面提到的問題。
目前的擴展功能主要是完成企業微信用戶的新增與刪除操作。通過調用企業微信提供的API新建用戶與部門,新開通的賬號ID使用員工號,并將現存的企業微信用戶同步到SaaS后端。當有員工離職時,將自動刪除其企業微信。為了統一開通企業微信賬號的入口,我們將企業微信端的申請加入設置為“不允許加入”,只能通過本SaaS,避免出現兩端數據不同步。
本SaaS用于管理LDAP賬戶,用戶需要在已接入LDAP的系統中才能使用,接下來將以藍鯨平臺為例介紹如何對接運維系統。藍鯨平臺從6.0版本開始支持OpenLDAP目錄,只需要通過藍鯨用戶管理SaaS進行用戶目錄的相關配置,即可同步LDAP用戶至藍鯨。此過程中,需注意以下幾個問題。
4.5.1 HR系統提供的數據不全面
在我們企業的ITSM流程中,組織架構細化至團隊層級,需要獲得每個員工的直接上級信息;但在HR系統中,組織架構僅細化至部門中心層級,也沒有直接上級信息。因此,我們對SaaS進行了小改動:①組織架構表新增負責人字段,即屬于該組織的員工,其直接上級為該組織負責人;②添加新增與編輯組織架構的功能,即可以在部門中心層級下新增團隊層級并自由調整人員。ITSM流程問題解決的同時,還需要確保每日的數據同步正確,即同步時不會將我們在SaaS上新增的組織架構及調整之后的員工信息恢復至HR系統的架構,同時確保員工在更換部門時能夠將信息正常同步至SaaS。
4.5.2 藍鯨6.0的用戶目錄同步不支持自定義字段
在當前版本中,企業微信ID、直接上級都無法通過用戶目錄從OpenLDAP直接同步至藍鯨。由于SaaS和藍鯨用戶管理的數據庫在同一個MySQL中,于是我們在SaaS中添加定時任務,通過腳本直接修改藍鯨用戶管理數據庫中的數據,將企業微信ID與直接上級插入數據庫中。
4.5.3 新LDAP賬號與系統原有賬號之間的過渡
本SaaS上線后,為藍鯨本地目錄的用戶都開通了新的LDAP賬號,原本用戶具有自己管理的系統業務對應權限,但此時新賬號是沒有相應權限的,這里我們需要通過腳本進行權限同步:①同步權限中心用戶組,遍歷所有本地用戶信息,通過姓名獲取工號和LDAP賬號,若該LDAP賬號存在便將其加入對應原始賬號所屬的用戶組中;②更新CMDB的維護人信息,通過API更新業務信息,兩個賬號同步使用一段時間確定沒有問題后,即可將老賬戶停用,完成過渡。
至此,藍鯨平臺接入LDAP用戶體系順利完成,之后陸續對接了Zabbix、Grafana、知識庫等運維管理系統,對接方案大同小異。
上述方案充分利用了藍鯨PaaS平臺提供的良好的SaaS應用開發環境以及LDAP協議所具有的相關特性,企業中原本分散的員工賬號信息在本SaaS中得到集中管理,通過一個SaaS即可擁有最全、最準確的員工信息、LDAP賬號信息、企業微信賬號等各類信息。同時,只需記憶一個LDAP賬號與口令,就可以簡化眾多運維系統的信息管理維護過程,使得用戶使用各運維系統的便利性大大提高,進而提高運維人員的工作效率。得益于藍鯨PaaS平臺的良好支持,本SaaS應用輕便,總體功能較為簡單,具有較好的可擴展性。例如,我們后續開發了發送企業微信通知等信息的API接口,通過工號即可快速發送消息,無需再查詢企業微信ID或考慮發送消息的具體實現。本SaaS充分利用了統一信息管理的優勢,起到了降低運維系統信息維護難度、集中統一管理用戶的作用。