基於Confluence或Jira的用戶遷移至OpenLDAP用戶的方法
so ... 簡述下這個坑的物理屬性:
公司有若幹內部系統,Confluence、Jira、Jumpserver、Gitlab等等的系統,隨著業務的發展以及人員的增加,賬號的管理開始麻煩起來,先不說記得這麽多的賬號密碼,每來(跑路)一個新人,都要增加(刪除),每天都不用工作了,光是增加,刪除賬號就夠你喝一壺了,於是乎便有了打一個域控的想法,由於出於強迫癥的毛病選擇了OpenLDAP,不要問我為啥不用微軟的AD,我不會告訴你我被微軟的反盜版騷擾過,被泄露了個人信息給微軟,然後各種勒索,騷擾個人,有法律經驗的同學,喜歡折騰的,可以反告微軟一把,所以本屌極其鄙視微軟這種下流的公司。
然後問題來了:Confluence 、Jira 原本就有用戶,而且這兩個系統也沒有直接可以遷移用戶的功能,只是兼容兩種用戶登錄而已,各登各的,所以一下子沒有特別好的方法解決:
不能刪除用戶,然後再新建用戶,這兩個系統,如果用戶在非本空間內存在編輯或者新建文件的類似操作。是無法刪除用戶的,只能禁用
不能讓其他用戶換另外的名字註冊登錄,這樣體驗不好,搞不好被人罵死
用crowd 只能解決atlassian自身的登錄,集成不了其他的應用
於是想到了既然界面上不能改,那我直接改後臺數據庫,然後發現了一絲希望:
進入數據庫,找到一張叫 cwd_user的表,裏面包含了所有用戶的登錄賬號以及信息,其中有個字段為directory_id的,光從名字上看已經很耀眼了,就是我們目錄服務器的ID號碼,裏面分別有包括了兩組的數字一組為內置的用戶目錄,也是系統默認的目錄ID,第二組即LDAP的ID。
得到了這個數據以後再往下走,查看這兩數據對應的含義,搞清楚,哪個對應LDAP,哪個對應內置用戶服務。
再次找尋一個表,cwd_directory的表,打開以後,裏面大家一看就一目了然了吧,ID 、目錄簿的名稱都有了,有了這個就可以直接開始修改用戶的屬性了。
此時屢下思路:
需要把本地用戶轉成LDAP用戶的前提是LDAP存在這個用戶,所以需要在LDAP中建立用戶,賬號必須是對應的,密碼無所謂,統一密碼即可
進入cwd_user表,找到對應用戶,其中應該是存在兩個一樣的用戶,一個為系統本身的目錄,還有一個是存在於LDAP的用戶:
記住LDAP目錄ID,然後,刪除LDAP的那個用戶的整條記錄 為什麽呢? 因為我們要偽裝的是原本系統自帶的目錄服務器,所以原來編輯的文件或內容都為原先的這個用戶ID,這個所有的才做應該是做好數據庫關聯的,貿然刪除是非常危險的操作。
修改directory_id 為LDAP的ID,還有一個需要修改的地方為CREDENTIAL的字段,把它修改為nopass
然後就這麽完了,最後系統重啟confluence或jira ,如果不重啟,配置不一定會生效,看人品,親測。
基於Confluence或Jira的用戶遷移至OpenLDAP用戶的方法