開放策略代理(OPA)外掛程式通過為應用注入OPA Sidecar代理來定義存取控制策略。當您需要對特定命名空間的應用程式進行精細化授權和存取控制時,可以啟用OPA注入範圍控制功能,僅添加了opa-istio-injection=enabled
標籤的命名空間下的Pod會注入OPA Sidecar代理,實現更細粒度的存取控制。
前提條件
已添加叢集到ASM執行個體,且ASM執行個體為1.12.4.19及以上版本。具體操作,請參見添加叢集到ASM執行個體。
已建立default和develop命名空間。具體操作,請參見管理命名空間與配額。
已在default命名空間下部署Nginx應用,在develop命名空間下部署Sleep應用。更多資訊,請參見建立無狀態工作負載Deployment。
步驟一:啟用OPA外掛程式和注入範圍控制
本文啟用OPA外掛程式和注入範圍控制後,為default命名空間添加opa-istio-injection=enabled
標籤,develop命名空間則不添加opa-istio-injection=enabled
標籤,查看Nginx應用和Sleep應用是否都注入OPA Sidecar代理,從而驗證控制OPA Sidecar代理注入範圍是否成功。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在OPA策略頁面,選中啟用開放策略代理OPA外掛程式和啟用OPA注入範圍控制,單擊開啟OPA功能,在提示對話方塊,單擊確定。
步驟二:為命名空間添加標籤
下文介紹如何在ACK控制台上為default命名空間添加opa-istio-injection=enabled
標籤。您也可以通過kubectl工具串連叢集,執行kubectl label namespace default opa-istio-injection=enabled --overwrite
命令,為命名空間添加標籤。關於串連叢集的具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇命名空間與配額。
在命名空間頁面,單擊default命名空間右側操作列下的編輯。
在編輯命名空間對話方塊,設定標籤名稱為opa-istio-injection,值為enabled,單擊添加,然後單擊確定。
步驟三:重啟應用
通過刪除Pod的方式使應用重啟。重啟應用後,會自動注入OPA Sideacr代理。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在容器組頁面頂部,設定命名空間為default,單擊Nginx應用Pod右側操作列下的 ,在提示對話方塊,單擊確定。
如果應用下有多個Pod,您需要刪除多個Pod,使應用重啟。Pod狀態顯示為Running,說明Pod重啟成功。
重複執行以上操作,重啟develop命名空間下Sleep應用的Pod。
步驟四:驗證控制OPA注入範圍是否成功
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在容器組頁面,查看Nginx和Sleep應用是否注入OPA Sidecar代理。
設定命名空間為default,單擊Nginx應用的名稱,在容器頁簽下可以看到opa-istio,說明Nginx應用注入OPA Sidecar代理。
設定命名空間為develop,單擊Sleep應用的名稱,在容器頁簽下沒有看到opa-istio,說明Sleep應用未注入OPA Sidecar代理。
通過以上操作,可以看到啟用OPA注入範圍控制功能後,添加
opa-istio-injection=enabled
標籤的命名空間下的應用注入了OPA Sidecar代理,沒有添加opa-istio-injection=enabled
標籤的命名空間下的應用未注入了OPA Sidecar代理,說明控制OPA注入範圍成功。