全部產品
Search
文件中心

Container Service for Kubernetes:使用RAM和RBAC進行存取權限控制

更新時間:Nov 01, 2024

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授權

  • RAM使用者或RAM角色必須授權。

  • 阿里雲帳號預設擁有許可權,無需授權。

  • 服務角色:首次使用Container ServiceACK時,使用阿里雲帳號(主帳號)或者RAM帳號管理員(子帳號)進行一次授權即可。

  • 支援RAM系統策略授權和自訂策略授權,授權後,RAM使用者或RAM角色才能訪問其他關聯雲端服務資源。

  • 服務角色授權後,可以允許服務角色代您訪問Container ServiceACK以及其他雲端服務資源。關於容器ACK服務角色,請參見Container ServiceACK服務角色

RBAC授權

  • RAM使用者或RAM角色必須授權。

  • 阿里雲帳號預設擁有許可權,無需授權。

授權後,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