全部產品
Search
文件中心

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

更新時間:Dec 10, 2024

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權限原則樣本

{
  "Statement": [
    {
      "Action": [
        "cs:Get*",
        "cs:List*",
        "cs:Describe*"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cs:*:*:cluster/<yourclusterID>" 
      ]
    }
  ],
  "Version": "1"
}

授權說明

阿里雲帳號(主帳號)可以對所有叢集進行所有操作,RAM使用者或RAM角色擁有自己建立的叢集的所有操作許可權,非叢集建立者的RAM使用者或RAM角色,需要額外進行RAM和RBAC授權,才能操作叢集。

操作步驟

Container ServiceACK預設提供管理員、營運人員、開發人員和受限使用者這四種標準的叢集資源RBAC存取權限,可滿足大部分使用者在Container Service控制台上的使用需求。如果您想自由定義叢集資源的RBAC存取權限,請參見使用自訂RBAC限制叢集內資源操作

滿足以下條件的帳號才可以為其他RAM使用者或RAM角色進行授權。

  • 阿里雲帳號(主帳號)。

  • 擁有管理員權限的RAM使用者或RAM角色。

使用阿里雲帳號授權

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

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

    • 為RAM使用者授權

      單擊RAM 使用者頁簽,在RAM使用者列表中,單擊目標RAM使用者右側的系統管理權限,進入許可權管理頁面,您也可以選擇多個目標RAM使用者進行大量授權。

    • 為RAM角色授權

      單擊RAM 角色頁簽,輸入RAM 角色名稱,然後單擊系統管理權限,進入許可權管理頁面。

      說明

      RAM角色支援手動輸入,也支援在下拉式清單中選擇。您可以單擊RAM角色右側空白框,將會顯示已有的RAM角色列表,然後從列表中選擇已有的RAM角色進行授權。

  3. 單擊+ 添加許可權,為目標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授權許可權

使用系統策略授權

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

    • RAM使用者

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

    • RAM角色

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

  2. 在彈出面板中,選擇資源範圍帳號層級,在下拉式清單中選擇權限原則為系統策略,根據名稱搜尋或在列表中找到並選中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管理員權限

使用阿里雲帳號登入Container Service管理主控台,為該RAM使用者或RAM角色在所有叢集維度授予預置角色管理員具體操作,請參見使用阿里雲帳號授權

完成上述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

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

相關文檔