全部產品
Search
文件中心

Container Compute Service:授權概述

更新時間:Dec 11, 2024

容器計算服務(ACS)的授權體系包含對基礎資源層的RAM授權和對ACS叢集層的RBAC(Role-Based Access Control)授權兩部分。本文介紹Container ServiceACS叢集存取控制授權的組成及方式。

ACS授權體系

ACS的授權體系包含對基礎資源層的RAM授權以及對ACS叢集層的RBAC授權。ACS授權體系如下圖所示。

  • RAM授權包括對叢集的營運操作,因為ACS叢集是 ACK 的一種 Serverless K8s 叢集類型,對ACS叢集的營運操作需要通過ACK OpenAPI執行,所以需要擷取ACK產品及其所依賴的阿里雲產品的OpenAPI操作許可權,主要包括以下操作:

    • 叢集:建立、查看、刪除。

    • 叢集RBAC授權管理。

    • 叢集監控、日誌、事件。

  • RBAC授權對應的是運行於ACS叢集中Kubernetes應用的營運操作,需要擷取ACS叢集及其命名空間的操作許可權,主要包括對以下Kubernetes對象的增刪改查操作:

    • 工作負載:Deployment、StatefulSet、Job、CronJob、Pod、ReplicaSet、HPA等。

    • 網路:Service、Ingress、NetworkPolicy等。

    • 儲存:PV、PVC、StorageClass等。

    • Namespace、ConfigMap、Secrets等。

因此當RAM使用者或RAM角色需要進行叢集營運和應用營運時,您需要依次對其進行RAM授權和RBAC授權。在進行RBAC授權前,您需要先進行RAM授權。三種典型情境的授權操作,如下所示:

RAM授權

在企業對接RAM的帳號系統中,營運人員通過RAM使用者或RAM角色管理雲端服務資源是一個常見情境。然而預設情況下RAM使用者或RAM角色沒有任何許可權使用雲端服務OpenAPI,為了保證雲端服務功能的正常使用,需要對RAM使用者或RAM角色授權。

當您需要對叢集進行可見度、擴縮容、添加節點等操作時,需要進行RAM授權。更多資訊,請參見自訂RAM授權策略

RAM授權支援以下兩種方式:

  • RAM系統策略授權:用於指定全域資源的讀寫存取控制。當RAM使用者或RAM角色具有阿里雲帳號下所有叢集的營運系統管理權限時,建議使用系統策略進行快捷授權。具體操作,請參見為RAM使用者或RAM角色授權

    容器計算服務的常用系統策略如下表所示,您可以根據業務需求添加對應的系統策略。

    系統策略名稱稱

    說明

    AliyunCSFullAccess

    使RAM使用者或RAM角色在建立ACS叢集時獲得訪問所有ACK OpenAPI的許可權。

    重要

    該許可權操作範圍包括除ACS類型以外ACK全部叢集,請謹慎使用。此系統策略僅包含針對ACK產品OpenAPI的RAM授權。如您需要對ACS叢集中的應用進行營運,還需要進行RBAC授權,請參見RBAC授權

    AliyunCSReadOnlyAccess

    使RAM使用者或RAM角色在建立ACS叢集時獲得訪問ACK 所有隻讀OpenAPI的許可權,該許可權操作範圍包括除ACS類型以外的所有ACK叢集,請謹慎使用。

    AliyunACCFullAccess

    使RAM使用者或RAM角色獲得容器計算服務產品所有OpenAPI的存取權限。

    AliyunACCReadOnlyAccess

    使RAM使用者或RAM角色獲得容器計算服務產品的所有隻讀OpenAPI許可權。

    AliyunVPCReadOnlyAccess

    使RAM使用者或RAM角色在建立叢集時可以選擇並指定VPC。

    AliyunContainerRegistryFullAccess

    使RAM使用者或RAM角色獲得阿里雲帳號內業務鏡像的全部許可權。

    AliyunLogReadOnlyAccess

    使RAM使用者或RAM角色在建立叢集時可以選擇已有Log Project儲存審計日誌,或查看指定叢集的配置巡檢。

    AliyunRAMFullAccess

    使RAM使用者或RAM角色獲得阿里雲帳號內的全域授權系統管理權限。

    AliyunEBSFullAccess

    使RAM使用者或RAM角色獲得雲端硬碟儲存服務功能的全部許可權。

    AliyunARMSReadOnlyAccess

    使RAM使用者或RAM角色可以查看叢集阿里雲Prometheus外掛程式的監控狀態。

    AliyunKMSReadOnlyAccess

    允許RAM使用者或RAM角色在建立叢集時查看Key Management Service(KMS)中的密鑰。

  • RAM自訂策略授權:用於對目標RAM使用者或RAM角色實現細粒度的雲資源存取控制。另外,如果目標RAM使用者或RAM角色有基於SDK的二次開發需求,還可實現API層級的許可權控制。

    例如,當RAM使用者或RAM角色需要具有對指定OSS Bucket的讀取許可權時,可以參考以下策略。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketAcl" 
                          ],    
                "Resource": "acs:oss:*:*:*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetBucketAcl"
                ],
                "Resource": "acs:oss:*:*:myphotos"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject",
                    "oss:GetObjectAcl"
                ],
                "Resource": "acs:oss:*:*:myphotos/*"
            }
        ]
    }

Role和ClusterRole

RBAC的Role或ClusterRole中包含一組代表相關許可權的規則。這些許可權是累加的(不存在拒絕某操作的規則)。

Role總是用來在某個命名空間內設定存取權限;在您建立Role時,您必須指定該Role所屬的命名空間。

與之相對,ClusterRole則是一個叢集範圍的資源。這兩種資源名字不同(Role和ClusterRole)是因為Kubernetes的對象是命名空間範圍或叢集範圍的,不可兩者兼具。

ClusterRole有若干用法。您可以用來:

  • 定義對某命名空間域對象的存取權限,並將在各個命名空間內完成授權。

  • 為命名空間範圍的對象設定存取權限,並跨所有命名空間執行授權。

  • 為叢集範圍的資源定義存取權限。

如果您需要在命名空間內定義角色,應該使用Role;如果您需要定義叢集範圍的角色,應該使用ClusterRole。

關於如何編寫Kubernetes的ClusterRole和Role,請參見自訂Kubernetes授權策略

關於如何授予RAM使用者或RAM角色自訂Kubernetes授權策略,請參見配置RAM使用者或RAM角色RBAC許可權

重要

當前容器計算服務ACS授權管理只支援自訂ClusterRole角色與叢集內RBAC許可權的綁定,不支援自訂Role角色與叢集內RBAC許可權的綁定。

RBAC授權

當RAM使用者或RAM角色需要操作指定叢集內K8s資源時(例如擷取叢集Pod資訊),需要在容器計算服務控制台的授權管理頁面對指定RAM使用者或RAM角色進行資料平面資源的授權。

您可以給RAM使用者或RAM角色授予以下預置角色。具體操作,請參見配置RAM使用者或RAM角色RBAC許可權

表 1. 角色許可權說明

角色

叢集內RBAC許可權

管理員

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

營運人員

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

開發人員

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

受限使用者

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

自訂

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