标签可用于标识云资源,实现资源的分类管理;RAM可基于权限策略,管理用户身份,控制云资源的访问和操作权限。您可以使用标签对集群资源做分类,并匹配对应的RAM权限策略,实现集群资源的精细化权限管理,使不同用户可以拥有不同集群的访问权限。
基于标签控制RAM用户权限(即标签鉴权)的逻辑如下:
操作步骤
您可以使用阿里云账号新建一个自定义权限策略,声明RAM用户需要指定标签后方可访问和操作ACK集群,并将该权限策略授权给RAM用户。
使用阿里云账号(主账号)登录RAM控制台,参见创建自定义权限策略创建一个自定义权限策略,并在策略中通过Condition为云资源设置多个标签条件来限制操作权限。
说明阿里云账号对账号中的资源具有完全管理权限。您也可以创建一个RAM用户,授予AdministratorAccess权限,充当账号管理员。该管理员可以对账号下所有云资源进行管控操作,请参见创建RAM用户作为账号管理员。
ACK支持的条件关键字如下:
标签鉴权条件
说明
acs:RequestTag
限制在请求中必须传入特定的标签。
如果API请求中没有标签参数,则不能使用
acs:RequestTag
,否则会导致鉴权失败。acs:ResourceTag
限制指定的资源必须包含特定的标签。
如果API请求中没有资源ID参数,则不能使用
acs:ResourceTag
,否则会导致鉴权失败。您可以参见下文示例场景了解示例权限策略。
参见为RAM用户授权将自定义的权限策略授权给RAM用户。自定义权限策略时,请了解支持标签的资源类型和不支持标签级别授权的操作。
说明为已有RAM用户授权前,请先查看该用户的现有权限策略,避免权限重复或冲突。
示例场景
以下为不同应用场景下对应的自定义权限策略内容。以下内容仅作为示例模板,请根据实际需求遵循权限最小化原则配置权限策略。
权限策略 | 说明 | 执行效果 |
| 仅允许创建已绑定标签 |
|
| 仅允许在集群页面列表查看已绑定标签 |
|
| 不允许修改标签,防止标签被修改。 | 若强制修改标签时,会提示以下错误。 |
参考材料
支持标签的资源类型
ACK中仅部分资源类型支持标签授权,支持的资源类型如下表所示。
云服务 | 云服务代码 | 资源类型 |
容器服务 Kubernetes 版 | cs | cluster:集群 |
不支持标签级别授权的操作
ACK中不支持标签授权的操作(Action)如下表所示。具体的权限策略,请参见下文的自定义权限策略示例。
操作(Action) | 描述 |
cs:OpenAckService | 开通容器服务 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角色,能够操作整个账号范围内的相关资源。请务必确认所授予的权限是否符合预期,遵从最小授权原则谨慎分配权限。
对于不支持标签授权的资源类型,授予限制标签的权限将无效,您需要创建自定义权限策略。授权时,请选择资源范围为账号级别,并在策略内容中不限制任何标签。
以下为您提供两个自定义权限策略示例。您可按需调整。
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": "*" } ] }