Container ServiceACK的授權體系融合了阿里雲存取控制(RAM)與Kubernetes原生的RBAC(Role-Based Access Control)機制,支援對基礎資源層和叢集內部資源的許可權控制,為您提供靈活的多層次許可權管理解決方案。
授權體系
Container ServiceACK的授權體系包含對基礎資源層的RAM授權以及對叢集層的RBAC授權。授權體系如下圖所示。
RAM授權:基於RAM系統策略或自訂策略的授權,屬於雲資源維度授權,通過RAM授權,您可以擷取Container ServiceACK產品及其所依賴阿里雲雲產品的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:叢集角色綁定,定義使用者和叢集角色的關係。
當前Container Service的授權管理僅支援自訂ClusterRole與叢集的RAM使用者或RAM角色的綁定,不支援自訂Role與叢集的RAM使用者或RAM角色的綁定。
Container Service管理主控台預置了多種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。