概述
隨著容器技術的快速發展,原有的分布式任務調度模式正在被基于Kubernetes的技術架構所取代。云容器引擎(Cloud Container Engine,簡稱CCE)是高度可擴展的、高性能的企業級Kubernetes集群,支持社區原生應用和工具。借助云容器引擎,您可以在云上輕松部署、管理和擴展容器化應用程序,快速高效的將微服務部署在云端。
為方便企業中的管理人員對集群中的資源權限進行管理,CCE后臺提供了多種維度的細粒度權限策略和管理方式。CCE的權限管理包括“集群權限”和“命名空間權限”兩種能力,分別從集群和命名空間兩個層面對用戶組或用戶進行細粒度授權,具體解釋如下:
- 集群權限: 是基于IAM系統策略的授權,可以讓用戶組擁有“集群管理”、“節點管理”、“節點池管理”、“模板市場”、“插件管理”權限。
- 命名空間權限: 是基于Kubernetes RBAC能力的授權,可以讓用戶或用戶組擁有Kubernetes資源的權限,如“工作負載”、“網絡管理”、“存儲管理”、“命名空間”等的權限。
基于IAM系統策略的“集群權限”與基于Kubernetes RBAC能力的“命名空間權限”,兩者是完全獨立的,互不影響,但要配合使用。同時,為用戶組設置的權限將作用于用戶組下的全部用戶。當給用戶或用戶組添加多個權限時,多個權限會同時生效(取并集)。
權限設計
下面我們以一個公司為例進行介紹。
通常一個公司中有多個部門或項目,每個部門又有多個成員,所以在配置權限前需要先進行詳細設計,并在設置權限之前提前為每個成員創建用戶名,便于后續對用戶進行用戶組歸屬和權限設置。
下圖為某公司某部門的組織架構圖和相關人員的權限設計,我們將按照該設計對每個角色的權限設置進行演示:


主管:DAVID
用戶“DAVID”為該公司某部門的主管,根據權限設計我們需要為其配置CCE服務的所有權限(包括集群權限和命名空間權限),因此需要在統一身份認證服務 IAM中單獨為DAVID創建用戶組“cce-admin”,并配置所有項目的權限:“CCE Administrator”,這樣主管DAVID的權限就配置好了。
說明
CCE Administrator: CCE的管理員權限,擁有該服務的所有權限,不需要再賦予其他權限。
CCE FullAccess、CCE ReadOnlyAccess: CCE的集群管理權限,僅針對與集群相關的資源(如集群、節點)有效,您必須確保同時配置了“命名空間權限”,才能有操作Kubernetes資源(如工作負載、Service等)的權限。
為主管DAVID所在的用戶組授權


運維組長:JAMES
用戶“JAMES”為該部門的運維組長,需要設置所有項目的集群權限和所有命名空間的只讀權限。
我們需要在統一身份認證服務IAM中先為用戶“JAMES”單獨創建用戶組“cce-sre”并將其添加到用戶組“cce-sre”中,然后為用戶組“cce-sre”配置所有項目的集群權限:“CCE FullAccess”,用戶組“cce-sre”便擁有了所有項目的集群管理權限,接下來還需要為其設置命名空間的只讀權限。
為運維組長JAMES所在的用戶組授權


為所有組長和工程師添加所有集群和命名空間的只讀權限
我們可以在統一身份認證服務IAM中再創建一個只讀用戶組“read_only”,然后將相關用戶都添加到此用戶組中。
- 兩個開發工程師雖然他們不需要配置集群的管理權限,但也需要查看CCE控制臺,因此需要有集群的只讀權限才能滿足需求。
- 運維工程師需要特定資源池集群的管理權限,為方便管理,這里我們先為其賦予集群的只讀權限。
- 運維組長已經擁有了所有集群的管理權限,為方便管理,我們也可以將其添加到“read_only”用戶組中,為其賦予集群的只讀權限。
我們將JAMES、ROBERT、WILLIAM、LINDA、PETER五個用戶都添加到用戶組“read_only”中。
接下來為用戶組“read_only”賦予集群的只讀權限。
圖 為用戶組賦予集群的只讀權限


然后返回CCE控制臺,為這五個用戶所在的用戶組“read_only”增加命名空間的只讀權限,單擊左側欄目樹中的“權限管理 > 命名空間權限”,為用戶組“read_only”逐個賦予所有集群的只讀權限。
圖 為用戶組賦予命名空間的只讀權限


設置完成后,運維組長“JAMES”就擁有了所有項目的集群管理權限和所有命名空間的只讀權限,而開發組長“ROBERT”、運維工程師“WILLIAM”以及兩位開發工程師“LINDA”和“PRTER”則擁有了所有集群和命名空間的只讀權限。
開發組長:ROBERT
用戶“ROBERT”作為開發組的組長,雖然在上一步中已經為其設置了所有集群和命名空間的只讀權限,但顯然還不夠,還需要為其設置所有命名空間的管理權限。
因此需要再單獨為其賦予所有集群下全部命名空間的管理員權限。
為用戶ROBERT賦予命名空間的管理權限


運維工程師:WILLIAM
運維工程師“WILLIAM”雖然也有了所有集群和命名空間的只讀權限,但還需要在統一身份認證服務 IAM中為其設置區域的集群管理權限,因此我們單獨為其創建一個用戶組“cce-sre-b4”,然后配置區域項目的“CCE FullAccess”。
為用戶WILLIAM所在的用戶組配置資源池的集群管理權限


由于之前已經為其設置過所有命名空間的只讀權限,所以運維工程師“WILLIAM”現在就擁有了區域的集群管理權限和所有命名空間的只讀權限。
開發工程師:LINDA、PETER
“LINDA”和“PETER”是開發工程師,由于前面已經在用戶組“read-only”中為兩位工程師配置了集群和命名空間的只讀權限,這里只需要再另外配置相應命名空間的編輯權限即可。
為開發工程師分別配置命名空間的編輯權限


至此,該部門的所有權限就設置完成了。