全部產品
Search
文件中心

Container Service for Kubernetes:通過標籤實現精微調權限管理

更新時間:Jul 03, 2025

標籤可用於標識雲資源,實現資源的分類管理;RAM可基於權限原則,系統管理使用者身份,控制雲資源的訪問和操作許可權。您可以使用標籤對叢集資源做分類,並匹配對應的RAM權限原則,實現叢集資源的精微調權限管理,使不同使用者可以擁有不同叢集的存取權限。

基於標籤控制RAM使用者權限(即標籤鑒權)的邏輯如下:

操作步驟

您可以使用阿里雲帳號建立一個自訂權限原則,聲明RAM使用者需要指定標籤後方可訪問和操作ACK叢集,並將該權限原則授權給RAM使用者。

  1. 建立一個RAM使用者

  2. 使用阿里雲帳號(主帳號)登入RAM控制台,參見建立自訂權限原則建立一個自訂權限原則,並在策略中通過Condition為雲資源設定多個標籤條件來限制操作許可權。

    說明

    阿里雲帳號對帳號中的資源具有完全系統管理權限。您也可以建立一個RAM使用者,授予AdministratorAccess許可權,充當帳號管理員。該管理員可以對帳號下所有雲資源進行管控操作,請參見建立RAM使用者作為帳號管理員

    ACK支援的條件關鍵字如下:

    標籤鑒權條件

    說明

    acs:RequestTag

    限制在請求中必須傳入特定的標籤。

    如果API請求中沒有標籤參數,則不能使用acs:RequestTag,否則會導致鑒權失敗。

    acs:ResourceTag

    限制指定的資源必須包含特定的標籤。

    如果API請求中沒有資源ID參數,則不能使用acs:ResourceTag,否則會導致鑒權失敗。

    您可以參見下文樣本情境瞭解樣本權限原則。

  3. 參見為RAM使用者授權將自訂的權限原則授權給RAM使用者。自訂權限原則時,請瞭解支援標籤的資源類型不支援標籤層級授權的操作

    說明

    為已有RAM使用者授權前,請先查看該使用者的現有權限原則,避免許可權重複或衝突。

樣本情境

以下為不同應用情境下對應的自訂權限原則內容。以下內容僅作為樣本模板,請根據實際需求遵循許可權最小化原則配置權限原則。

權限原則

說明

執行效果

{
    "Version": "1",
    "Statement": [{
        "Effect": "Allow",
        "Action": "cs:CreateCluster",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "acs:RequestTag/test": "foo"
            }
        }
    }]
}

僅允許建立已綁定標籤test:foo的叢集。

  • 在建立叢集過程中在叢集配置的進階選項配置標籤test:foo,則會建立成功。

  • 建立ACK叢集時,不指定標籤test:foo,會有以下錯誤提示。ack

{
    "Version": "1",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "cs:DescribeClustersV1",
            "cs:GetClusters"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "acs:ResourceTag/test": "foo"
            }
        }
    }]
}

僅允許在叢集頁面列表查看已綁定標籤test:foo的叢集

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

  2. 查看叢集列表中的叢集。

    • 若叢集均不帶有test:foo標籤,則叢集列表為空白,無法查看任何叢集。

    • 對指定叢集添加test:foo標籤後,可在叢集列表中查看該叢集。

{
    "Version": "1",
    "Statement": [{
        "Effect": "Deny",
        "Action": [
            "cs:UntagResources",
            "cs:ListTagResources",
            "cs:TagResources",
            "cs:ModifyClusterTags"
        ],
        "Resource": "*"
    }]
}

不允許修改標籤,防止標籤被修改。

若強制修改標籤時,會提示以下錯誤。

tag

參考材料

支援標籤的資源類型

ACK中僅部分資源類型支援標籤授權,支援的資源類型如下表所示。

雲端服務

雲端服務代碼

資源類型

Container Service Kubernetes 版

cs

cluster:叢集

不支援標籤層級授權的操作

ACK中不支援標籤授權的操作(Action)如下表所示。具體的權限原則,請參見下文的自訂權限原則樣本

操作(Action)

描述

cs:OpenAckService

開通Container Service Kubernetes 版

cs:ListOperationPlans

查詢自動營運任務執行計畫列表

cs:CancelOperationPlan

取消自動營運任務執行計畫

cs:DescribeTaskInfo

查詢任務詳情

cs:PauseTask

暫停任務

cs:CancelTask

取消任務

cs:ResumeTask

恢複任務

cs:CreateKubernetesTrigger

建立應用觸發器

cs:DeleteTriggerHook

刪除觸發器

cs:CreateTemplate

建立編排模板

cs:DeleteTemplate

刪除編排模板

cs:UpdateTemplate

更新編排模板

cs:DescribeTemplates

查詢所有編排模板

cs:DescribeTemplateAttribute

查詢指定編排模板的詳情

cs:ListUserKubeConfigStates

查詢指定使用者所有叢集的KubeConfig狀態列表

cs:ListAddons

查詢可用的組件列表

cs:DescribeAddon

查詢指定組件的資訊

cs:DescribeAddons

查詢所有組件資訊

cs:DescribeEvents

查詢事件詳情

cs:DescribeEventsForRegion

查詢指定地區的事件列表

cs:DescribeKubernetesVersionMetadata

查詢Kubernetes版本的詳細資料

cs:CheckServiceRole

檢查是否授權指定服務角色

cs:DescribePatternTypes

擷取執行個體規格列表

cs:CheckUserClustersActivity

檢查使用者在指定叢集中的活躍情況

cs:CreateSessionMessage

建立ACK AI助手訊息會話

cs:UpdateMessageFeedback

更新ACK AI助手訊息反饋

cs:DescribeKubeConfigManagementTaskList

