全部產品
Search
文件中心

Container Service for Kubernetes:使用RBAC為叢集內資源操作授權

更新時間:Sep 19, 2025

操作ACK叢集需遵循RAM和Kubernetes RBAC的雙重授權。預設情況下,僅阿里雲帳號和叢集建立者擁有叢集的完整許可權。其他RAM使用者或角色在獲得訪問叢集的RAM授權後,仍需具有RBAC許可權,才能對叢集內的Kubernetes資源進行操作。

工作原理

ACK的授權體系包括阿里雲RAM和Kubernetes RBAC兩個層級,構成了從雲資源到叢集資源的完整授權鏈路。

  • RAM:決定了誰能“進入”叢集的大門。負責在雲資源層面進行授權,控制使用者對ACK叢集及其依賴雲產品的OpenAPI操作許可權。

  • RBAC:決定了使用者“進入”大門後能做什麼。負責在叢集內部進行精細化授權,定義使用者能對哪些Kubernetes資源(如Pod、Deployment)執行何種操作(如建立、刪除)。

Kubernetes RBAC 機制

  • ClusterRole:定義一個在整個叢集範圍生效的許可權集合,再通過ClusterRoleBinding將其綁定至授權主體,使其許可權在整個叢集內生效。

  • Role:定義一個僅在單個命名空間內有效許可權集合,再通過RoleBinding將其綁定至授權主體,使其許可權僅在當前命名空間內生效。

情境一:使用阿里雲帳號進行RBAC授權

  1. 登入Container Service管理主控台,在左側導覽列選擇授權管理

  2. 授權管理頁面組態管理許可權。

    • 為RAM使用者授權:單擊RAM 使用者頁簽,定位目標 RAM 使用者,單擊操作列的系統管理權限,進入許可權管理頁面。

    • 為RAM角色授權:單擊RAM 角色頁簽,定位目標 RAM 角色,單擊系統管理權限,進入許可權管理頁面。

  3. 單擊+ 添加許可權,按照頁面提示為目標RAM使用者或角色添加叢集或命名空間層級的許可權配置,並選擇預置角色。

情境二:使用RAM使用者或角色進行RBAC授權

預設情況下,RAM使用者或角色無法為其他帳號授予RBAC許可權。為便於許可權管理,ACK支援指定某個RAM使用者或角色為許可權管理員,使其能夠為其他使用者授予RBAC許可權。

步驟一:將RAM使用者或角色設定為許可權管理員

1. 獲得授權所需的RAM許可權

方式一:系統策略授權

重要

系統策略需使用AliyunRAMReadOnlyAccess和AliyunCSFullAccess,許可權較大。如需精細化授權,請使用方式二:自訂策略精細化授權

  1. 使用阿里雲帳號登入Resource Access Management控制台,定位目標RAM使用者或角色。

    • RAM使用者:選擇身份管理 > 使用者,在使用者列表的操作列,單擊添加許可權

    • RAM角色:選擇身份管理 > 角色,在角色列表的操作列,單擊添加許可權

  2. 選擇資源範圍帳號層級,在權限原則地區定位並選中系統策略AliyunRAMReadOnlyAccess和AliyunCSFullAccess,按照頁面提示完成授權。

方式二:自訂策略精細化授權

許可權管理員需具備以下能力:

  • 查看其他RAM身份資訊

  • 查看叢集列表和詳情

  • 查看叢集已有的RBAC配置

  • 在叢集中執行RBAC授權操作

請登入Resource Access Management控制台,參考以下程式碼範例,為目標RAM使用者或角色授予所需的RAM許可權。具體操作,請參見使用自訂策略授權

