MSE Nacos 配置變更審計平臺使用指南

作者:孫立(湧月)、邢學超(於懷)、李豔林(彥林)

配置審計平臺簡介

Nacos [ 1] 作爲一款業界主流的微服務註冊中心和配置中心,管理着企業核心的配置資產,由於配置變更的安全和穩定訴求越來越高,因此我們提供了安全和可追溯性保障機制。

配置變更的途徑主要包括控制檯手動發佈和使用 Nacos SDK 客戶端等方式,爲了配置變更的安全性,我們需要對這兩種變更進行變更操作的通知和追溯;其中既包括這些變更操作的變更責任人、責任機器的追蹤,也包括變更操作對於相關方的通知和告警。

配置變更審計平臺核心目標

從變更內容方面,配置變更動作可分爲配置的發佈、刪除、導入、修改等;從變更渠道劃分,Nacos 配置變更可分爲 在控制檯進行的手動操作、使用 Nacos SDK 進行的操作。配置變更發生之後,我們需要進行變更的詳細審計,其中主要包括呈現配置的變更細節、變更之後的消息通知。

由此可見,配置變更的目標主要是在配置變更後進行相應的附加處理,來提升配置的可靠性、精準性,從而提升系統整體的安全性、可用性。爲了提供給用戶一個完善的配置變更審計平臺,我們在審計平臺中提出了以下幾個配置變更的審計點:

  • 配置變更操作責任人審計:

    在 MSE 中添加配置變更的操作責任人的信息,方便客戶追溯配置變更的具體執行者;而對於未開啓鑑權,未留下用戶信息的用戶,MSE Nacos 會將配置變更的來源 IP 記錄下來,並且將其暴露給用戶,從而保證整個審計鏈路的完整性和可追溯性;

  • 配置變更影響面審計:

    當有多個微服務應用監聽該配置時,我們需要記錄下有哪些應用和機器監聽了該配置,當配置內容發生變化,我們需要將其推送行爲、推送成功與否、是否影響業務等信息在變更審計平臺上呈現給用戶;

  • 配置變更內容審計:

    對所發佈配置的內容進行記錄,便於用戶追溯配置歷史的版本,以及每個歷史版本的更新日期、所屬應用、變更內容;

  • 配置變更通知和告警:

    在配置變更(含發佈、修改、導入、刪除操作)之後,配置使用水位的實時監控以及配置使用水位超過閾值之後的告警,能夠保證用戶的及時感知配置的變化情況。

配置變更審計平臺原理

如下圖所示,配置變更審計平臺會將用戶的變更操作完整記錄,並且通過配置操作人追溯、推送軌跡、配置歷史版本審查、變更通知及告警等功能向用戶透出。

例如,當用戶組織內,某變更操作執行人 A 發起“配置變更 1”操作時,MSE 會將其操作內容和影響面做完整的記錄,如“A 執行了配置變更1操作,變更內容爲 XXX,該配置監聽者及可能的受影響者爲 C”。這些信息會通過配置操作人追溯大盤、配置操作影響面追溯大盤等,統一彙總到變更的審計人 E;同時,審計人 E 也可以通過配置使用水位監控觀測到配置中心當前的整體使用情況,當配置的使用量超出既定閾值時,MSE 會通過告警信息等方式將風險透出給配置變更審計者。

由此,當用戶組織內部的變更審計人需要對該變更進行審計和追溯時,便可以通過 MSE 配置變更審計平臺,完整地看到該變更發行時間點、操作人、操作內容、影響面等各種信息,便於其進行團隊和研發進度管理,界定風險責任。

配置操作人追溯

MSE Nacos 配置變更操作人追溯作爲配置變更平臺最主要的功能,用戶可以在該追溯界面查看看到歷次配置變更的詳情和變更操作的責任人信息。

