全部產品
Search
文件中心

Container Service for Kubernetes:授權概述

更新時間:Aug 31, 2024

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

ACK授權體系

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

授與類型

使用情境

可擷取的相關操作

RAM授權

對應ACK叢集的營運操作,需要擷取ACK產品及其所依賴阿里雲雲產品的OpenAPI操作許可權。

  • 叢集:建立、查看、升級、刪除

  • 節點池:建立、修改、擴縮容

  • 授權管理

  • 叢集監控、日誌、事件

RBAC授權

對應運行於ACK叢集中Kubernetes應用的營運操作,需要擷取ACK叢集及其命名空間的操作許可權。

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

  • 網路:Service、Ingress、NetworkPolicy等

  • 儲存:PV、PVC、StorageClass等

  • Namespace、ConfigMap 、Secrets等

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

重要

對於離職員工或非受信人員,刪除RAM使用者或RAM角色並不會同步刪除該使用者或角色擁有的ACK叢集KubeConfig中的RBAC許可權。因此,在刪除RAM使用者或RAM角色之前,請吊銷離職員工或非受信使用者的KubeConfig許可權。具體操作,請參見吊銷叢集的KubeConfig憑證

權限類別型

權限類別型

是否必須授權

許可權說明

服務角色

僅在第一次使用ACK時需要授權,使用阿里雲帳號(主帳號)或者RAM帳號管理員(子帳號)進行一次授權即可。

授權後,才能訪問其他關聯雲端服務資源。

關於容器ACK服務角色,請參見Container ServiceACK服務角色

RAM授權

  • RAM使用者或RAM角色必須授權。

  • 阿里雲帳號預設擁有許可權,無需授權。

支援RAM系統策略授權和自訂策略授權,授權後,RAM使用者或RAM角色才能使用ACK的功能。

RBAC許可權

  • RAM使用者或RAM角色必須授權。

  • 阿里雲帳號預設擁有許可權,無需授權。

授權後,RAM使用者或RAM角色才能夠對叢集內的K8s資源進行操作。

RAM授權

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

當您需要對叢集進行可見度、擴縮容、添加節點等操作時,需要進行RAM授權。具體操作,請參見為RAM使用者或RAM角色授予RAM許可權

RAM系統策略授權

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

Container Service的常用系統策略如下表所示,您可以根據業務需求添加對應的系統策略。

系統策略名稱稱

說明

AliyunCSFullAccess

當RAM使用者或RAM角色需要Container Service產品所有OpenAPI的存取權限。

說明

此系統策略僅包含針對ACK產品的RAM授權。如您需要對ACK叢集中的應用進行營運,還需要進行RBAC授權,請參見RBAC授權

AliyunVPCReadOnlyAccess

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

AliyunECSReadOnlyAccess

當RAM使用者或RAM角色為叢集添加已有節點或查看節點詳細資料。

AliyunContainerRegistryFullAccess

當RAM使用者或RAM角色需要全域管理阿里雲帳號內的業務鏡像。

AliyunLogReadOnlyAccess

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

AliyunAHASReadOnlyAccess

當RAM使用者或RAM角色需要使用叢集拓撲功能。

AliyunRAMFullAccess

當RAM使用者或RAM角色需要負責阿里雲帳號內的全域授權管理。

AliyunYundunSASReadOnlyAccess

當RAM使用者或RAM角色需要查看指定叢集的運行時安全監控。

AliyunARMSReadOnlyAccess

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

AliyunKMSReadOnlyAccess

當RAM使用者或RAM角色在建立Pro叢集時啟用Secret落盤加密能力。

AliyunESSReadOnlyAccess

當RAM使用者或RAM角色需要執行節點池的相關操作,例如查看、編輯和擴縮容等。

RAM自訂策略授權

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

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

{
    "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/*"
        }
    ]
}

RBAC授權

RAM策略僅控制ACK叢集資源的操作許可權,若RAM使用者或RAM角色需要操作指定叢集內K8s資源時(例如,擷取叢集Pod和Node資訊),需要在Container Service管理主控台的授權管理頁面對指定RAM使用者或RAM角色進行叢集內部資源的訪問授權。

預置角色

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

表 1. 角色許可權說明

角色

叢集內RBAC許可權

管理員

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

營運人員

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

開發人員

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

受限使用者

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

自訂

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

Role和ClusterRole

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

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

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

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

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

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

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

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

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

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

重要

當前Container ServiceACK授權管理只支援自訂ClusterRole角色與叢集內RBAC許可權的綁定,不支援自訂Role角色與叢集內RBAC許可權的綁定。