{
    "Statement": [{
            "Action": [
                "ram:Get*",
                "ram:List*",
                "cs:Get*",
                "cs:Describe*",
                "cs:List*",
                "cs:GrantPermission"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ],
    "Version": "1"
}

2. 獲得RBAC管理員權限

使用阿里雲帳號登入Container Service管理主控台,為目標RAM使用者或角色在叢集維度授予預置角色管理員

  1. 登入Container Service管理主控台,在左側導覽列選擇授權管理

  2. 授權管理頁面組態管理許可權。

    • 為RAM使用者授權:單擊RAM 使用者頁簽,定位目標 RAM 使用者,單擊操作列的系統管理權限,進入許可權管理頁面。

    • 為RAM角色授權:單擊RAM 角色頁簽,定位目標 RAM 角色,單擊系統管理權限,進入許可權管理頁面。

  3. 單擊+ 添加許可權,按照頁面提示添加叢集和命名空間層級的許可權配置,選擇預置角色為管理員

    如果在所有叢集維度進行授權,許可權管理員的身份將自動應用到未來建立的叢集,無需重複授權。

步驟二:為其他RAM使用者或角色授予RBAC許可權

完成前置授權後,許可權管理員即可在授權管理頁面為其他RAM使用者或角色授予RBAC許可權。

適用於生產環境

為提升許可權管理的安全性和可維護性,建議遵循以下建議。

  • 遵循最小許可權原則

    僅授予RAM使用者、角色等主體完成其工作所必需的最小許可權集。避免無差別授予管理員等高許可權角色。

  • 實施精細化授權

    • 分層授權:區分RAM(負責雲資源訪問)和RBAC(負責叢集內資源訪問)的職責。

    • 收斂範圍:優先使用RoleBinding將許可權限制在特定的命名空間內,而非叢集層級的ClusterRoleBinding

    • 精確選擇角色:優先使用ACK提供的預置角色。如需自訂角色,應精確定義許可權規則,避免使用萬用字元(*)。

  • 持續治理

    許可權管理是一個動態過程。應建立定期審計機制,及時回收冗餘或過度的授權,並對許可權管理員等高許可權角色的操作進行記錄和監控。

附錄:預置角色說明

為了簡化許可權管理並快速滿足常見的使用者情境,ACK基於RBAC機制封裝了多種標準化的預置角色。

預置角色

叢集內RBAC許可權

管理員

對叢集所有命名空間下Kubernetes資源的RBAC讀寫權限,對叢集節點、儲存卷、命名空間、配額的讀寫權限。

唯讀管理員

對叢集所有命名空間下Kubernetes資源的RBAC唯讀許可權,對叢集節點、儲存卷、命名空間、配額的唯讀許可權。

營運人員

對叢集所有命名空間下控制台可見Kubernetes資源的RBAC讀寫權限,對叢集節點、儲存卷、命名空間的讀取與更新許可權,對其他資源的唯讀許可權。

開發人員

對叢集所有命名空間或所選命名空間下控制台可見Kubernetes資源的RBAC讀寫權限。

受限使用者

對叢集所有命名空間或所選命名空間下控制台可見Kubernetes資源的RBAC唯讀許可權。

自訂

許可權由您所選擇的ClusterRole決定,請在確定所選ClusterRole對各類資源的操作許可權後再進行授權,以免RAM使用者或RAM角色獲得不符合預期的許可權。關於自訂許可權的授權,請參見使用自訂RBAC限制叢集內資源操作

重要

RAM使用者或RAM角色被授予cluster-admin許可權後,在該叢集內可視為與阿里雲帳號有相同許可權的超級帳號,擁有操作叢集內所有資源的任意許可權。請謹慎授予。

常見問題

操作時遇到無許可權錯誤碼怎麼辦?

通過控制台或OpenAPI所做的部分操作缺少所需的RBAC許可權時,將返回相應的無許可權錯誤碼。可參見下表解決。

錯誤碼或錯誤資訊

說明

解決方案

ForbiddenCheckControlPlaneLog

查看控制面日誌被拒絕。

為使用者授予管理員或營運人員許可權。

ForbiddenHelmUsage

執行Helm操作被拒絕。

為使用者授予管理員權限。

ForbiddenRotateCert

認證輪換被拒絕。

為使用者授予管理員權限。

ForbiddenAttachInstance

添加節點被拒絕。

為使用者授予管理員或營運人員許可權。

ForbiddenUpdateKMSState

修改叢集KMS落盤加密狀態被拒絕。

為使用者授予管理員或營運人員許可權。

Forbidden get trigger

擷取應用觸發器資訊被拒絕。

為使用者授予管理員、營運人員或開發人員許可權。

ForbiddenQueryClusterNamespace

查詢叢集命名空間被拒絕。

為使用者授予管理員、營運人員、開發人員或受限使用者的許可權。

RBAC預置角色不滿足需求,如何建立自訂許可權?

可通過編寫YAML來建立自訂Role或ClusterRole。例如,建立一個只允許查看Pod的ClusterRole,然後在授權時選擇自訂許可權並綁定對應的ClusterRole。具體操作,請參見使用自訂RBAC限制叢集內資源操作

RBAC的權限原則僅支援允許(Allow)訪問資源,不支援顯式拒絕(Deny)訪問資源。

相關文檔