如下圖所示,該功能在記錄和呈現配置的操作細節時,對於展示內容設置了多個優先級:

  • 當變更的操作來源爲用戶手動在 MSE 控制檯進行發佈變更時,配置變更責任人的內容爲用戶的賬號信息,其中:
    • 若用戶使用阿里雲主賬號登錄,則記錄並呈現主賬號的 UID;
    • 若用戶使用其所屬的子賬號登錄,則記錄並呈現登錄使用的子賬號的 UID。
  • 當變更的操作來源爲用戶使用 Nacos 的 Client 來進行配置的增刪改查等操作時,MSE 會判斷操作源是否攜帶身份信息:
    • 如果該操作源攜帶了身份信息,則將其識別並展示出來;
    • 否則,MSE 會自動識別該操作源的來源 IP 並展示在配置操作人追溯列表中,便於配置審計人更加準確和全面地履行審計職責。

配置變更推送軌跡

同時,MSE Nacos 配置變更審計平臺也呈現了配置中心的推送軌跡。如下圖所示,在推送軌跡頁面,用戶可以通過推送軌跡查詢某配置相關的變更事件,也可以根據 IP 查詢所有和該 IP 地址相關的推送軌跡。其中配置中心配置變更和發佈的各種詳細問題都在推送軌跡界面有所展示,例如:

  • 配置發佈異常;
  • 配置修改完發現某臺機器不生效;
  • 需要查看配置中心變更及推送事件。

其中,變更事件、DataId、Group 分別表示分別表示本次配置變更事件類型、該配置變更事件的配置、該配置變更事件的配置所屬分組。在“詳情”列可以看到詳情圖標可以看到本次變更事件詳細信息,點擊詳情列跳轉按鈕可以切換到配置維度查詢的入口查詢當前配置在該時間點的推送事件。

配置監控大盤及告警

同時,MSE Nacos 也提供了變更之後的配置監控頁面,主要監測指標包括:

  • 配置中心主要業務指標:配置數、配置監聽者數;
  • 配置中心訪問量指標:配置中心 TPS、QPS、寫 RT、讀 RT;
  • MSE 引擎整體的節點數、配置數、每秒查詢數、每秒操作數和連接數等信息。

在這個監控大盤下,用戶可以在配置變更之後,進行各項配置管理核心指標的校驗,例如當配置管理業務上出現推送配置不及時時,可以通過讀寫 RT 指標快速定位當前配置中心的相應時間;

另外,在壓測場景下,用戶也可以通過該大盤進行配置數、配置監聽者數、TPS 等指標的實時觀測;

當配置數或配置使用水位超過既設閾值時,也會給配置變更的審計者發送報警信息。

配置變更審計最佳實踐

下面介紹如何使用 MSE Nacos 提供的配置變更審計能力,並使用該能力增強配置變更的安全性和可追溯性。

整個最佳實踐可以歸納爲如下幾個步驟:

1.開通微服務引擎 MSE

2.登錄 MSE 控制檯,並創建 Nacos 引擎實例

3.在 MSE Nacos 創建相關配置、修改相關配置並刪除

4.在配置中心控制檯查看配置操作人及配置變更歷史

5.使用 Nacos Client SDK 進行配置創建和刪除

6.在配置中心控制檯查看配置操作人及配置變更來源 IP

7.對配置中心使用情況配置告警,當配置使用水位超過某一閾值的時候,對用戶發送通知

1. 開通微服務引擎 MSE

您可登錄微服務引擎 MSE [ 1] ,查看並開通 MSE。

2. 登錄 MSE 控制檯,並創建 Nacos 引擎實例

登錄微服務引擎 MSE 產品控制檯,在左側選項框中選擇“註冊配置中心”,點擊“實例列表”,確定 region 後,選擇“創建實例”。

3. 在 MSE Nacos 創建相關配置、修改相關配置並刪除重建

您可在 MSE Nacos 控制檯界面手動創建配置,並做多次修改、刪除及重新創建等操作。

4. 在配置中心控制檯查看配置操作人及配置變更歷史

由下圖可見,配置變更的操作人已經呈現,點擊“查看”也可以看到歷次配置變更的詳情和變更之前的歷史版本內容。

5. 使用 Nacos Client SDK 進行配置創建和刪除

