運維守護神——數十萬線上機器的守護【門神】
隨著京東雲業務的飛速發展,其需要管理的物理機、虛機以及各類容器已經達到了數十萬之巨,在如此數量如此龐大資源機如何管理的課題面前,京東雲意識到必須開發自己的高效、安全、穩定的資源機管理系統,為京東雲乃至整個京東集團各項業務的發展提供堅實可靠的後盾,“門神”系統在這種情況下應運而生,並在經過多次京東618、11.11等諸多重大活動的檢驗後,變得愈發成熟穩定。
“門神”顧名思義,就是守護整個京東資源機雲安全的守護神,是京東雲平臺自主研發的一套基於服務樹角色授權的線上機器運維平臺,該平臺支援認證登入、系統運維和安全審計,可以對京東雲平臺所有的主機進行統一的訪問控制、操作歷史記錄等,是符合4A的專業運維審計系統,構建統一、高效、安全運維通道,保障雲端運維工作遵循法律法規要求、降低人為安全風險,提高運維效率。
設計目標
為了適應京東雲業務快速發展、所需管理的物理機、虛機和容器數量指數級增加的現狀,滿足公司安全認證、高效運維、操作審計、職權管控的要求,門神設計初期就制定瞭如下目標:
-
安全認證
-
支援雙因子認證機制,透過二維碼、動態令牌等技術,控制賬號密碼洩露風險,防止運維人員身份冒用和複用。
-
高效運維
-
自研SSH互動介面,簡潔易用,方便管理大量主機,簡化運維和安全操作,提升運維效率;門神登入成功後支援資源機之間的無密碼穿梭。
-
操作審計
-
全程記錄運維人員的操作行為,操作內容支援各種維度資訊查詢,支援操作記錄回放,將全程審計運維操作作為事件追溯的保障和事故分析的依據。
-
職權管控
-
將京東雲服務樹作為賬號和資源機授權資訊的來源,統一運維入口,統一自然人與主機帳號間的許可權關係,統一運維操作審計管控點。
-
高可用
-
門神各模組實現分散式設計和部署,單節點問題不會影響整個系統正常提供服務;支援上萬級別的併發會話運維能力。
設計細節
1、核心技術點
門神系統涉及諸多技術,其中核心技術點包括:
-
多因子認證
-
使用者登入relay採用密碼+驗證碼方式,其中驗證碼可以選擇基於雲翼的6位數字驗證碼或者基於京東內部工作客戶端(京me)的二維碼掃描驗證。
-
kerberos認證
-
門神使用者身份認證是基於kerberos協議,保證在非安全網路環境下的安全認證登入,並且實現一次登入relay後,在授權資源機之間可以免密穿梭。
-
nsswitch擴充套件
-
使用nsswitch替代/etc/passwd實現使用者資訊的獲取,該擴充套件部署到每臺資源機,從doorgod-api模組獲取登入賬號的uid、gid資訊。
-
sudoers
-
基於sudoers實現基於角色的使用者許可權控制,運維角色可以sudo到root賬號下操作,開發角色只能使用自己的賬號操作,無法sudo。
-
安全性
-
內部模組互動白名單機制,密碼只簽名、不傳輸;非對稱加密儲存密碼;自動加黑機制防止被突破;定時過期機制。
2、設計詳情
從門神總體架構圖可以看出,門神的資料來源是京東雲自研的核心資料模組(服務樹模組),所有使用者和資源機資訊都是從服務樹模組獲取並儲存到資料庫和kerberos中的,並透過指令碼實時同步服務樹中變化的資料,從而保證資料會實時的同步到門神系統。門神主要模組包括relay、kerberos、relay-server、doorgod-api和需要安裝到資源機的客戶端dg-client,下文介紹結合核心模組的設計和實現。
-
relay模組
-
該模組是使用者登入門神的“前端”,以獨立容器方式啟動,其sshd開啟kerberos認證。使用者使用ssh協議登入時需要輸入使用者名稱和密碼,kerberos驗證透過後登入容器;login-shell二次驗證還需要使用者輸入從雲翼獲取的驗證碼,或者使用京me掃碼驗證,二次校驗無誤方可進入使用者操作介面。
門神使用者操作介面經過開發團隊反覆打磨,簡單易用,人機互動自然流暢,主介面為授權給使用者的資源機資訊,右邊部分展示快捷鍵資訊和登入歷史資訊,下方是使用者輸入區,使用者可以透過如下方式登入資源機:
a、輸入主介面index number選擇資源機登入;
b、直接輸入ip登入;
c、輸入應用名稱或者ip進行模糊匹配,選擇具體資源機登入;
d、輸入右側歷史記錄的index number登入(以“!”開始)。
recorder進行tty劫持,從而實現錄屏功能,使用者所有的操作都會被記錄下來,透過syslog傳送到kafka叢集,最終被ES叢集消費和儲存,作為使用者提供操作審計查詢的資料來源。
-
k erberos模組
-
作為門神系統的安全認證模組,是保證京東雲數十萬線上機器安全運維的關鍵。 該模組透過指令碼實現從服務樹獲取資源機資訊和從門神資料庫(MySQL)獲取使用者資訊,註冊到其kerberos自己的資料庫中,並且每分鐘同步一次資料,保證資料的時效性。
-
dg-client客戶端
-
dg-client是c語言實現的so檔案,所有門神管控的資源機都需要安裝該檔案,並對資源機的nsswitch.conf檔案追加該so檔案的擴充套件資訊,使得所有門神使用者資訊都透過該so檔案獲取。另外,kerberos配置檔案也需要下載到資源機的etc目錄下。
-
日誌儲存
-
門神日誌是由syslog服務來進行監控和傳送到kafka叢集的,日誌解析服務會消費kafka中的資料,並進行解析,解析後資料傳送到ES叢集;
-
-
解析前的資料轉存到京東雲OSS中。
透過雲翼可以按照目的ip、操作型別、關鍵字(支援精確匹配和模糊匹配)、時間進行查詢操作日誌,從而實現使用者操作全程審計;門神還支援使用者操作回放功能,能更加清楚的對使用者操作進行審計。
門神系統為京東雲軟體開發、測試、運維人員提供了統一的運維入口,只需要記住一個密碼就能登入所有授權主機,並自由的在授權主機之間穿梭,這極大的減輕了軟體工程師們的工作負擔,提升了工作效率。同時,又為運維安全提供了技術實現方面的保障,將審計工作貫徹到整個運維流程全過程中,切實保證了線上機器的運維安全。
當前,門神已經成為京東雲線上機器運維的主要平臺,成功為京東618、11.11等諸多重大活動提供運維支援保障,成為助力京東雲快速、高質量發展的重要力量之一。門神團隊正在開發門神系統的控制檯產品-堡壘機,該產品將以開源版本和商業版本兩種方式釋出,請各位讀者朋友多提寶貴意見。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2667221/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SMART Utility:您的Mac硬碟健康守護神Mac硬碟
- 共享榮耀守護之旅!360漏洞響應平臺“億萬守護計劃“上線!
- 守護程序
- 守護程式
- 《城堡守護者:開啟熱血守護之旅》
- 程式守護 supervisor
- Linux 守護程式Linux
- Node 程式守護
- ITIL4之守護數字世界的生命線
- 運維:Centos8安裝Supervisor守護Nginx程式筆記運維CentOSNginx筆記
- 守護執行緒執行緒
- Golang 程式守護 SupervisorGolang
- 守護程式那些事
- 內刊上線|探索網安守護人的“城池營壘”
- Linux下的守護程式分析Linux
- PHP 實現守護進PHP
- PHP 實現守護程式PHP
- Linux守護程式及SystemdLinux
- PHP 編寫守護程式PHP
- 運用Vue Router的程式守護修改單頁的titleVue
- Linux守護程式的啟動方法Linux
- 守護者們鬥梅姨
- opentracker改造為daemon守護程式
- Windows守護程式簡單示例Windows
- Java之守護執行緒Java執行緒
- Python編寫守護程式程式Python
- Brand Finance:2023年品牌守護指數NaN
- SMART Utility for Mac:硬碟健康的守護者Mac硬碟
- 使用 SWOOLE 實現程式的守護(二)
- 使用 swoole 實現程式的守護(三)
- 使用 SWOOLE 實現程式的守護(一)
- Azure MFA 守護你的賬戶安全
- 守護體系升級 網易遊戲全平臺上線App版“家長護航”遊戲APP
- 華熙趙燕十年堅守做文化守護者
- .Net Core 程式守護之Supervisor使用
- 守護石談學習Java之路Java
- rsync 守護程式及實時同步
- DM7搭建資料守護