當您需要按照自身需求定制訪問控制策略時,可以在ASM安全策略中配置自定義授權服務,將請求轉發至指定的自定義授權服務進行鑒權,便于實現更加復雜的鑒權邏輯,減少開發和維護成本,提高開發效率。
前提條件
操作步驟
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在ASM安全策略頁面,單擊創建。在創建ASM安全策略對話框,單擊自定義授權服務,然后單擊確定。
在創建自定義授權服務頁面的自定義授權服務配置配置向導,單擊基于envoy.ext_authz實現的自定義授權服務(HTTP或gRPC協議)頁簽,進行相關配置,然后單擊下一步。
本示例配置如下。關于配置項的說明,請參見接入HTTP協議的自定義授權服務。
在工作負載和匹配規則配置向導,單擊添加工作負載組。在新建工作負載組對話框,進行相關配置,然后單擊提交。
本示例配置如下。
配置項
說明
工作負載組名稱
配置為test-policy。
工作負載列表
單擊添加工作負載。
在添加工作負載對話框,選中工作負載生效,選擇命名空間為default,工作負載類型為Service。
在選擇負載區域,選中productpage,單擊圖標,將選中的負載添加到已選擇區域,然后單擊確定。
匹配規則列表
匹配模式選擇選中請求必須經過鑒權,匹配規則選中自定義匹配規則,然后打開HTTP路徑(Path)開關,配置為/productpage。
創建成功后,在完成配置向導,會顯示ASM安全策略創建成功。您可以單擊查看YAML查看創建的資源,也可以單擊完成,返回ASM安全策略頁面,查看新創建的安全策略。
驗證自定義授權配置是否生效。
執行以下命令,請求中攜帶
x-ext-authz: allow
,訪問productpage服務。curl -I -H "x-ext-authz: allow" http://${ASM網關IP地址}/productpage
預期輸出:
HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 5288 server: istio-envoy date: Tue, 17 Jan 2023 07:53:14 GMT x-envoy-upstream-service-time: 20
預期輸出表明觸發鑒權且鑒權通過。
執行以下命令,請求中攜帶
x-ext-authz: deny
,訪問productpage服務。curl -I -H "x-ext-authz: deny" http://${ASM網關IP地址}/productpage
預期輸出:
HTTP/1.1 403 Forbidden x-ext-authz-check-result: denied date: Tue, 17 Jan 2023 07:55:27 GMT server: istio-envoy x-envoy-upstream-service-time: 2 transfer-encoding: chunked
預期輸出表明觸發鑒權但鑒權未通過。
以上結果表明自定義授權配置生效。
相關操作
關于ASM安全策略的概念和相關功能說明,請參見ASM安全策略概述。
您可以啟用網格審計功能,記錄或追溯不同用戶的日常操作,也可以為網格資源操作配置審計告警,在重要資源變動時及時發出告警通知到告警聯系人。具體操作,請參見使用KubeAPI操作審計和為網格資源操作配置審計告警。