阿里雲Container ServiceKubernetes版(ACK)將於2021年08月18日開始陸續加強部分OpenAPI對RAM使用者(即子帳號)和角色的許可權控制,請您及時檢查阿里雲帳號(即主帳號)下RAM使用者或角色的綁定許可權,添加可能遺漏的權限原則,避免未授權的RAM使用者或角色訪問OpenAPI發生鑒權錯誤。
影響範圍
本次鑒權最佳化完成後,若RAM使用者或角色執行的操作沒有對應許可權,控制台或OpenAPI會提示包含RAM policy Forbidden或STSToken policy Forbidden的錯誤資訊,同時錯誤資訊中會包含要求的權限的RAM Action名稱。
錯誤資訊樣本(下面錯誤資訊中包含的RAM Action名稱為cs:DescribeEvents):
RAM policy Forbidden for action cs:DescribeEvents
若您的RAM使用者或角色使用了下表中的OpenAPI介面並且未授權,請您參考介面對應的RAM Action,及時前往RAM控制台添加指定RAM使用者或角色的授權:
API名稱 | RAM Action | 說明 |
DescribeEvents | cs:DescribeEvents | 查詢使用者操作事件 |
StartAlert | cs:StartAlert | 啟動警示規則 |
StopAlert | cs:StopAlert | 停止警示規則 |
DeleteAlertContact | cs:DeleteAlertContact | 刪除警示連絡人 |
DeleteAlertContactGroup | cs:DeleteAlertContactGroup | 刪除警示連絡人分組 |
OpenAckService | cs:OpenAckService | 開通Container ServiceACK |
DescribeClusterResources | cs:DescribeClusterResources | 根據叢集ID查詢該叢集的所有資源 |
DescribeUserQuota | cs:DescribeUserQuota | 查詢叢集及節點配額 |
DescribeClustersV1 | cs:DescribeClustersV1 | 查詢已建立的所有ACK叢集的詳情 |
DescribeExternalAgent | cs:DescribeExternalAgent | 根據叢集ID查詢叢集中部署註冊叢集的代理配置 |
DescribeKubernetesVersionMetadata | cs:DescribeKubernetesVersionMetadata | 查詢ACK支援的Kubernetes版本詳情 |
DescribeClusterAddonUpgradeStatus | cs:DescribeClusterAddonUpgradeStatus | 查詢叢集Addons升級狀態 |
DescribeClusters | cs:DescribeClusters | 查看Container Service中建立的所有叢集(包括Swarm和Kubernetes叢集) |
DescribeClusterNamespaces | cs:DescribeClusterNamespaces | 查詢叢集命名空間 |
ModifyCluster | cs:ModifyCluster | 根據叢集ID修改該叢集配置 |
MigrateCluster | cs:MigrateCluster | 遷移叢集 |
UpdateK8sClusterUserConfigExpire | cs:UpdateK8sClusterUserConfigExpire | 更新使用者自訂配置到期時間 |
DescribeClusterNodes | cs:DescribeClusterNodes | 根據叢集ID,查詢該叢集中的所有節點的詳情 |
DescribeClusterAttachScripts | cs:DescribeClusterAttachScripts | 查詢手動添加執行個體到叢集的指令碼 |
GetUpgradeStatus | cs:GetUpgradeStatus | 根據叢集ID,查詢該叢集的升級狀態 |
UpgradeCluster | cs:UpgradeCluster | 根據叢集ID,升級指定叢集 |
PauseClusterUpgrade | cs:PauseClusterUpgrade | 暫停使用者叢集升級 |
CancelClusterUpgrade | cs:CancelClusterUpgrade | 取消處於升級狀態的ACK叢集 |
CreateTemplate | cs:CreateTemplate | 建立一個編排模板 |
DescribeTemplates | cs:DescribeTemplates | 查詢已建立的所有編排模板詳情 |
DescribeTemplateAttribute | cs:DescribeTemplateAttribute | 根據編排模板ID,查詢該編排模板的詳情 |
UpdateTemplate | cs:UpdateTemplate | 根據編排模板ID,更新編排模板 |
DeleteTemplate | cs:DeleteTemplate | 根據編排模板ID,刪除指定編排模板 |
CreateKubernetesTrigger | cs:CreateKubernetesTrigger | 為應用建立觸發器 |
GetKubernetesTrigger | cs:GetKubernetesTrigger | 根據應用程式名稱查詢該應用的觸發器 |
DeleteKubernetesTrigger | cs:DeleteKubernetesTrigger | 根據應用觸發器ID,刪除應用觸發器 |
InstallClusterAddons | cs:InstallClusterAddons | 為叢集安裝組件 |
DescribeAddons | cs:DescribeAddons | 查詢平台支援的所有組件的詳情 |
DescribeClusterAddonsUpgradeStatus | cs:DescribeClusterAddonsUpgradeStatus | 根據組件名稱查詢該組件升級狀態 |
DescribeClusterAddonsVersion | cs:DescribeClusterAddonsVersion | 根據叢集ID,查詢叢集中已安裝的所有組件的詳情 |
ModifyClusterConfiguration | cs:ModifyClusterConfiguration | 只針對託管版叢集 |
UpgradeClusterAddons | cs:UpgradeClusterAddons | 根據組件名稱,將指定組件升級到指定版本 |
PauseComponentUpgrade | cs:PauseComponentUpgrade | 暫停組件升級 |
ResumeComponentUpgrade | cs:ResumeComponentUpgrade | 重新開始組件升級 |
CancelComponentUpgrade | cs:CancelComponentUpgrade | 取消叢集組件升級 |
UnInstallClusterAddons | cs:UnInstallClusterAddons | 根據組件名稱,卸載指定叢集的組件 |
CreateAutoscalingConfig | cs: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無法指定叢集授權(例如,CreateCluster
、DescribeClusters
及DescribeEvents
等),若您需要給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"
}