使用服務(wù)鑒權(quán)實(shí)現(xiàn)Dubbo應(yīng)用的訪問控制
當(dāng)您的某個(gè)微服務(wù)應(yīng)用有安全要求時(shí),您可以對(duì)該應(yīng)用進(jìn)行接口或方法粒度的訪問控制,對(duì)調(diào)用方進(jìn)行訪問鑒權(quán),僅允許匹配鑒權(quán)規(guī)則的調(diào)用方發(fā)起調(diào)用,以此提高應(yīng)用的安全性。本文介紹如何使用服務(wù)鑒權(quán)實(shí)現(xiàn)Dubbo應(yīng)用的訪問控制。
使用場(chǎng)景
未配置服務(wù)鑒權(quán)
- 同一命名空間內(nèi)的服務(wù)可以相互調(diào)用,Consumer 1、Consumer 2和Consumer 3默認(rèn)可以調(diào)用Provider的所有Path(Path 1、Path 2和Path 3)。
- 使用MSE網(wǎng)關(guān)對(duì)Consumer服務(wù)進(jìn)行路由轉(zhuǎn)發(fā),Gateway 1和Gateway 2可以調(diào)用Consumer 1、Consumer 2、Consumer 3三個(gè)應(yīng)用實(shí)例。
配置服務(wù)鑒權(quán)
- 設(shè)置所有接口的鑒權(quán):
- 對(duì)Provider的所有接口設(shè)置鑒權(quán)規(guī)則。例如,Provider設(shè)置所有接口鑒權(quán)規(guī)則為:將Consumer 1加入黑名單(拒絕訪問),Consumer 2、Consumer 3加入白名單(允許調(diào)用)。
- 對(duì)Consumer的所有接口設(shè)置鑒權(quán)規(guī)則。例如,Consumer 1只允許Gateway 1的調(diào)用,Consumer 2、Consumer 3只允許Gateway 2的調(diào)用,需進(jìn)行如下操作。
- Consumer 1設(shè)置所有接口鑒權(quán)規(guī)則,將Gateway 1加入白名單(允許調(diào)用)。
- Consumer 2、Consumer 3設(shè)置所有接口鑒權(quán)規(guī)則,將Gateway 2加入白名單(允許調(diào)用)。
- 設(shè)置指定接口的鑒權(quán):
在設(shè)置所有Path的鑒權(quán)基礎(chǔ)上,還可設(shè)置Consumer指定Path的鑒權(quán)規(guī)則。例如,在設(shè)置所有Path的鑒權(quán)方式下,Consumer 2、Consumer 3可以訪問Provider的所有Path,但Provider的Path 2涉及一些核心業(yè)務(wù)或數(shù)據(jù),不希望Consumer 2調(diào)用,可以將Path 2對(duì)Consumer 2的鑒權(quán)方式設(shè)置為黑名單(拒絕調(diào)用),則Consumer 2只能訪問Provider的Path 1和Path 3。
設(shè)置鑒權(quán)規(guī)則的調(diào)用示意圖如下所示。
- 對(duì)于作為Readiness或Liveness健康探針的接口,為避免因服務(wù)鑒權(quán)規(guī)則導(dǎo)致應(yīng)用健康檢查失敗,請(qǐng)?jiān)O(shè)置該接口的鑒權(quán)方式為白名單(允許調(diào)用),且調(diào)用方為任意來源。
- 對(duì)于在EDAS服務(wù)鑒權(quán)規(guī)則中引用的MSE網(wǎng)關(guān)實(shí)例,EDAS會(huì)默認(rèn)開啟網(wǎng)關(guān)插件edas-service-auth。請(qǐng)勿在MSE網(wǎng)關(guān)管理控制臺(tái)隨意更改該插件的開啟狀態(tài)和配置內(nèi)容。
視頻
創(chuàng)建服務(wù)鑒權(quán)規(guī)則
登錄EDAS控制臺(tái)。
在左側(cè)導(dǎo)航欄,選擇 。
在Dubbo左側(cè)導(dǎo)航欄,單擊服務(wù)鑒權(quán)。
在服務(wù)鑒權(quán)頁面,單擊創(chuàng)建規(guī)則。
在創(chuàng)建規(guī)則面板設(shè)置服務(wù)鑒權(quán)參數(shù),然后單擊確定。
服務(wù)鑒權(quán)規(guī)則參數(shù)說明:
配置項(xiàng)
說明
微服務(wù)空間
服務(wù)所在的地域和微服務(wù)空間。
規(guī)則名稱
鑒權(quán)規(guī)則名稱,支持大小寫字母、數(shù)字、下劃線(_)和短劃線(-),長度不超過64個(gè)字符。
被調(diào)用方類型
默認(rèn)為應(yīng)用。
被調(diào)用方(應(yīng)用)
被調(diào)用的應(yīng)用。
被調(diào)用方框架
被調(diào)用的應(yīng)用所使用的框架,選擇Dubbo。
添加所有接口規(guī)則
重要所有接口的通用規(guī)則僅支持添加一次。
被調(diào)用方接口
默認(rèn)為所有服務(wù) / 所有接口,且該參數(shù)值不可修改。
鑒權(quán)方式
服務(wù)鑒權(quán)的方式。包含白名單(允許調(diào)用)和黑名單(拒絕調(diào)用),請(qǐng)根據(jù)實(shí)際鑒權(quán)需求選擇。
調(diào)用方
需要鑒權(quán)的調(diào)用方。
調(diào)用方類型:應(yīng)用、網(wǎng)關(guān)和任意來源。您可按需選擇EDAS應(yīng)用和MSE網(wǎng)關(guān)作為需要鑒權(quán)的調(diào)用方,也可選擇任意來源將接口完全公開。
說明應(yīng)用和網(wǎng)關(guān)可同時(shí)選擇,您可添加多個(gè)應(yīng)用和多個(gè)網(wǎng)關(guān)。
任意來源與應(yīng)用、網(wǎng)關(guān)互斥。
添加指定接口規(guī)則
重要指定接口添加的規(guī)則不是追加,而是覆蓋針對(duì)所有接口的通用規(guī)則,請(qǐng)謹(jǐn)慎配置。
被調(diào)用方接口
指定被調(diào)用應(yīng)用的服務(wù)和接口。
鑒權(quán)方式
服務(wù)鑒權(quán)的方式,包含白名單(允許調(diào)用)和黑名單(拒絕調(diào)用),請(qǐng)根據(jù)實(shí)際鑒權(quán)需求選擇。
調(diào)用方
需要鑒權(quán)的調(diào)用方。
調(diào)用方類型:應(yīng)用、網(wǎng)關(guān)和任意來源。您可按需選擇EDAS應(yīng)用和MSE網(wǎng)關(guān)作為需要鑒權(quán)的調(diào)用方,也可選擇任意來源將接口完全公開。
說明應(yīng)用和網(wǎng)關(guān)可同時(shí)選擇,您可添加多個(gè)應(yīng)用和多個(gè)網(wǎng)關(guān)。
任意來源與應(yīng)用、網(wǎng)關(guān)互斥。
默認(rèn)狀態(tài)
規(guī)則的啟用開關(guān)。
打開:創(chuàng)建后即啟用,默認(rèn)打開。
關(guān)閉:創(chuàng)建后不啟用,需要在服務(wù)鑒權(quán)頁面規(guī)則的操作列,單擊開啟規(guī)則。
結(jié)果驗(yàn)證
服務(wù)鑒權(quán)規(guī)則配置完成且開啟后,請(qǐng)根據(jù)實(shí)際業(yè)務(wù)驗(yàn)證服務(wù)鑒權(quán)規(guī)則是否生效。
相關(guān)操作
服務(wù)鑒權(quán)規(guī)則創(chuàng)建完成后,您還可以在服務(wù)鑒權(quán)頁面,單擊對(duì)應(yīng)規(guī)則操作列的編輯、開啟、關(guān)閉以及刪除,對(duì)規(guī)則進(jìn)行管理。