Nacos 3.0 的這個(gè)設(shè)計(jì),值得我們學(xué)習(xí)
大家好,我是君哥。
最近 Nacos 發(fā)布了第一個(gè) 3.0 版本 Nacos 3.0-ALPHA,這個(gè)版本主要改進(jìn)點(diǎn)在于安全性和標(biāo)準(zhǔn)化的提升。
API 接口的調(diào)用方可能有很多類型,我們看下圖,業(yè)務(wù)系統(tǒng)1 中服務(wù) A 的一個(gè) API 接口被多個(gè)系統(tǒng)和服務(wù)調(diào)用:
我們?nèi)粘=佑|的系統(tǒng)中,一個(gè) API 可能會(huì)有下列的調(diào)用情況:
- 被同一個(gè)系統(tǒng)內(nèi)的其他服務(wù)調(diào)用。
- 被不同系統(tǒng)的服務(wù)調(diào)用。
- 被公司內(nèi)部的運(yùn)維系統(tǒng)調(diào)用。
- 被控制臺(tái)通過命令調(diào)用。
- 被可視化頁(yè)面調(diào)用。
- 被公司外部的三方系統(tǒng)調(diào)用。
系統(tǒng)內(nèi)部、系統(tǒng)間、運(yùn)維控制臺(tái)、可視化頁(yè)面、三方調(diào)用這個(gè)接口時(shí),如果使用相同的認(rèn)證機(jī)制和接口文檔,顯然是不合適的,有很大的安全隱患。
在 Nacos 3.0 之前,Nacos 把 API 分為兩類,一類是系統(tǒng)間調(diào)用的,一類是供運(yùn)維人員管理使用的。這樣分類比較粗,無(wú)法滿足安全認(rèn)證的需求。
在 Nacos 3.0-ALPHA 版本中,對(duì) API 進(jìn)行了更加精細(xì)的分類,主要分為了四類,參考下圖:
這種 API 設(shè)計(jì)方式變得更加靈活,可以滿足不用用戶和場(chǎng)景的需求。
基于這種 API 劃分方式,Nacos 3.0-ALPHA 版本提出了不同的認(rèn)證方式:
- 對(duì)于集群內(nèi)部訪問和運(yùn)維人員訪問的 API,默認(rèn)使用 ServerIdentity 做身份驗(yàn)證。
- 對(duì)于 Nacos 控制臺(tái) UI 訪問的 API,默認(rèn)使用用戶名和密碼進(jìn)行身份和權(quán)限認(rèn)證。
- 對(duì)于客戶端和應(yīng)用程序訪問的 API,默認(rèn)不開啟安全認(rèn)證。
這樣對(duì) API 的設(shè)計(jì),不僅可以滿足 API 調(diào)用的安全性要求,對(duì)易用性也有了很大提升。在我們平時(shí) API 的設(shè)計(jì)和管理中,可以作為一個(gè)參考。