全部產品
Search
文件中心

Container Service for Kubernetes:【產品變更】Container ServiceOpenAPI鑒權最佳化公告

更新時間:Feb 28, 2024

阿里雲Container ServiceKubernetes版(ACK)將於2021年08月18日開始陸續加強部分OpenAPI對RAM使用者(即子帳號)和角色的許可權控制,請您及時檢查阿里雲帳號(即主帳號)下RAM使用者或角色的綁定許可權,添加可能遺漏的權限原則,避免未授權的RAM使用者或角色訪問OpenAPI發生鑒權錯誤。

影響範圍

本次鑒權最佳化完成後,若RAM使用者或角色執行的操作沒有對應許可權,控制台或OpenAPI會提示包含RAM policy ForbiddenSTSToken policy Forbidden的錯誤資訊,同時錯誤資訊中會包含要求的權限的RAM Action名稱。

錯誤資訊樣本(下面錯誤資訊中包含的RAM Action名稱為cs:DescribeEvents):
RAM policy Forbidden for action cs:DescribeEvents
若您的RAM使用者或角色使用了下表中的OpenAPI介面並且未授權,請您參考介面對應的RAM Action,及時前往RAM控制台添加指定RAM使用者或角色的授權:
API名稱RAM Action說明
DescribeEventscs:DescribeEvents查詢使用者操作事件
StartAlertcs:StartAlert啟動警示規則
StopAlertcs:StopAlert停止警示規則
DeleteAlertContactcs:DeleteAlertContact刪除警示連絡人
DeleteAlertContactGroupcs:DeleteAlertContactGroup刪除警示連絡人分組
OpenAckServicecs:OpenAckService開通Container ServiceACK
DescribeClusterResourcescs:DescribeClusterResources根據叢集ID查詢該叢集的所有資源
DescribeUserQuotacs:DescribeUserQuota查詢叢集及節點配額
DescribeClustersV1cs:DescribeClustersV1查詢已建立的所有ACK叢集的詳情
DescribeExternalAgentcs:DescribeExternalAgent根據叢集ID查詢叢集中部署註冊叢集的代理配置
DescribeKubernetesVersionMetadatacs:DescribeKubernetesVersionMetadata查詢ACK支援的Kubernetes版本詳情
DescribeClusterAddonUpgradeStatuscs:DescribeClusterAddonUpgradeStatus查詢叢集Addons升級狀態
DescribeClusterscs:DescribeClusters查看Container Service中建立的所有叢集(包括Swarm和Kubernetes叢集)
DescribeClusterNamespacescs:DescribeClusterNamespaces查詢叢集命名空間
ModifyClustercs:ModifyCluster根據叢集ID修改該叢集配置
MigrateClustercs:MigrateCluster遷移叢集
UpdateK8sClusterUserConfigExpirecs:UpdateK8sClusterUserConfigExpire更新使用者自訂配置到期時間
DescribeClusterNodescs:DescribeClusterNodes根據叢集ID,查詢該叢集中的所有節點的詳情
DescribeClusterAttachScriptscs:DescribeClusterAttachScripts查詢手動添加執行個體到叢集的指令碼
GetUpgradeStatuscs:GetUpgradeStatus根據叢集ID,查詢該叢集的升級狀態
UpgradeClustercs:UpgradeCluster根據叢集ID,升級指定叢集
PauseClusterUpgradecs:PauseClusterUpgrade暫停使用者叢集升級
CancelClusterUpgradecs:CancelClusterUpgrade取消處於升級狀態的ACK叢集
CreateTemplatecs:CreateTemplate建立一個編排模板
DescribeTemplatescs:DescribeTemplates查詢已建立的所有編排模板詳情
DescribeTemplateAttributecs:DescribeTemplateAttribute根據編排模板ID,查詢該編排模板的詳情
UpdateTemplatecs:UpdateTemplate根據編排模板ID,更新編排模板
DeleteTemplatecs:DeleteTemplate根據編排模板ID,刪除指定編排模板
CreateKubernetesTriggercs:CreateKubernetesTrigger為應用建立觸發器
GetKubernetesTriggercs:GetKubernetesTrigger根據應用程式名稱查詢該應用的觸發器
DeleteKubernetesTriggercs:DeleteKubernetesTrigger根據應用觸發器ID,刪除應用觸發器
InstallClusterAddonscs:InstallClusterAddons為叢集安裝組件
DescribeAddonscs:DescribeAddons查詢平台支援的所有組件的詳情
DescribeClusterAddonsUpgradeStatuscs:DescribeClusterAddonsUpgradeStatus根據組件名稱查詢該組件升級狀態
DescribeClusterAddonsVersioncs:DescribeClusterAddonsVersion根據叢集ID,查詢叢集中已安裝的所有組件的詳情
ModifyClusterConfigurationcs:ModifyClusterConfiguration只針對託管版叢集
UpgradeClusterAddonscs:UpgradeClusterAddons根據組件名稱,將指定組件升級到指定版本
PauseComponentUpgradecs:PauseComponentUpgrade暫停組件升級
ResumeComponentUpgradecs:ResumeComponentUpgrade重新開始組件升級
CancelComponentUpgradecs:CancelComponentUpgrade取消叢集組件升級
UnInstallClusterAddonscs:UnInstallClusterAddons根據組件名稱,卸載指定叢集的組件
CreateAutoscalingConfigcs:CreateAutoscalingConfig建立自動調整配置

RAM權限原則修改樣本

本樣本介紹如何修改RAM使用者或角色的RAM權限原則。關於RAM授權的相關操作,請參見自訂RAM授權策略

情境一:RAM使用者只對指定叢集有cs:Get*許可權,需要擁有指定叢集所有OpenAPI的唯讀許可權

例如,當前RAM使用者只擁有指定叢集的cs:Get*,對應的RAM權限原則如下:
{
    "Statement": [
        {
            "Action": "cs:Get*",
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}
若需要RAM使用者在OpenAPI鑒權最佳化後仍具有原有叢集所有OpenAPI的唯讀許可權,修改後的RAM權限原則如下所示:
{
    "Statement": [
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}
說明 若只包含cs:Get* Action並不能匹配所有隻讀OpenAPI,需要再增加cs:List*cs:Describe*

情境二:為RAM使用者授權指定叢集的單個OpenAPI的操作許可權

若您需要為RAM使用者授權指定叢集的單個OpenAPI操作許可權,在該RAM權限原則中增加該OpenAPI對應的RAM Action即可。

例如,當前RAM權限原則如下:
{
    "Statement": [
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}
若需要授權OpenAPI ModifyCluster,其對應RAM Action為cs:ModifyCluster,修改後的RAM權限原則如下所示:
{
    "Statement": [
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*",
                "cs:ModifyCluster"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}

情境三:為RAM使用者授權無法指定叢集的OpenAPI的操作許可權

部分OpenAPI無法指定叢集授權(例如,CreateClusterDescribeClustersDescribeEvents 等),若您需要給RAM使用者授權這些無法指定叢集的OpenAPI的操作許可權,請不要在Resource中限定叢集ID。

例如,當前RAM權限原則如下:
{
    "Statement": [
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}
若您需要授權無法指定叢集的OpenAPI DescribeEvents ,其對應的RAM Action為cs:DescribeEvents,修改後的RAM權限原則如下所示:
{
    "Statement": [
        {
            "Action": [
                "cs:DescribeEvents"
            ],
            "Effect": "Allow",
            "Resource": [
              "*"
            ]
        },
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}