當您的某個微服務應用有安全要求時,您可以對該應用進行接口或方法粒度的訪問控制,對調用方進行訪問鑒權,僅允許匹配鑒權規則的調用方發起調用,以此提高應用的安全性。本文介紹如何使用服務鑒權實現Spring Cloud應用的訪問控制。
使用場景
未配置服務鑒權
- 同一命名空間內的服務可以相互調用,Consumer 1、Consumer 2和Consumer 3默認可以調用Provider的所有Path(Path 1、Path 2和Path 3)。
- 使用MSE網關對Consumer服務進行路由轉發,Gateway 1和Gateway 2可以調用Consumer 1、Consumer 2、Consumer 3三個應用實例。
配置服務鑒權
- 設置所有接口的鑒權:
- 對Provider的所有接口設置鑒權規則。例如,Provider設置所有接口鑒權規則為:將Consumer 1加入黑名單(拒絕訪問),Consumer 2、Consumer 3加入白名單(允許調用)。
- 對Consumer的所有接口設置鑒權規則。例如,Consumer 1只允許Gateway 1的調用,Consumer 2、Consumer 3只允許Gateway 2的調用,需進行如下操作。
- Consumer 1設置所有接口鑒權規則,將Gateway 1加入白名單(允許調用)。
- Consumer 2、Consumer 3設置所有接口鑒權規則,將Gateway 2加入白名單(允許調用)。
- 設置指定接口的鑒權:
在設置所有Path的鑒權基礎上,還可設置Consumer指定Path的鑒權規則。例如,在設置所有Path的鑒權方式下,Consumer 2、Consumer 3可以訪問Provider的所有Path,但Provider的Path 2涉及一些核心業務或數據,不希望Consumer 2調用,可以將Path 2對Consumer 2的鑒權方式設置為黑名單(拒絕調用),則Consumer 2只能訪問Provider的Path 1和Path 3。
設置鑒權規則的調用示意圖如下所示。
說明
- 對于作為Readiness或Liveness健康探針的接口,為避免因服務鑒權規則導致應用健康檢查失敗,請設置該接口的鑒權方式為白名單(允許調用),且調用方為任意來源。
- 對于在EDAS服務鑒權規則中引用的MSE網關實例,EDAS會默認開啟網關插件edas-service-auth。請勿在MSE網關管理控制臺隨意更改該插件的開啟狀態和配置內容。
創建服務鑒權規則
- 登錄EDAS控制臺。
- 在左側導航欄,選擇 。
- 在Spring Cloud左側導航欄,單擊服務鑒權。
- 在服務鑒權頁面,選擇所屬微服務空間后,單擊創建規則。
- 在創建規則面板設置服務鑒權參數,然后單擊確定。
服務鑒權規則參數說明:
配置項 說明 微服務空間 服務所在的地域和微服務空間。 規則名稱 鑒權規則名稱。 被調用方類型 默認為應用。 被調用方(應用) 被調用的應用。 被調用方框架 被調用的應用所使用的框架,選擇Spring Cloud。 防重放機制 開啟防重放機制開關后,可在一定程度上防止重放攻擊。EDAS對于調用請求會進行超時控制和簽名驗證,請求過期或簽名驗證錯誤的請求將拒絕調用。您可自定義請求過期時間,單位:秒。 添加所有接口規則 重要 所有接口的通用規則僅支持添加一次。被調用方Path 默認為所有Path,且該參數值不可修改。 鑒權方式 服務鑒權的方式。包含白名單(允許調用)和黑名單(拒絕調用),請根據實際鑒權需求選擇。 調用方 需要鑒權的調用方。 調用方類型:應用、網關和任意來源。您可按需選擇EDAS應用和MSE網關作為需要鑒權的調用方,也可選擇任意來源將接口完全公開。
說明- 應用和網關可同時選擇,您可添加多個應用和多個網關。
- 任意來源與應用、網關互斥。
添加指定接口規則 重要 指定接口添加的規則不是追加,而是覆蓋針對所有接口的通用規則,請謹慎配置。被調用方Path 指定被調用應用的Path。 鑒權方式 服務鑒權的方式。支持白名單(允許調用)和黑名單(拒絕調用),請根據實際鑒權需求選擇。 調用方 需要鑒權的調用方。 調用方類型:應用、網關和任意來源。您可按需選擇EDAS應用和MSE網關作為需要鑒權的調用方,也可選擇任意來源將接口完全公開。
說明- 應用和網關可同時選擇,您可添加多個應用和多個網關。
- 任意來源與應用、網關互斥。
默認狀態 規則的啟用開關。 - 打開:創建后即啟用,默認打開。
- 關閉:創建后不啟用,需在服務鑒權頁面規則的操作列,單擊開啟規則。
結果驗證
服務鑒權規則配置完成且開啟后,請根據實際業務驗證服務鑒權規則是否生效。
相關操作
服務鑒權規則創建完成后,您還可以在服務鑒權頁面,單擊對應規則操作列的編輯、開啟、關閉以及刪除,對規則進行管理。