可參考 Nacos Client SDK 使用指南 [ 2] 進行 Nacos Client SDK 的依賴安裝,並進行配置創建、修改、刪除等操作。

6. 在配置中心控制檯查看配置操作人及配置變更來源 IP

可以看到,使用 Nacos Client SDK 進行操作,即使在未開啓鑑權的情況下,也留下了發佈來源 IP。MSE Nacos 用戶可以通過該 IP 追溯到配置變更的來源信息。

7. 添加配置用量告警

此處我們添加配置水位大於 90% 時的告警,當配置使用水位超過該閾值時,會通過短信、電話等方式通知到配置變更的審計人。

🔔 注意:

  1. 對於 Nacos Client SDK1.X(HTTP 版本),由於其IP信息並未攜帶在 HTTP 報文中,MSE Nacos 並未對其進行存儲;若使用該 SDK 進行配置發佈,本着配置操作人來源信息的準確性原則,並未透出該信息;

  2. 使用 Nacos Client SDK 發佈,控制檯可查看 IP 的功能支持需升級至 Nacos2.2.3.2 版本。但目前該版本尚在全網灰度發佈中,預計 2 月中旬將全部灰度完畢,如果發現該版本尚未灰度至您所在地域,可以通過 MSE 工單解決。

MSE Nacos 配置變更審計平臺未來展望

對於配置變更的發生位置主要分爲變更前和後,上述功能主要發生在變更後。而在未來,我們將一方面對於配置變更發生之前的問題進行攔截和處理,協助 MSE 用戶進行配置變更的防錯性措施,主要包括文件檢查、參數校驗等,即防禦式開發;另一方面繼續保障配置變更發生之後的確認和驗收性工作,保證變更的正確發生。

MSE Nacos 配置變更審計平臺將致力於在配置變更的整個生命週期進行相應的附加處理,來提升配置的可靠性、精準性、安全性。我們主要提出三種未來將添加進入配置變更審計平臺的功能:

文件內容校驗和審批

此功能爲事前校驗、預防性的配置變更審計功能,在配置變更發生之前,MSE Nacos 將發起一個審批流程,交由用戶組織內部的研發管理者或運維管理者判斷文件上傳的內容是否符合要求;

具體的落地方案是通過 MSE 控制檯進行校驗、預防;另外,爲了防止存在偶發的漏放情況,MSE 將允許用戶設計多層次的審批結構加強校驗防護。

變更內容白名單與黑名單

此類需求也爲事前攔截、預防性的需求,在配置變更發生之前,判斷本次變更的具體內容是否在白名單或者黑名單(比如是否在 yaml 文件的指定 Key 範圍)之內,來保證更加精細粒度的權限管理。

例如,當運維 A 只被授權修改某配置文件 yaml 中的“useLocalCache”字段時,如果該配置變更審批修改了其他的字段,則會被黑名單攔截;而如果該變更只侷限於該字段,則會被放行。即,權限受限的操作人只允許規定的配置內容的修改和變更。

基於 WebHook 的配置變更通知

此類需求爲事後感知類的需求,當配置變更發生之後,將配置變更的情況通過多渠道及時推送至客戶,讓用戶明確所操作帶來的後果是否符合預期。

現有的實現方案則是通過 listener 進行監聽。但該方案缺點則是不便於清晰感知、同時需要用戶進行二次開發,而採用 Webhook 方式,結合常用的辦公應用,如釘釘,企業微信,則可將變更情況推送至羣\個人,更加清晰地感知,便捷地接受。

相關鏈接:

[1] Nacos/微服務引擎 MSE

https://www.aliyun.com/product/aliware/mse?spm=5176.28508143.J_4VYgf18xNlTAyFFbOuOQe.107.e939154aPIGhMk&scm=20140722.S_product@@雲產品@@218483._.ID_product@@雲產品@@218483-RL_MSE-LOC_menuUNDproduct-OR_ser-V_3-P0_0

[2] Nacos Client SDK 使用指南

https://nacos.io/docs/v2/guide/user/sdk/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章