RBAC(Role-Based Access Control)是角色型存取控制。通過RBAC授權,您可以將許可權與叢集角色相關聯,從而為不同角色成員配置不同的Kubernetes資源操作許可權,降低帳號安全風險。本文介紹如何為RAM使用者(子帳號)或RAM角色配置對應的Kubernetes叢集內RBAC許可權。
配置說明
配置項 | 說明 |
預設許可權 |
|
授權方式 |
說明 開始授權前,請先確保目標RAM使用者或RAM角色在Resource Access Management控制台中已被授予指定叢集的RAM唯讀許可權。 |
授權模式 | 支援對多個目標RAM使用者或RAM角色進行單個和大量授權。 |
由於阿里雲RAM的安全限制,當您通過容器計算服務控制台修改RAM使用者或RAM角色的RAM授權時,請按照頁面提示的參考策略內容和操作說明在RAM控制台為目標RAM使用者或RAM角色進行手動授權。
為RAM使用者或RAM角色授予RBAC許可權
登入容器計算服務控制台,在左側導覽列選擇授權管理。
在授權管理頁面為RAM使用者或RAM角色組態管理許可權。
重要因為ACS叢集是ACK Serverless類型叢集之一,所以如果您已經或者將通過ACK控制台對RAM使用者或RAM角色授予“所有叢集”RBAC許可權,那麼“所有叢集”中包括ACS叢集,您將無法再通過容器計算服務ACS產品控制台對ACS叢集做單獨授權,預設繼承“所有叢集”授權策略。
為RAM使用者授權
單擊子帳號頁簽,在RAM使用者列表,單擊目標RAM使用者右側的系統管理權限,進入許可權管理彈窗頁面。
為RAM角色授權
單擊RAM 角色頁簽,輸入RAM 角色名稱後單擊系統管理權限,進入許可權管理彈窗頁面。
在許可權管理彈窗頁面中單擊+添加許可權,為目標RAM使用者或RAM角色添加叢集和命名空間層級的許可權配置,並選擇相應的預置角色,然後單擊提交授權。
預置角色
叢集內RBAC許可權
管理員
對所有命名空間下所有資源的讀寫權限。
營運人員
對所有命名空間下控制台可見Kubernetes資源的讀寫權限,對叢集儲存卷、命名空間、配額的唯讀許可權。
開發人員
對所有命名空間或所選命名空間下控制台可見Kubernetes資源的讀寫權限。
受限使用者
對所有命名空間或所選命名空間下控制台可見Kubernetes資源的唯讀許可權。
自訂
許可權由您所選擇的ClusterRole決定,請在確定所選ClusterRole對各類資源的操作許可權後再進行授權,以免RAM使用者或RAM角色獲得不符合預期的許可權。您可以參考下文,展開查看如何查看自訂許可權。
重要RAM使用者或RAM角色被授予cluster-admin許可權後,在該叢集內可視為與阿里雲帳號有相同許可權的超級帳號,擁有操作叢集內所有資源的任意許可權,請務必謹慎授權。
配置完成後,您可以使用目標RAM使用者或RAM角色登入容器計算服務控制台,並進行相關操作。
說明請確保您需要使用的RAM使用者或RAM角色已完成叢集的RAM授權,同時已被授予叢集內RBAC管理員權限或cluster-admin角色。詳細操作,請參見為RAM使用者或RAM角色授予RAM許可權。
ACS預置角色包括管理員、營運人員、開發人員和受限使用者四種標準的存取權限,可滿足大部分使用者的使用需求。如果您想自由定義叢集的存取權限,可選擇ACS內建的自訂角色,使用自訂許可權功能。
在一個目的地組群或命名空間中為RAM使用者或RAM角色的授權時,支援配置一個預置角色和多個自訂角色。
如果您希望在所有叢集維度為RAM使用者或RAM角色進行一鍵授權,使得後續新建立的叢集也會為被授權的RAM使用者或RAM角色自動綁定已經授權的預置角色,您可以選擇叢集為所有叢集。
通過RAM使用者或RAM角色為其他帳號授予RBAC許可權
預設情況下,RAM使用者或RAM角色不具備對其他RAM使用者或RAM角色進行RBAC授權的能力。如果您需要通過某個RAM使用者或RAM角色為其他帳號進行RBAC授權,您需要使用阿里雲帳號或具備所有叢集RBAC管理員角色的RAM使用者為該RAM使用者或RAM角色授予所需的RAM許可權和RBAC許可權。
RAM許可權
您需要給該RAM使用者或RAM角色授予相應的RAM權限原則,策略包括以下內容:
查看其他RAM帳號。
授予RAM權限原則。
查看叢集資訊。
查看RBAC許可權配置。
RBAC授權能力。
登入Resource Access Management控制台,參考以下程式碼範例,為該RAM使用者或RAM角色授予所需的RAM許可權。更多資訊,請參見為RAM使用者或RAM角色授予RAM許可權。
重要請將
xxxxxx替換為需要綁定的RAM策略的名稱。替換為*,表示RAM使用者或RAM角色擁有所有RAM策略的授權綁定能力。“Resource”:“*” 表示授權該uid下所有資源的鑒權Action操作,ACK OpenAPI (cs:*) 包括除ACS類型叢集外所有ACK叢集操作許可權,請務必謹慎授權。{ "Statement": [{ "Action": [ "ram:Get*", "ram:List*", "cs:DescribeClustersV1", "cs:GrantPermission" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ram:AttachPolicyToUser", "ram:AttachPolicy" ], "Effect": "Allow", "Resource": [ "acs:ram:*:*:policy/xxxxxx", "acs:*:*:*:user/*" ] } ], "Version": "1" }授權完成後,該RAM使用者或RAM角色可以在指定策略範圍內對其他RAM使用者或RAM角色進行RAM授權。
RBAC許可權
授予所需的RAM許可權後,您還需要為該RAM使用者或RAM角色在目的地組群或命名空間上授予預置角色管理員或者自訂權限原則中的cluster-admin角色。具體操作,請參見授權對象為叢集內應用的許可權管理員。
將RAM使用者或RAM角色設定為許可權管理員
如果您不方便使用阿里雲帳號為RAM使用者或RAM角色進行授權,您可以將某個RAM使用者或RAM角色設定為許可權管理員,隨後使用該RAM使用者或RAM角色進行授權操作。
登入Resource Access Management控制台,定位目標RAM使用者或RAM角色。
RAM使用者
選擇,在使用者列表的操作列,單擊添加許可權。
RAM角色
選擇,在角色列表的操作列,單擊添加許可權。
在新增授權彈窗頁面中,點擊權限原則中的搜尋方塊,根據名稱分別搜尋
AliyunRAMFullAccess和AliyunACCFullAccess系統策略,然後勾選策略添加到右側的已選擇權限原則地區,接著單擊確認新增授權並關閉彈窗完成授權。登入容器計算服務控制台為該RAM使用者或RAM角色在所有叢集維度授予預置角色管理員。具體操作,請參見為RAM使用者或RAM角色授予RBAC許可權。
完成上述步驟後,該RAM使用者或RAM角色成為一個許可權管理員,擁有給其他RAM使用者或RAM角色進行RAM授權和RBAC授權的能力。
無許可權錯誤碼說明
當您通過控制台或OpenAPI所做的部分操作缺少所需的RBAC許可權時,控制台或OpenAPI將返回相應的無許可權錯誤碼。各個錯誤碼對應操作所需的叢集RBAC許可權說明如下表所示。
錯誤碼或錯誤資訊 | 所需的叢集RBAC許可權 |
ForbiddenCheckControlPlaneLog | 管理員或營運人員許可權。 |
ForbiddenHelmUsage | 管理員權限。 |
ForbiddenRotateCert | 管理員權限。 |
ForbiddenQueryClusterNamespace | 管理員、營運人員、開發人員或受限使用者權限。 |