全部產品
Search
文件中心

Container Compute Service:配置RAM使用者或RAM角色RBAC許可權

更新時間:Jan 08, 2025

RBAC(Role-Based Access Control)是角色型存取控制。通過RBAC授權,您可以將許可權與叢集角色相關聯,從而為不同角色成員配置不同的Kubernetes資源操作許可權,降低帳號安全風險。本文介紹如何為RAM使用者(子帳號)或RAM角色配置對應的Kubernetes叢集內RBAC許可權。

配置說明

配置項

說明

預設許可權

  • 預設情況下,僅阿里雲帳號(主帳號)和叢集建立者帳號擁有叢集內Kubernetes資源的管理員權限。

  • 預設情況下,RAM使用者或RAM角色(非叢集建立者)沒有叢集內任何Kubernetes資源的存取權限。

授權方式

  • 方式一:使用容器計算服務提供的預置角色,即管理員(擁有叢集內全部Kubernetes資源存取權限)、營運人員、開發人員、受限使用者和自訂角色,來對目標RAM使用者或RAM角色進行授權。具體操作,請參見為RAM使用者或RAM角色授予RBAC許可權

  • 方式二:在所有叢集維度為RAM使用者或RAM角色進行一鍵授權,後續新建立的叢集也會為被授權的RAM使用者或RAM角色自動綁定已經授權的預置角色。具體操作,請參見為RAM使用者或RAM角色授予RBAC許可權

  • 方式三:通過RAM使用者或RAM角色給其他RAM使用者或RAM角色進行RBAC授權。授權時,控制台會過濾其可以授權的叢集和命名空間的資源範圍,僅當RAM使用者或RAM角色有指定叢集或命名空間的管理員或cluster-admin角色許可權時,才可以給其他RAM使用者或RAM角色進行RBAC授權。具體操作,請參見將RAM使用者或RAM角色設定為許可權管理員通過RAM使用者或RAM角色為其他帳號授予RBAC許可權

說明

開始授權前,請先確保目標RAM使用者或RAM角色在Resource Access Management控制台中已被授予指定叢集的RAM唯讀許可權。

授權模式

支援對多個目標RAM使用者或RAM角色進行單個和大量授權。

說明

由於阿里雲RAM的安全限制,當您通過容器計算服務控制台修改RAM使用者或RAM角色的RAM授權時,請按照頁面提示的參考策略內容和操作說明在RAM控制台為目標RAM使用者或RAM角色進行手動授權。

