CCE權限管理是在統一身份認證服務(IAM)與Kubernetes的角色訪問控制(RBAC)的能力基礎上,打造的細粒度權限管理功能,支持基于IAM的細粒度權限控制和IAM Token認證,支持集群級別、命名空間級別的權限控制,幫助用戶便捷靈活的對租戶下的IAM用戶、用戶組設定不同的操作權限。
如果您需要對CCE集群及相關資源進行精細的權限管理,例如限制不同部門的員工擁有部門內資源的細粒度權限,您可以使用CCE權限管理提供的增強能力進行多維度的權限管理。
本章節將介紹CCE權限管理機制及其涉及到的基本概念。如果當前帳號已經能滿足您的要求,您可以跳過本章節,不影響您使用CCE服務的其它功能。
CCE支持的權限管理能力
CCE的權限管理包括“集群權限”和“命名空間權限”兩種能力,能夠從集群和命名空間層面對用戶組或用戶進行細粒度授權,具體解釋如下:
- 集群權限: 是基于IAM系統策略的授權,可以通過用戶組功能實現IAM用戶的授權。用戶組是用戶的集合,通過集群權限設置可以讓某些用戶組操作集群(如創建/刪除集群、節點、節點池、模板、插件等),而讓某些用戶組僅能查看集群。
集群權限涉及CCE非Kubernetes API,支持IAM細粒度策略、企業項目管理相關能力。
- 命名空間權限: 是基于Kubernetes RBAC(Role-Based Access Control,基于角色的訪問控制)能力的授權,通過權限設置可以讓不同的用戶或用戶組擁有操作不同Kubernetes資源的權限。同時CCE基于開源能力進行了增強,可以支持基于IAM用戶或用戶組粒度進行RBAC授權、IAM token直接訪問API進行RBAC認證鑒權。
命名空間權限涉及CCE Kubernetes API,基于Kubernetes RBAC能力進行增強,支持對接IAM用戶/用戶組進行授權和認證鑒權,但與IAM細粒度策略獨立。
CCE從v1.11.7-r2版本起的集群支持配置命名空間權限,1.11.7-r2之前的版本默認擁有全部命名空間權限。
CCE的權限可以從使用的階段分為兩個階段來看,第一個階段是創建和管理集群的權限,也就是擁有創建/刪除集群、節點等資源的權限。第二個階段是使用集群Kubernetes資源(如工作負載、Service等)的權限。
圖 權限示例圖

