當您需要按照自身需求定製存取控制策略時,可以在ASM安全性原則中配置自訂授權服務,將請求轉寄至指定的自訂授權服務進行鑒權,便於實現更加複雜的鑒權邏輯,減少開發和維護成本,提高開發效率。
前提條件
操作步驟
-
登入ASM控制台,在左側導覽列,選擇。
-
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇。
-
在ASM安全性原則頁面,單擊建立。在建立ASM安全性原則對話方塊,單擊自訂授權服務,然後單擊確定。
-
在建立自訂授權服務頁面的自訂授權服務配置設定精靈,單擊基於envoy.ext_authz實現的自訂授權服務(HTTP或gRPC協議)頁簽,進行相關配置,然後單擊下一步。
本樣本配置如下。關於配置項的說明,請參見接入HTTP協議的自訂授權服務。配置以下參數:ASM安全性原則名稱(例如
test)、協議(HTTP 或 gRPC)、服務地址(例如ext-authz.default.svc.cluster.local)、服務連接埠(例如8000)和逾時時間(例如10秒)。根據需要開啟鑒權服務不可用時允許存取請求和鑒權服務不可用自訂錯誤碼開關。開啟 在鑒權請求中攜帶header [includeRequestHeadersInCheck] 開關,在下方列表中添加需要攜帶的header欄位,包括cookie、authorization、x-forwarded-access-token、x-forwarded-user、x-forwarded-email、x-forwarded-proto、proxy-authorization、user-agent、x-forwarded-host、from、x-forwarded-for、accept以及自訂headerx-ext-authz。如不需要新增額外header,保持 在鑒權請求中新增header [includeAdditionalHeadersInCheck] 開關關閉即可。開啟鑒權通過時覆蓋Header(headersToUpstreamOnAllow)開關,添加需要覆蓋的header,例如authorization、cookie、path、x-auth-request-access-token、x-forwarded-access-token、x-ext-authz-check-result。開啟鑒權失敗時覆蓋Header(headersToDownstreamOnDeny)開關,添加需要覆蓋的header,例如content-type、set-cookie、x-ext-authz-check-result。其中x-ext-authz-check-result為自訂header,需在鑒權通過和失敗兩個列表中均添加。 -
在工作負載和匹配規則設定精靈,單擊添加工作負載組。在新建工作負載組對話方塊,進行相關配置,然後單擊提交。
本樣本配置如下。
配置項
說明
工作負載組名稱
配置為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安全性原則概述。
-
您可以啟用網格審計功能,記錄或追溯不同使用者的日常操作,也可以為網格資源操作配置審計警示,在重要資源變動時及時發出警示通知到警示連絡人。具體操作,請參見使用KubeAPIAction Trail和為網格資源操作配置審計警示。