運維守護神——數十萬線上機器的守護【門神】

隨着京東雲業務的飛速發展,其須要管理的物理機、虛機以及各種容器已經達到了數十萬之巨,在如此數量如此龐大資源機如何管理的課題面前,京東雲意識到必須開發本身的高效、安全、穩定的資源機管理系統,爲京東雲乃至整個京東集團各項業務的發展提供堅實可靠的後盾,「門神」系統在這種狀況下應運而生,並在通過屢次京東61八、11.11等諸多重大活動的檢驗後,變得愈發成熟穩定。

「門神」顧名思義,就是守護整個京東資源機雲安全的守護神,是京東雲平臺自主研發的一套基於服務樹角色受權的線上機器運維平臺,該平臺支持認證登陸、系統運維和安全審計,能夠對京東雲平臺全部的主機進行統一的訪問控制、操做歷史記錄等,是符合4A的專業運維審計系統,構建統1、高效、安全運維通道,保障雲端運維工做遵循法律法規要求、下降人爲安全風險,提升運維效率。前端

設計目標

爲了適應京東雲業務快速發展、所需管理的物理機、虛機和容器數量指數級增長的現狀,知足公司安全認證、高效運維、操做審計、職權管控的要求,門神設計初期就制定了以下目標:shell

  • 安全認證
    支持雙因子認證機制,經過二維碼、動態令牌等技術,控制帳號密碼泄露風險,防止運維人員身份冒用和複用。
  • 高效運維
    自研SSH交互界面,簡潔易用,方便管理大量主機,簡化運維和安全操做,提高運維效率;門神登陸成功後支持資源機之間的無密碼穿梭。
  • 操做審計
    全程記錄運維人員的操做行爲,操做內容支持各類維度信息查詢,支持操做記錄回放,將全程審計運維操做做爲事件追溯的保障和事故分析的依據。
  • 職權管控
    將京東雲服務樹做爲帳號和資源機受權信息的來源,統一運維入口,統一天然人與主機賬號間的權限關係,統一運維操做審計管控點。
  • 高可用
    門神各模塊實現分佈式設計和部署,單節點問題不會影響整個系統正常提供服務;支持上萬級別的併發會話運維能力。

Alt

設計細節

一、核心技術點

門神系統涉及諸多技術,其中核心技術點包括:數據庫

  • 多因子認證
    用戶登陸relay採用密碼+驗證碼方式,其中驗證碼能夠選擇基於雲翼的6位數字驗證碼或者基於京東內部工做客戶端(京me)的二維碼掃描驗證。
  • kerberos認證
    門神用戶身份認證是基於kerberos協議,保證在非安全網絡環境下的安全認證登陸,而且實現一次登陸relay後,在受權資源機之間能夠免密穿梭。
  • nsswitch擴展
    使用nsswitch替代/etc/passwd實現用戶信息的獲取,該擴展部署到每臺資源機,從doorgod-api模塊獲取登陸帳號的uid、gid信息。
  • sudoers
    基於sudoers實現基於角色的用戶權限控制,運維角色能夠sudo到root帳號下操做,開發角色只能使用本身的帳號操做,沒法sudo。
  • 安全性
    內部模塊交互白名單機制,密碼只簽名、不傳輸;非對稱加密保存密碼;自動加黑機制防止被爆破;定時過時機制。

二、設計詳情

從門神整體架構圖能夠看出,門神的數據源是京東雲自研的核心數據模塊(服務樹模塊),全部用戶和資源機信息都是從服務樹模塊獲取並保存到數據庫和kerberos中的,並經過腳本實時同步服務樹中變化的數據,從而保證數據會實時的同步到門神系統。門神主要模塊包括relay、kerberos、relay-server、doorgod-api和須要安裝到資源機的客戶端dg-client,下文介紹結合核心模塊的設計和實現。api

  • relay模塊
    該模塊是用戶登陸門神的「前端」,以獨立容器方式啓動,其sshd開啓kerberos認證。用戶使用ssh協議登陸時須要輸入用戶名和密碼,kerberos驗證經過後登陸容器;login-shell二次驗證還須要用戶輸入從雲翼獲取的驗證碼,或者使用京me掃碼驗證,二次校驗無誤方可進入用戶操做界面。

門神用戶操做界面通過開發團隊反覆打磨,簡單易用,人機交互天然流暢,主界面爲受權給用戶的資源機信息,右邊部分展現快捷鍵信息和登陸歷史信息,下方是用戶輸入區,用戶能夠經過以下方式登陸資源機:安全

a、輸入主界面index number選擇資源機登陸;網絡

b、直接輸入ip登陸;架構

c、輸入應用名稱或者ip進行模糊匹配,選擇具體資源機登陸;併發

d、輸入右側歷史記錄的index number登陸(以「!」開始)。運維

recorder進行tty劫持,從而實現錄屏功能,用戶全部的操做都會被記錄下來,經過syslog發送到kafka集羣,最終被ES集羣消費和存儲,做爲用戶提供操做審計查詢的數據源。ssh

  • kerberos模塊
    做爲門神系統的安全認證模塊,是保證京東雲數十萬線上機器安全運維的關鍵。
    該模塊經過腳本實現從服務樹獲取資源機信息和從門神數據庫(MySQL)獲取用戶信息,註冊到其kerberos本身的數據庫中,而且每分鐘同步一次數據,保證數據的時效性。
  • dg-client客戶端
    dg-client是c語言實現的so文件,全部門神管控的資源機都須要安裝該文件,並對資源機的nsswitch.conf文件追加該so文件的擴展信息,使得全部門神用戶信息都經過該so文件獲取。另外,kerberos配置文件也須要下載到資源機的etc目錄下。

Alt

  • 日誌存儲
    門神日誌是由syslog服務來進行監控和發送到kafka集羣的,日誌解析服務會消費kafka中的數據,並進行解析,解析後數據發送到ES集羣;
    解析前的數據轉存到京東雲OSS中。

Alt

經過雲翼能夠按照目的ip、操做類型、關鍵字(支持精確匹配和模糊匹配)、時間進行查詢操做日誌,從而實現用戶操做全程審計;門神還支持用戶操做回放功能,能更加清楚的對用戶操做進行審計。

門神系統爲京東雲軟件開發、測試、運維人員提供了統一的運維入口,只須要記住一個密碼就能登陸全部受權主機,並自由的在受權主機之間穿梭,這極大的減輕了軟件工程師們的工做負擔,提高了工做效率。同時,又爲運維安全提供了技術實現方面的保障,將審計工做貫徹到整個運維流程全過程當中,切實保證了線上機器的運維安全。

當前,門神已經成爲京東雲線上機器運維的主要平臺,成功爲京東61八、11.11等諸多重大活動提供運維支持保障,成爲助力京東雲快速、高質量發展的重要力量之一。門神團隊正在開發門神系統的控制檯產品-堡壘機,該產品將以開源版本和商業版本兩種方式發佈,請各位讀者朋友多提寶貴意見。

點擊「閱讀」瞭解京東雲翼產品!

歡迎點擊「京東雲」瞭解更多精彩內容

相關文章
相關標籤/搜索