RBAC(Role-Based Access Control)是角色型存取控制。您可以通過Role和ClusterRole定義可操作的資來源物件,通過RoleBinding和ClusterRoleBinding將角色綁定到特定的使用者,從而實現RBAC許可權配置,讓不同使用者擁有不同的Kubernetes資源操作許可權。RAM使用者或RAM角色進行叢集RAM授權之後,您還需要對其進行叢集內部資源的RBAC授權,才能對叢集內Kubernetes資源進行操作,例如建立Deployment、Service。
RBAC工作原理
Kubernetes RBAC支援以下類型的角色和綁定,通過角色定義資源的存取權限時,僅支援允許訪問資源,不支援拒絕訪問資源。關於如何編寫Kubernetes的ClusterRole和Role,請參見使用自訂RBAC限制叢集內資源操作。
Role:角色,定義對單個命名空間內資源的存取權限。
RoleBinding:角色綁定,定義使用者和角色的關係。
ClusterRole:叢集角色,定義對整個叢集內資源的存取權限。
ClusterRoleBinding:叢集角色綁定,定義使用者和叢集角色的關係。
前提條件
RAM使用者或RAM角色已擷取目的地組群的RAM唯讀許可權,參考策略如下。具體操作,請參見使用自訂策略授權。
授權說明
阿里雲帳號(主帳號)可以對所有叢集進行所有操作,RAM使用者或RAM角色擁有自己建立的叢集的所有操作許可權,非叢集建立者的RAM使用者或RAM角色,需要額外進行RAM和RBAC授權,才能操作叢集。
操作步驟
Container ServiceACK預設提供管理員、營運人員、開發人員和受限使用者這四種標準的叢集資源RBAC存取權限,可滿足大部分使用者在Container Service控制台上的使用需求。如果您想自由定義叢集資源的RBAC存取權限,請參見使用自訂RBAC限制叢集內資源操作。
滿足以下條件的帳號才可以為其他RAM使用者或RAM角色進行授權。
阿里雲帳號(主帳號)。
擁有管理員權限的RAM使用者或RAM角色。
使用阿里雲帳號授權
登入Container Service管理主控台,在左側導覽列選擇授權管理。
在授權管理頁面組態管理許可權。
為RAM使用者授權
單擊RAM 使用者頁簽,在RAM使用者列表中,單擊目標RAM使用者右側的系統管理權限,進入許可權管理頁面,您也可以選擇多個目標RAM使用者進行大量授權。
為RAM角色授權
單擊RAM 角色頁簽,輸入RAM 角色名稱,然後單擊系統管理權限,進入許可權管理頁面。
說明RAM角色支援手動輸入,也支援在下拉式清單中選擇。您可以單擊RAM角色右側空白框,將會顯示已有的RAM角色列表,然後從列表中選擇已有的RAM角色進行授權。
單擊+ 添加許可權,為目標RAM使用者或RAM角色添加叢集和命名空間層級的許可權配置,並選擇相應的預置角色,然後單擊提交授權。
說明在一個目的地組群或命名空間中為RAM使用者或RAM角色的授權時,支援配置一個預置角色、多個自訂角色,此時,所獲得的許可權為多個角色許可權的並集。
如果您需要在所有叢集維度為RAM使用者或RAM角色進行一鍵授權,使得後續新建立的叢集也會為被授權的RAM使用者或RAM角色自動綁定已經授權的預置角色,您可以選擇叢集為所有叢集。
預置角色
叢集內RBAC許可權
管理員
對叢集所有命名空間下Kubernetes資源的RBAC讀寫權限,以及對叢集節點、儲存卷、命名空間、配額的讀寫權限。
營運人員
對所有命名空間下控制台可見Kubernetes資源的讀寫權限,對叢集節點、儲存卷、命名空間、配額的唯讀許可權。
開發人員
對所有命名空間或所選命名空間下控制台可見Kubernetes資源的RBAC讀寫權限。
受限使用者
對所有命名空間或所選命名空間下控制台可見Kubernetes資源的RBAC唯讀許可權。
自訂
許可權由您所選擇的ClusterRole決定,請在確定所選ClusterRole對各類資源的操作許可權後再進行授權,以免RAM使用者或RAM角色獲得不符合預期的許可權。關於自訂許可權的授權,請參見使用自訂RBAC限制叢集內資源操作。
重要RAM使用者或RAM角色被授予cluster-admin許可權後,在該叢集內可視為與阿里雲帳號有相同許可權的超級帳號,擁有操作叢集內所有資源的任意許可權。請謹慎授予。
使用RAM使用者或RAM角色授權
阿里雲帳號(主帳號)對帳號中的資源具有完全系統管理權限,您也可以將建立或已有的RAM使用者或角色授予如下RAM許可權和RBAC許可權,使其成為一個許可權管理員,後續使用該RAM使用者或RAM角色進行為其他使用者或角色授權。
步驟一:將RAM使用者或RAM角色設定為許可權管理員
1、擷取RAM授權許可權
使用系統策略授權
使用阿里雲帳號登入Resource Access Management控制台,定位目標RAM使用者或RAM角色。
RAM使用者
選擇
,在使用者列表的操作列,單擊添加許可權。RAM角色
選擇
,在角色列表的操作列,單擊添加許可權。
在彈出面板中,選擇資源範圍為帳號層級,在下拉式清單中選擇權限原則為系統策略,根據名稱搜尋或在列表中找到並選中AliyunRAMFullAccess和AliyunCSFullAccess系統策略,單擊確認新增授權,然後單擊關閉。
重要AliyunRAMFullAccess為高風險許可權,請謹慎授予。如需精細化授權,請參見使用自訂策略精細化授權。
使用自訂策略精細化授權
預設情況下,RAM使用者或RAM角色不具備對其他RAM使用者或角色進行RBAC授權的能力。您需要為其授予如下許可權:
查看其他RAM帳號。
授予RAM權限原則。
查看叢集資訊。
查看RBAC許可權配置。
RBAC授權能力。
登入Resource Access Management控制台,參考以下程式碼範例,為該RAM使用者或RAM角色授予所需的RAM許可權。具體操作,請參見使用自訂策略授權。
請將xxxxxx
替換為需要綁定的RAM策略的名稱。替換為 *,表示RAM使用者或RAM角色擁有所有RAM策略的授權綁定能力。
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:Get*",
"cs:Describe*",
"cs:List*",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicy"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx",
"acs:*:*:*:user/*"
]
}
],
"Version": "1"
}
2、擷取RBAC授權許可權
完成上述RAM許可權和RBAC許可權授權之後,該RAM使用者或RAM角色成為一個許可權管理員,擁有給其他RAM使用者或RAM角色進行RAM授權和RBAC授權的能力。
擁有管理員權限的RAM使用者或RAM角色,可以在所有叢集維度進行一鍵授權,後續新建立的叢集也會自動綁定已經授權的ClusterRole。
步驟二:為其他RAM使用者或RAM角色授權
RAM使用者或RAM角色擷取管理員權限之後,即可登入狀態其他使用者或角色授權,具體操作和阿里雲帳號授權操作一致,請參見使用阿里雲帳號授權。
無許可權錯誤碼說明
當您通過控制台或OpenAPI所做的部分操作缺少所需的RBAC許可權時,控制台或OpenAPI將返回相應的無許可權錯誤碼。各個錯誤碼對應操作所需的叢集RBAC許可權說明如下表所示。
錯誤碼或錯誤資訊 | 解決方案 |
ForbiddenCheckControlPlaneLog | 請為使用者授予管理員或營運人員許可權。 |
ForbiddenHelmUsage | 請為使用者授予管理員權限。 |
ForbiddenRotateCert | 請為使用者授予管理員權限。 |
ForbiddenAttachInstance | 請為使用者授予管理員或營運人員許可權。 |
ForbiddenUpdateKMSState | 請為使用者授予管理員或營運人員許可權。 |
Forbidden get trigger | 請為使用者授予管理員、營運人員或開發人員許可權。 |
ForbiddenQueryClusterNamespace | 請為使用者授予管理員、營運人員、開發人員或受限使用者的許可權。 |
相關文檔
如果預置的角色不能滿足您的要求,您需要自訂RBAC擷取叢集內資源的存取權限,請參見使用自訂RBAC限制叢集內資源操作。
當RAM的使用者或RAM角色需要進行叢集營運和應用營運時,您需要依次對其進行RAM授權和RBAC授權。
如果授權對象為叢集與叢集內應用的營運人員,請參見情境一:授權對象為叢集與叢集內應用的營運人員。
如果授權對象為叢集內應用的開發人員,請參見情境二:授權對象為叢集內應用的開發人員。
如果授權對象為叢集內應用的許可權管理員,請參見情境三:授權對象為叢集內應用的許可權管理員。
如需查看Container ServiceACK的服務角色,請參見Container ServiceACK服務角色。
授權過程問題,請參見授權管理FAQ。