容器服務ACK的授權體系融合了阿里云訪問控制(RAM)與Kubernetes原生的RBAC(Role-Based Access Control)機制,支持對基礎資源層和集群內部資源的權限控制,為您提供靈活的多層次權限管理解決方案。
授權體系
容器服務ACK的授權體系包含對基礎資源層的RAM授權以及對集群層的RBAC授權。授權體系如下圖所示。
RAM授權:基于RAM系統策略或自定義策略的授權,屬于云資源維度的授權,通過RAM授權,您可以獲取容器服務ACK產品及其所依賴阿里云云產品的OpenAPI操作權限,對集群進行如下運維操作:
集群:創建、查看、升級、刪除
節點池:創建、修改、擴縮容
授權管理
集群監控、日志、事件
RBAC授權:基于Kubernetes RBAC的授權,屬于集群內部資源維度的授權,通過RBAC授權,可以讓不同的用戶擁有操作不同Kubernetes資源的操作權限。主要包括對以下Kubernetes對象資源的增刪改查操作:
工作負載:Deployment、StatefulSet、DaemonSet、Job、CronJob、Pod、ReplicaSet等
網絡:Service、Ingress、NetworkPolicy等
存儲:PV、PVC、StorageClass等
Namespace、ConfigMap 、Secrets等
權限類型
權限類型 | 是否必須授權 | 權限說明 |
RAM授權 |
|
|
RBAC授權 |
| 授權后,RAM用戶或RAM角色才能對集群內的Kubernetes資源進行操作。 |
RAM授權
默認情況下,RAM用戶或RAM角色沒有使用云服務OpenAPI的任何權限,當您需要通過RAM用戶或RAM角色管理云服務資源時,您可以為RAM用戶或RAM角色配置系統策略及自定義策略的權限,以適應不同的場景需求。具體操作,請參見使用RAM授予集群及云資源訪問權限。
RAM授權其他使用場景
您可以使用標簽對集群做分類,并匹配對應的RAM權限策略,實現集群的精細化權限管理,使不同的用戶可以擁有不同的集群的訪問權限。具體操作,請參見通過標簽實現精細化權限管理。
當您通過Worker RAM角色為特定的應用授權時,權限將會共享給集群內所有的節點,可能會存在非預期的權限擴散的風險。您可以在創建節點池時為其指定一個自定義的Worker RAM角色,通過為不同的節點池分配特定的角色,降低在集群所有節點中共用一個Worker RAM角色可能存在的風險。具體操作,請參見使用自定義Worker RAM角色。
如需提升集群內應用訪問其他云服務的安全性,您可以通過RRSA配置ServiceAccount的RAM權限實現Pod權限隔離。具體操作,請參見通過RRSA配置ServiceAccount的RAM權限實現Pod權限隔離。
為了提升ACK托管集群節點的安全性,您可以基于最小化原則手動調整和優化已分配給Worker節點的RAM角色所具有的權限。具體操作,請參見手動收斂ACK托管版集群的Worker RAM角色權限。
RBAC授權
RAM授權后僅擁有集群的操作權限,若RAM用戶或RAM角色需要操作指定集群內Kubernetes資源時(例如,獲取集群Pod和節點信息),您需要在的授權管理頁面對指定RAM用戶或RAM角色進行RBAC授權。
Kubernetes RBAC支持以下類型的角色和綁定,通過角色定義資源的訪問權限時,僅支持允許訪問資源,不支持拒絕訪問資源。關于如何編寫Kubernetes的ClusterRole和Role,請參見使用自定義RBAC限制集群內資源操作。
Role:角色,定義對單個命名空間內資源的訪問權限。
RoleBinding:角色綁定,定義用戶和角色的關系。
ClusterRole:集群角色,定義對整個集群內資源的訪問權限。
ClusterRoleBinding:集群角色綁定,定義用戶和集群角色的關系。
當前容器服務的授權管理僅支持自定義ClusterRole與集群的RAM用戶或RAM角色的綁定,不支持自定義Role與集群的RAM用戶或RAM角色的綁定。
容器服務管理控制臺預置了多種ClusterRole,方便您為RAM用戶或角色分配對應的權限。具體操作,請參見使用RBAC授予集群內資源操作權限。
表 1. 角色權限說明
角色 | 集群內RBAC權限 |
管理員 | 對所有命名空間下所有資源的讀寫權限。 |
運維人員 | 對所有命名空間下控制臺可見資源的讀寫權限,對集群節點、存儲卷、命名空間、配額的只讀權限。 |
開發人員 | 對所有命名空間或所選命名空間下控制臺可見資源的讀寫權限。 |
受限用戶 | 對所有命名空間或所選命名空間下控制臺可見資源的只讀權限。 |
自定義 | 權限由您所選擇的ClusterRole決定,請在確定所選ClusterRole對各類資源的操作權限后再進行授權,以免RAM用戶或RAM角色獲得不符合預期的權限。關于ClusterRole的更多信息,請參見使用自定義RBAC限制集群內資源操作。 |
當RAM用戶或RAM角色需要進行集群運維和應用運維時,您需要依次對其進行RAM授權和RBAC授權。在進行RBAC授權前,您需要先進行RAM授權。三種典型場景的授權操作,如下所示:
如果授權對象為集群與集群內應用的運維人員,請參見場景一:授權對象為集群與集群內應用的運維人員。
如果授權對象為集群內應用的開發人員,請參見場景二:授權對象為集群內應用的開發人員。
如果授權對象為集群內應用的權限管理員,請參見場景三:授權對象為集群內應用的權限管理員。
對于離職員工或非受信人員,刪除RAM用戶或RAM角色并不會同步刪除該用戶或角色擁有的集群KubeConfig中的RBAC權限。因此,刪除RAM用戶或RAM角色以后,請您及時清除離職員工或非受信用戶的KubeConfig權限。具體操作,請參見清除KubeConfig。