為RAM使用者或RAM角色授予RBAC許可權

  1. 登入容器計算服務控制台,在左側導覽列選擇授權管理

  2. 授權管理頁面為RAM使用者或RAM角色組態管理許可權。

    重要

    因為ACS叢集是ACK Serverless類型叢集之一,所以如果您已經或者將通過ACK控制台對RAM使用者或RAM角色授予“所有叢集”RBAC許可權,那麼“所有叢集”中包括ACS叢集,您將無法再通過容器計算服務ACS產品控制台對ACS叢集做單獨授權,預設繼承“所有叢集”授權策略。

    1. 為RAM使用者授權

      單擊子帳號頁簽,在RAM使用者列表,單擊目標RAM使用者右側的系統管理權限,進入許可權管理彈窗頁面。

    2. 為RAM角色授權

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

  3. 許可權管理彈窗頁面中單擊+添加許可權,為目標RAM使用者或RAM角色添加叢集命名空間層級的許可權配置,並選擇相應的預置角色,然後單擊提交授權

    預置角色

    叢集內RBAC許可權

    管理員

    對所有命名空間下所有資源的讀寫權限。

    營運人員

    對所有命名空間下控制台可見Kubernetes資源的讀寫權限,對叢集儲存卷、命名空間、配額的唯讀許可權。

    開發人員

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

    受限使用者

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

    自訂

    許可權由您所選擇的ClusterRole決定,請在確定所選ClusterRole對各類資源的操作許可權後再進行授權,以免RAM使用者或RAM角色獲得不符合預期的許可權。您可以參考下文,展開查看如何查看自訂許可權。

    重要

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

  4. 配置完成後,您可以使用目標RAM使用者或RAM角色登入容器計算服務控制台,並進行相關操作。

    說明
    • 請確保您需要使用的RAM使用者或RAM角色已完成叢集的RAM授權,同時已被授予叢集內RBAC管理員權限或cluster-admin角色。詳細操作,請參見為RAM使用者或RAM角色授予RAM許可權

    • ACS預置角色包括管理員、營運人員、開發人員和受限使用者四種標準的存取權限,可滿足大部分使用者的使用需求。如果您想自由定義叢集的存取權限,可選擇ACS內建的自訂角色,使用自訂許可權功能。

    • 在一個目的地組群或命名空間中為RAM使用者或RAM角色的授權時,支援配置一個預置角色和多個自訂角色。

    • 如果您希望在所有叢集維度為RAM使用者或RAM角色進行一鍵授權,使得後續新建立的叢集也會為被授權的RAM使用者或RAM角色自動綁定已經授權的預置角色,您可以選擇叢集所有叢集

    展開查看如何查看自訂許可權

    1. 單擊自訂,然後單擊右側的查看,查看對應自訂許可權的詳情。

    2. 登入叢集節點,執行以下命令,查看自訂許可權的詳情。

      kubectl get clusterrole

      預期輸出:

      NAME                                                                   CREATED AT
      acs:view                                                               2024-12-31T06:18:06Z
      admin                                                                  2024-12-31T06:17:53Z
      alibaba-log-controller                                                 2024-12-31T06:25:03Z
      alicloud-csi-provisioner                                               2024-12-31T06:19:23Z
      aliyun-eci-pod-clusterrole                                             2024-12-31T06:18:52Z
      arms-aliyunserviceroleforarms-clusterrole                              2024-12-31T06:25:03Z
      cluster-admin                                                          2024-12-31T06:17:53Z
      ebs-token-controller                                                   2024-12-31T06:19:00Z
      edit                                                                   2024-12-31T06:17:53Z
      o11y:addon-controller:role                                             2024-12-31T06:24:32Z
      system:aggregate-to-admin                                              2024-12-31T06:17:53Z
      system:aggregate-to-edit                                               2024-12-31T06:17:53Z
      ...
      system:volume-scheduler                                                2024-12-31T06:17:53Z
      tenant-webhook-clusterrole                                             2024-12-31T06:19:45Z
      view                                                                   2024-12-31T06:17:53Z
    3. 以超級管理員cluster-admin為例,執行以下命令,查看其許可權詳情。

      重要

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

      kubectl get clusterrole cluster-admin -o yaml

      預期輸出:

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        annotations:
          rbac.authorization.kubernetes.io/autoupdate: "true"
        creationTimestamp: "2024-12-31T06:17:53Z"
        labels:
          kubernetes.io/bootstrapping: rbac-defaults
        name: cluster-admin
        resourceVersion: "70"
        uid: 759xxxxx-5ad2-42ce-872d-fbce117xxxxx
      rules:
      - apiGroups:
        - '*'
        resources:
        - '*'
        verbs:
        - '*'
      - nonResourceURLs:
        - '*'
        verbs:
        - '*'

通過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授權能力。

  1. 登入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"
    }
  2. 授權完成後,該RAM使用者或RAM角色可以在指定策略範圍內對其他RAM使用者或RAM角色進行RAM授權。

RBAC許可權

  1. 授予所需的RAM許可權後,您還需要為該RAM使用者或RAM角色在目的地組群或命名空間上授予預置角色管理員或者自訂權限原則中的cluster-admin角色。具體操作,請參見授權對象為叢集內應用的許可權管理員

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

如果您不方便使用阿里雲帳號為RAM使用者或RAM角色進行授權,您可以將某個RAM使用者或RAM角色設定為許可權管理員,隨後使用該RAM使用者或RAM角色進行授權操作。

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

    • RAM使用者

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

    • RAM角色

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

  2. 新增授權彈窗頁面中,點擊權限原則中的搜尋方塊,根據名稱分別搜尋AliyunRAMFullAccessAliyunACCFullAccess系統策略,然後勾選策略添加到右側的已選擇權限原則地區,接著單擊確認新增授權關閉彈窗完成授權。

  3. 登入容器計算服務控制台為該RAM使用者或RAM角色在所有叢集維度授予預置角色管理員。具體操作,請參見為RAM使用者或RAM角色授予RBAC許可權

  4. 完成上述步驟後,該RAM使用者或RAM角色成為一個許可權管理員,擁有給其他RAM使用者或RAM角色進行RAM授權和RBAC授權的能力。

無許可權錯誤碼說明

當您通過控制台或OpenAPI所做的部分操作缺少所需的RBAC許可權時,控制台或OpenAPI將返回相應的無許可權錯誤碼。各個錯誤碼對應操作所需的叢集RBAC許可權說明如下表所示。

錯誤碼或錯誤資訊

所需的叢集RBAC許可權

ForbiddenCheckControlPlaneLog

管理員或營運人員許可權。

ForbiddenHelmUsage

管理員權限。

ForbiddenRotateCert

管理員權限。

ForbiddenQueryClusterNamespace

管理員、營運人員、開發人員或受限使用者權限。

相關文檔