阿里云容器服务Kubernetes版(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 | 开通容器服务ACK |
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 | 查看容器服务中创建的所有集群(包括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"
}