idou老師教你學istio :基於角色的訪問控制

雲容器大師發表於2018-12-05

istio的授權功能,也稱為基於角色的訪問控制(RBAC),它為istio服務網格中的服務提供名稱空間級別、服務級別和方法級別的訪問控制。基於角色的訪問控制具有簡單易用、靈活和高效能等特性。本文介紹如何在服務網格中為服務進行授權控制。

   

·前置條件·

•安裝istio的k8s叢集,啟用認證功能、雙向TLS認證

•部署bookinfo示例應用

 

下面基於bookinfo應用例項具體介紹如何啟用授權並配置訪問控制策略:

 

1. 建立service accout,啟用訪問控制

我們在service account的基礎上啟用訪問控制,為了給不同的微服務授予不同的訪問許可權,需要建立不同的service account,在本例中:

建立Service account: bookinfo-productpage,並用它部署 productpage;

建立 Service account:bookinfo-reviews,並用它部署 reviews(其中包含 reviews-v2 和 reviews-v3 兩個版本)。

清理所有現存RBAC規則:

此時,用瀏覽器開啟bookinfo的productpage頁面,會看到:

2. 啟用Istio授權

使用 RbacConfig 物件啟用 Istio Authorization:

此時,bookinfo的productpage頁面,會看到:

 

3. 設定名稱空間級的訪問控制

這一策略建立service-viewer 的 ServiceRole,通過constraints指定了允許訪問的服務範圍:

建立 ServiceRoleBinding 物件,用來把 service-viewer 角色指派給所有 istio-system 和 default 名稱空間的服務:

用瀏覽器開啟bookinfo的productpage頁面,會看到完整的頁面:

4. 配置服務級的訪問控制

清除名稱空間級的訪問控制

下面在bookinfo中逐步為服務加入訪問:

1) 允許到productpage服務的訪問

這條策略中建立了名稱為 productpage-viewer的ServiceRole,它允許到 productpage 服務的讀取訪問,並建立命名為 productpage-viewer的 ServiceRole,將 productpage-viewer 角色賦予給所有使用者和服務

此時,用瀏覽器開啟bookinfo的productpage頁面,會顯示 Error fetching product details 和 Error fetching product reviews 的錯誤資訊:

出現上述現象是因為我們還沒有給productpage授權訪問details 和 reviews 服務,下面兩步修復這個問題。

2) 允許對details和reviews服務的訪問

details-reviews-viewer:允許對 details 和 reviews 服務進行只讀訪問

bind-details-review: 把 details-reviews-viewer 角色授予給productpage 服務的 Service account

3) 允許對ratings服務的訪問

ratings-viewer: 允許對ratings服務的訪問

rind-ratings: 將ratings-viewer角色指派給bookinfo-reviews這個Service account

此時,用瀏覽器開啟bookinfo的productpage頁面,會看到完整的頁面。

 

總結:通過上述步驟,我們可以快捷的啟用授權功能,並靈活定製訪問控制策略來滿足不同的安全訪問需求。

相關文章