清楚了集群權限和命名空間權限后,您就可以通過這兩步授權,做到精細化的權限控制。
集群權限(IAM授權)與命名空間權限(Kubernetes RBAC授權)的關系
擁有不同集群權限(IAM授權)的用戶,其擁有的命名空間權限(Kubernetes RBAC授權)不同。下表給出了不同用戶擁有的命名空間權限詳情。
表 不同用戶擁有的命名空間權限
| 用戶類型 | 1.13及以上版本的集群 |
|---|---|
| 擁有Tenant Administrator權限的用戶(例如賬號) | 全部命名空間權限 |
| 擁有CCE Administrator權限的IAM用戶 | 全部命名空間權限 |
| 擁有CCE FullAccess或者CCE ReadOnlyAccess權限的IAM用戶 | 按Kubernetes RBAC授權 |
| 擁有Tenant Guest權限的IAM用戶 | 按Kubernetes RBAC授權 |
kubectl權限說明
您可以通過kubectl訪問集群的Kubernetes資源,那kubectl擁有哪些Kubernetes資源的權限呢?
kubectl訪問CCE集群是通過集群上生成的配置文件(kubeconfig.json)進行認證,kubeconfig.json文件內包含用戶信息,CCE根據用戶信息的權限判斷kubectl有權限訪問哪些Kubernetes資源。即哪個用戶獲取的kubeconfig.json文件,kubeconfig.json就擁有哪個用戶的信息,這樣使用kubectl訪問時就擁有這個用戶的權限。而用戶擁有的權限就是上表所示的權限。
IAM支持的授權項
策略包含系統策略和自定義策略,如果系統策略不滿足授權要求,管理員可以創建自定義策略,并通過給用戶組授予自定義策略來進行精細的訪問控制。策略支持的操作與API相對應,授權項列表說明如下:
- 權限:允許或拒絕某項操作。
- 對應API接口:自定義策略實際調用的API接口。
- 授權項:自定義策略中支持的Action,在自定義策略中的Action中寫入授權項,可以實現授權項對應的權限功能。
- 依賴的授權項:部分Action存在對其他Action的依賴,需要將依賴的Action同時寫入授權項,才能實現對應的權限功能。
- IAM項目(Project)/企業項目(Enterprise Project):自定義策略的授權范圍,包括IAM項目與企業項目。授權范圍如果同時支持IAM項目和企業項目,表示此授權項對應的自定義策略,可以在IAM和企業管理兩個服務中給用戶組授權并生效。如果僅支持IAM項目,不支持企業項目,表示僅能在IAM中給用戶組授權并生效,如果在企業管理中授權,則該自定義策略不生效。
說明“√”表示支持,“x”表示暫不支持。
云容器引擎(CCE)支持的自定義策略授權項如下所示:
表 Cluster
| 權限 | 對應API接口 | 授權項(Action) | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 獲取指定項目下的集群 | GET /api/v3/projects/{project_id} /clusters |
cce:cluster:list | √ | √ |
| 獲取指定的集群 | GET /api/v3/projects/{project_id} /clusters/{cluster_id} |
cce:cluster:get | √ | √ |
| 創建集群 | POST /api/v3/projects/{project_id} /clusters |
cce:cluster:create | √ | √ |
| 更新指定的集群 | PUT /api/v3/projects/{project_id} /clusters/{cluster_id} |
cce:cluster:update | √ | √ |
| 刪除集群 | DELETE /api/v3/projects/{project_id} /clusters/{cluster_id} |
cce:cluster:delete | √ | √ |
| 升級集群 | POST /api/v2/projects/:projectid/clusters /:clusterid/upgrade |
cce:cluster:upgrade | √ | √ |
| 喚醒集群 | POST /api/v3/projects/{project_id}/clusters /{cluster_id}/operation/awake |
cce:cluster:start | √ | √ |
| 休眠集群 | POST /api/v3/projects/{project_id}/clusters /{cluster_id}/operation/hibernate |
cce:cluster:stop | √ | √ |
| 變更集群規格 | POST /api/v2/projects/{project_id} /clusters/:clusterid/resize |
cce:cluster:resize | √ | √ |
| 獲取集群證書 | POST /api/v3/projects/{project_id} /clusters/{cluster_id}/clustercert |
cce:cluster:get | √ | √ |
表 Node
| 權限 | 對應API接口 | 授權項 | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 獲取集群下所有節點 | GET /api/v3/projects/{project_id} /clusters/{cluster_id}/nodes |
cce:node:list | √ | √ |
| 獲取指定的節點 | GET /api/v3/projects/{project_id} /clusters/{cluster_id}/nodes/{node_id} |
cce:node:get | √ | √ |
| 創建節點 | POST /api/v3/projects/{project_id} /clusters/{cluster_id}/nodes |
cce:node:create | √ | √ |
| 更新指定的節點 | PUT /api/v3/projects/{project_id} /clusters/{cluster_id}/nodes/{node_id} |
cce:node:update | √ | √ |
| 刪除節點 | DELETE /api/v3/projects/{project_id} /clusters/{cluster_id}/nodes/{node_id} |
cce:node:delete | √ | √ |
表 Job
| 權限 | 對應API接口 | 授權項 | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 獲取任務信息 | GET /api/v3/projects/{project_id}/jobs/{job_id} |
cce:job:get | √ | √ |
| 列出所有任務 | GET /api/v2/projects/{project_id} /jobs |
cce:job:list | √ | √ |
| 刪除所有任務或刪除單個任務 | DELETE /api/v2/projects/{project_id} /jobsDELETE /api/v2/projects/{project_id}/jobs/{job_id} |
cce:job:delete | √ | √ |
表 Nodepool
| 權限 | 對應API接口 | 授權項 | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 獲取集群下所有 節點池 |
GET /api/v3/projects/{project_id} /clusters/{cluster_id}/nodepools |
cce:nodepool:list | √ | √ |
| 獲取節點池 | GET /api/v3/projects/{project_id} /clusters/{cluster_id}/nodepools/{nodepool_id} |
cce:nodepool:get | √ | √ |
| 創建節點池 | POST /api/v3/projects/{project_id} /clusters/{cluster_id}/nodepools |
cce:nodepool:create | √ | √ |
| 更新節點池信息 | PUT /api/v3/projects/{project_id} /clusters/{cluster_id}/nodepools/{nodepool_id} |
cce:nodepool:update | √ | √ |
| 刪除節點池 | DELETE /api/v3/projects/{project_id} /clusters/{cluster_id}/nodepools/{nodepool_id} |
cce:nodepool:delete | √ | √ |
表 Chart
| 權限 | 對應API接口 | 授權項 | IAM項目(Project) | 企業項目(Enterprise Project) |
|---|---|---|---|---|
| 更新模板 | PUT /v2/charts/{id} | cce:chat:update | √ | × |
| 上傳模板 | POST /v2/charts | cce:chat:upload | √ | × |
| 列出所有模板 | GET /v2/charts | cce:chat:list | √ | × |
| 獲取模板信息 | GET /v2/charts/{id} | cce:chat:get | √ | × |
| 刪除模板 | DELETE /v2/charts/{id} | cce:chat:delete | √ | × |
表 Release
| 權限 | 對應API接口 | 授權項 | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 更新升級模板實例 | PUT /v2/releases/{name} |
cce:release:update | √ | √ |
| 列出所有模板實例 | GET /v2/releases |
cce:release:list | √ | √ |
| 創建模板實例 | POST /v2/releases |
cce:release:create | √ | √ |
| 獲取模板實例信息 | GET /v2/releases/{name} |
cce:release:get | √ | √ |
| 刪除模板實例 | DELETE /v2/releases/{name} |
cce:release:delete | √ | √ |
表 Storage
| 權限 | 對應API接口 | 授權項 | IAM項目(Project) | 企業項目(Enterprise Project) |
|---|---|---|---|---|
| 創建PersistentVolumeClaim | POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims | cce:storage:create | √ | √ |
| 刪除PersistentVolumeClaim | DELETE /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims/{name} | cce:storage:delete | √ | √ |
| 列出所有磁盤 | GET /storage/api/v1/namespaces/{namespace}/listvolumes | cce:storage:list | √ | √ |
表 Addon
| 權限 | 對應API接口 | 授權項 | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 創建插件實例 | POST /api/v3/addons |
cce:addonInstance:create | √ | √ |
| 獲取插件實例 | GET /api/v3/addons/{id}?cluster_id={cluster_id} |
cce:addonInstance:get | √ | √ |
| 列出所有插件實例 | GET /api/v3/addons?cluster_id={cluster_id} |
cce:addonInstance:list | √ | √ |
| 刪除插件實例 | DELETE /api/v3/addons/{id}?cluster_id={cluster_id} |
cce:addonInstance:delete | √ | √ |
| 更新升級插件實例 | PUT /api/v3/addons/{id} |
cce:addonInstance:update | √ | √ |
表 Quota
| 權限 | 對應API接口 | 授權項 | IAM項目 (Project) |
企業項目 (Enterprise Project) |
|---|---|---|---|---|
| 查詢配額詳情 | GET /api/v3/projects/{project_id}/quotas |
cce:quota:get | √ | √ |