當您需要精細控制服務間的HTTP流量訪問時,可以為HTTP流量設定授權策略,管理服務之間的互動許可權,確保只有經過授權的請求才能訪問特定服務,提高服務的安全性和可靠性。
前提條件
已定義Istio資源。具體操作,請參見使用Istio資源實現版本流量路由。
步驟一:配置空白授權策略
本文以配置一個基礎的拒絕策略,拒絕對工作負載的所有請求為例,逐步授予對工作負載的其他存取權限。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 ,然後單擊使用YAML建立。
在建立頁面,選擇命名空間為default,選擇任意情境模版,將以下YAML模板粘貼到YAML地區,然後單擊建立。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-nothing namespace: default spec: {}
建立完成後,在授權策略頁面,可以看到allow-nothing授權策略。
在瀏覽器地址欄,輸入
http://{您的ASM網關地址}/productpage
,訪問Bookinfo應用。您可以看到頁面返回
RBAC: access denied
,表示沒有許可權訪問。關於如何擷取網關IP,請參見擷取入口網關地址。
步驟二:配置Productpage服務的授權策略
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
任選以下方式,建立可以訪問Productpage自身服務的授權策略。
方式一:使用YAML建立授權策略
在授權策略頁面,單擊使用YAML建立。
在建立頁面,選擇命名空間為default,選擇任意情境模版,將以下YAML模板粘貼到YAML地區,單擊建立。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: "productpage-viewer" namespace: default spec: selector: matchLabels: app: productpage action: ALLOW rules: - to: - operation: methods: ["GET"]
方式二:通過圖形化介面建立授權策略
在授權策略頁面,單擊建立。
在建立頁面,配置如下資訊,單擊建立。
配置項
說明
名稱
設定為productpage-viewer。
策略類型
選擇允許。
命名空間
在工作負載生效頁簽,設定命名空間為default。
生效範圍
選擇Service。
工作負載
選擇productpage。
請求匹配規則
在添加請求目標地區,開啟HTTP方法(Methods)開關,設定值為GET。
建立完成後,在授權策略頁面,可以看到productpage-viewer授權策略。
在瀏覽器地址欄,輸入
http://{您的ASM網關地址}/productpage
,訪問Bookinfo應用。如下圖所示,由於上一步設定了允許GET請求訪問,所以能夠正常訪問Productpage頁面,但無法訪問Details和Reviews服務。
步驟三:配置Details服務的授權策略
通過配置Details服務的授權策略,允許接收來自Productpage的serviceAccount
發出的請求。
擷取Productpage的
serviceAccount
參數值。登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在無狀態頁面的操作列,單擊productpage-v1對應的
,擷取serviceAccount
參數值。如下圖所示,
serviceAccount
參數值為bookinfo-productpage
。
建立授權策略。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
任選以下方式建立授權策略。
方式一:通過YAML建立授權策略
在授權策略頁面,單擊使用YAML建立。
在建立頁面,選擇命名空間為default,選擇任意情境模版,將如下YAML模板粘貼到YAML地區,單擊建立。
kind: AuthorizationPolicy apiVersion: security.istio.io/v1beta1 metadata: name: details-viewer namespace: default spec: action: ALLOW rules: - to: - operation: methods: - GET - from: - source: principals: - cluster.local/ns/default/sa/bookinfo-productpage # bookinfo-productpage為serviceAccount的參數值,由上一步擷取。 selector: matchLabels: app: details
方式二:通過圖形化介面建立授權策略
在授權策略頁面,單擊建立。
在建立頁面,配置如下資訊,單擊建立。
配置項
說明
名稱
設定為details-viewer。
策略類型
選擇允許。
命名空間
在工作負載生效頁簽,設定命名空間為default。
生效範圍
選擇Service。
工作負載
選擇details。
請求匹配規則
在添加請求來源地區,開啟請求身份(Principals)開關,設定值為cluster.local/ns/default/sa/bookinfo-productpage。
說明bookinfo-productpage
為serviceAccount
的參數值,由步驟1擷取。在添加請求目標地區,開啟HTTP方法(Methods)開關,設定值為GET。
建立完成後,在授權策略頁面,可以看到details-viewer授權策略。
在瀏覽器地址欄,輸入
http://{您的ASM網關地址}/productpage
,訪問Bookinfo應用。如下圖所示,可以正常訪問左側的Details服務,但無法訪問右側的Reviews服務。
步驟四:配置Reviews服務的授權策略
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
任選以下方式建立授權策略。
方式一:使用YAML建立授權策略
在授權策略頁面,單擊使用YAML建立。
在建立頁面,選擇命名空間為default,選擇任意情境模版,將以下YAML模板粘貼到YAML地區,單擊建立。
kind: AuthorizationPolicy apiVersion: security.istio.io/v1beta1 metadata: name: reviews-viewer namespace: default spec: action: ALLOW rules: - to: - operation: methods: - GET - from: - source: principals: - cluster.local/ns/default/sa/bookinfo-productpage selector: matchLabels: app: reviews
方式二:使用圖形化介面建立授權策略。
在授權策略頁面,單擊建立。
在建立頁面,配置如下資訊,單擊建立。
配置項
說明
名稱
設定為reviews-viewer。
策略類型
選擇允許。
命名空間
在工作負載生效頁簽,設定命名空間為default。
生效範圍
選擇Service。
工作負載
選擇reviews。
請求匹配規則
在添加請求來源地區,開啟請求身份(Principals)開關,設定值為cluster.local/ns/default/sa/bookinfo-productpage。
說明bookinfo-productpage
為serviceAccount
的參數值,由步驟1擷取。在添加請求目標地區,開啟HTTP方法(Methods)開關,設定值為GET。
建立完成後,在授權策略頁面,可以看到reviews-viewer授權策略。
在瀏覽器地址欄,輸入
http://{您的ASM網關地址}/productpage
,訪問Bookinfo應用。如下圖所示,左側的Details服務和右側的Reviews服務均可正常訪問。
相關文檔
對授權策略配置失誤可能會引起非預期的訪問被拒絕或允許存取,您可以使用ASM授權策略試運行模式,通過日誌判斷對應策略的執行結果是否符合預期,確認無誤後關閉試運行模式,使授權策略真正生效。具體操作,請參見使用ASM授權策略試運行模式。
如果您需要精細控制服務間的TCP流量訪問,請參見為TCP流量設定授權策略。
如果您需要對網格外服務進行授權控制,請參見對網格內服務訪問外部網站進行授權控制和對網格內服務訪問外部資料庫進行授權控制。
您可以自訂ASM網關訪問日誌的內容,及時發現潛在的安全問題。具體操作,請參見產生和採集ASM網關訪問日誌。
您可以啟用網格審計功能,記錄或追溯不同使用者的日常操作,也可以為網格資源操作配置審計警示,在重要資源變動時及時發出警示通知到警示連絡人。具體操作,請參見使用KubeAPIAction Trail和為網格資源操作配置審計警示。