列出KubeConfig相關工作清單

cs:ListHaveKubeconfigDeletedAccounts

查詢帳號中存在已刪除的RAM使用者或RAM角色,但其KubeConfig仍在生效中的使用者列表

cs:ListKubeConfigRecycle

列出當前阿里雲帳號下處於資源回收筒中的KubeConfig列表

cs:RestoreKubeConfigRecycleItem

從資源回收筒中恢複已刪除的KubeConfig

cs:RestoreMultiKubeConfigRecycleItems

從資源回收筒中大量復原已刪除的KubeConfig

cs:DeleteKubeConfigRecycleItem

從資源回收筒中永久刪除KubeConfig

cs:DescribeKubernetesVersionMetadata

查詢Kubernetes版本的詳細資料

cs:DescribePolicies

查詢策略列表

cs:DescribePolicyDetails

查詢指定策略的詳細資料

cs:DescribeUserInstances

擷取添加已有節點時所需的節點列表

cs:DescribeUserPermission

查詢RAM使用者或角色的許可權

cs:UpdateUserPermissions

更新指定RAM使用者或角色的RBAC許可權

cs:CleanUserPermissions

清除某個使用者的認證以及相關RBAC許可權

cs:QueryAlertContact

查詢警示連絡人

cs:AddOrUpdateAlertContact

更新警示連絡人

cs:DeleteAlertContact

刪除警示連絡人

cs:QueryAlertContactGroup

查詢警示連絡人分組

cs:AddOrUpdateAlertContactGroup

更新警示連絡人分組

cs:DeleteAlertContactGroup

刪除警示連絡人分組

cs:DescribeUserQuota

查詢配額資訊

cs:ListOperationPlans

查詢自動營運任務執行計畫列表

cs:CancelOperationPlan

取消自動營運任務執行計畫

cs:DescribeTasks

查詢工作清單

自訂權限原則樣本

重要

獲得帳號層級許可權的RAM使用者或RAM角色,能夠操作整個帳號範圍內的相關資源。請務必確認所授與權限是否符合預期,遵從最小授權原則謹慎分配許可權。

對於不支援標籤授權的資源類型,授予限制標籤的許可權將無效,您需要建立自訂權限原則。授權時,請選擇資源範圍為帳號層級,並在策略內容中不限制任何標籤。

image以下為您提供兩個自訂權限原則樣本。您可按需調整。

  • Action中列舉了不支援標籤授權的所有隻讀操作。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cs:DescribeAddon",
            "cs:DescribeAddons",
            "cs:DescribeEvents",
            "cs:DescribeEventsForRegion",
            "cs:DescribeKubeConfigManagementTaskList",
            "cs:DescribeKubernetesVersionMetadata",
            "cs:DescribePatternTypes",
            "cs:DescribePolicies",
            "cs:DescribePolicyDetails",
            "cs:DescribeTaskInfo",
            "cs:DescribeTemplateAttribute",
            "cs:DescribeTemplates",
            "cs:DescribeUserInstances",
            "cs:DescribeUserPermission",
            "cs:ListAddons",
            "cs:ListHaveKubeconfigDeletedAccounts",
            "cs:ListKubeConfigRecycle",
            "cs:ListOperationPlans",
            "cs:ListUserKubeConfigStates",
            "cs:QueryAlertContact",
            "cs:QueryAlertContactGroup",
            "cs:CheckServiceRole",
            "cs:DescribeTasks",
            "cs:DescribeUserQuota",
            "cs:ListOperationPlans",
            "cs:CheckUserClustersActivity"
          ],
          "Resource": "*"
        }
      ]
    }
  • Action中列舉了不支援標籤授權的全部操作。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cs:AddOrUpdateAlertContact",
            "cs:AddOrUpdateAlertContactGroup",
            "cs:CancelOperationPlan",
            "cs:CancelTask",
            "cs:CheckServiceRole",
            "cs:CheckUserClustersActivity",
            "cs:CleanUserPermissions",
            "cs:CreateKubernetesTrigger",
            "cs:CreateSessionMessage",
            "cs:CreateTemplate",
            "cs:DeleteAlertContact",
            "cs:DeleteAlertContactGroup",
            "cs:DeleteKubeConfigRecycleItem",
            "cs:DeleteTemplate",
            "cs:DeleteTriggerHook",
            "cs:DescribeAddon",
            "cs:DescribeAddons",
            "cs:DescribeEvents",
            "cs:DescribeEventsForRegion",
            "cs:DescribeKubeConfigManagementTaskList",
            "cs:DescribeKubernetesVersionMetadata",
            "cs:DescribePatternTypes",
            "cs:DescribePolicies",
            "cs:DescribePolicyDetails",
            "cs:DescribeTaskInfo",
            "cs:DescribeTemplateAttribute",
            "cs:DescribeTemplates",
            "cs:DescribeUserInstances",
            "cs:DescribeUserPermission",
            "cs:ListAddons",
            "cs:ListHaveKubeconfigDeletedAccounts",
            "cs:ListKubeConfigRecycle",
            "cs:ListOperationPlans",
            "cs:ListUserKubeConfigStates",
            "cs:OpenAckService",
            "cs:DescribeTasks",
            "cs:PauseTask",
            "cs:QueryAlertContact",
            "cs:QueryAlertContactGroup",
            "cs:RestoreKubeConfigRecycleItem",
            "cs:RestoreMultiKubeConfigRecycleItems",
            "cs:ResumeTask",
            "cs:UpdateMessageFeedback",
            "cs:DescribeUserQuota",
            "cs:ListOperationPlans",
            "cs:CancelOperationPlan",
            "cs:UpdateTemplate",
            "cs:UpdateUserPermissions"
          ],
          "Resource": "*"
        }
      ]
    }