自定义策略操作指引

最近更新时间:2025-05-14 10:49:41

我的收藏

操作场景

如果预设策略不能满足您的要求,您可以通过创建自定义策略实现最小授权。本文提供了使用访问管理(Cloud Access Management,CAM)策略让用户拥有在腾讯云弹性 MapReduce(以下简称 EMR)控制台中查看和使用特定资源的权限示例,指导用户如何使用控制台配置特定权限策略。

自定义权限策略创建方式

创建方式
授权指南
通过策略生成器创建自定义策略
该方式支持在策略向导中选择服务、操作、定义资源,自动生成策略语法,可以灵活满足差异化权限管理需求,优先推荐使用。详情参见 通过策略生成器创建自定义策略
通过标签授权创建自定义策略
该方式将具有一类标签属性的资源快速授权给用户或用户组。详情参见 通过标签授权创建自定义策略
通过策略语法创建自定义策略
该方式由用户编写策略语法,生成对应的策略,权限粒度灵活,可以解决对权限精细划分有较高要求的用户诉求。详情参见 通过策略语法创建自定义策略

授权策略语法参考

通过策略语法创建自定义策略时,需要了解业务的权限管控需求和 EMR 策略语法定义。下文为您介绍 CAM 权限策略的基本结构,以及如何在策略中定义 EMR 的操作(Action)、资源(Resource)和使用条件(Condition)。

CAM通用策略语法

语法示例
说明
{
"version":"2.0",
"statement":
[
{
"effect":"effect",
"action":["action"],
"resource":["resource"],
"condition": {"key":{"value"}}
}
]
}

版本 version (必填):目前仅允许值为"2.0"。
语句 statement 是用来描述一条或多条权限的详细信息。该元素包括 effect、action、resource,condition 等多个其他元素的权限或权限集合。一条策略有且仅有一个 statement 元素。
1. 效果 effect (必填):描述声明产生的结果是“允许”还是“显式拒绝”。包括 allow (允许)和 deny (显式拒绝)两种情况。
2. 操作 action (必填):用来描述允许或拒绝的操作。操作可以是 API(以 name 前缀描述)或者功能集(一组特定的 API,以 actionName 前缀描述)。详情参见 操作
3. 资源 resource (必填):描述授权的具体数据。资源是用六段式描述。详情参见 资源
4. 生效条件 condition(选填): 描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP 地址、标签等信息。详情参见 条件

操作

支持访问管理的EMR接口

在 CAM 策略语句中,您可以从支持 CAM 的 EMR 接口中指定任意的 API 操作,详情参见支持 CAM 的 EMR 接口

操作设置示例

场景
示例
在单个语句中指定多个操作
使用以 emr: 为前缀的 API,并使用逗号将它们隔开,如下所示:
"action":["emr:action1","emr:action2"]
使用通配符指定多项操作
指定名字以单词 "Describe" 开头的所有操作,如下所示:
"action":["emr:Describe*"]
指定 EMR 中所有操作
请使用 * 通配符,如下所示:
"action":["emr:*"]

资源

EMR可授权的资源类型

在访问管理(CAM)中可授权的EMR资源类型和对应的资源描述方法如下:
资源类型
授权策略中的资源描述方法
弹性MapReduce实例
qcs::emr:${region}:uin/${uin}:emr-instance/${emrInstanceId}
弹性MapReduce节点
qcs::emr:${region}:uin/${uin}:emr-vm/${emrResourceId}
弹性MapReduce预定包
qcs::emr:${region}:uin/${uin}:emr-reserve/${emrReserveId}
资源定义详情参见 资源描述方式。其中:
${region}:描述地域信息,地域命名方式请参见 地域列表。值为空的时候表示所有地域。如华北地区(北京)为 ap-beijing。
${uin}:主账号的账户ID。如:uin/12345678。
${emrInstanceId}、${emrResourceId}、${emrReserveId}:具体的资源 ID,可前往各个产品控制台查看,值为 * 时代表该类型资源的所有资源。如emr-instance/*。
EMR 接口授权粒度分为操作级和资源级:
资源级接口:此类型接口支持对某一个具体特定的资源进行授权。资源级接口可授权的资源类型参见 支持 CAM 的 EMR 接口
操作级接口:此类型接口不支持对某一个特定的资源进行授权。授权时策略语法若限定了具体的资源,CAM 会判断此接口不在授权范围,判断为无权限。故操作级接口授权时策略语句的资源元素必须指定为 *。

资源设置示例

场景
示例
指定使用特定集群资源
指定使用北京地域的集群ID(emr-12345),如下所示:
"resource":[ "qcs::emr:ap-beijing:uin/12345678:emr-instance/emr-12345"]
指定使用主账号下所有集群资源
可使用* 通配符表示所有资源,如下所示:
"resource":[ "qcs::emr:ap-beijing:uin/12345678:emr-instance/*"]
指定所有资源,或特定 API 操作不支持资源级权限
请在 Resource 元素中使用 * 通配符,如下所示:
"resource": "*"
在一条指令中同时指定多个资源
指定两个资源,并使用逗号将它们隔开,如下所示:
"resource":["resource1","resource2"]

条件

EMR 未定义产品级别的条件关键字。如需查看适用于所有云产品的通用条件关键字,请参见 生效条件概述

场景示例

示例场景
支持使用的创建策略方式
(预设策略,无需自定义)
按策略生成器创建、按策略语法创建
按策略语法创建、按标签授权
按策略生成器创建、按策略语法创建
按策略生成器创建、按策略语法创建
按策略语法创建、按标签授权

示例1:授权用户 EMR 的只读权限

如果您希望授权子账号 EMR 的查询权限,但是不具有创建、删除等权限,您可以将预设策略 QcloudEMRReadOnlyAccess 授权给用户,详情参见购买和管理 EMR 集群

示例2:授权用户 EMR 的查看集群权限

下文为您介绍如何授权子账号EMR的查看集群的基础权限,可将以下策略关联到该用户。具体操作步骤如下:
1. 新建自定义策略
进入 访问管理策略 页面,单击新建自定义策略
选择创建策略方式:
按策略生成器创建
按策略语法创建
选择按策略生成器创建
在“可视化策略生成器”中选择服务的页面,选择弹性MapReduce (emr),补充以下信息。
效果(必选):选择允许。
服务(必选):选择弹性MapReduce (emr)。
操作(必选):选择添加自定义操作,依次添加Inquir*、Check*、Describe*。
资源(必填):选择全部资源。
单击添加权限,选择标签 (tag),补充以下信息。
效果(必选):选择允许。
服务(必选):选择标签 (tag)。
操作(必选):展开全部操作,依次选中GetTags、DescribeResourceTagsByResourceIds、GetTagKeys和GetTagValues。
资源(必填):选择全部资源。
单击添加权限,选择财务 (finance),补充以下信息。
效果(必选):选择允许。
服务(必选):选择财务 (finance)。
操作(必选):选择全部操作
资源(必填):选择全部资源。
完成策略授权声明编辑后,点击“下一步”,进入基本信息和关联用户/用户组/角色页面。
在关联用户/用户组/角色页面,新建名为 Operator-emr-basic 自定义策略,可同时关联用户/用户组/角色快速授权。
单击完成,完成按策略生成器创建自定义策略的操作。
选择按策略语法创建
选择策略模板时,选择空白模板,单击下一步
新建名为 Operator-emr-basic 自定义策略,将策略内容中原有内容清除后,在策略里面配置如下,创建好之后保存即可。
{
"statement": [
{
"action": [
"tag:GetTags",
"finance:*",
"tag:DescribeResourceTagsByResourceIds",
"tag:GetTagKeys",
"tag:GetTagValues",
"emr:Inquir*",
"emr:Check*",
"emr:Describe*"
],
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}
说明:
EMR演进过程中接口会根据情况做适当调整,不排除后续接口新增时出现操作报错,如遇到权限报错情况,请 提交工单联系我们
为了支持用户创建集群、使用标签并进行标签授权,本策略增加了finance、tag权限,可按需添加。
2. 子账号赋权并验证
在用户列表页面找到要赋权的子用户,单击右侧的授权按钮;新建子用户详细操作请参见 新建子用户
选择自定义策略 Operator-emr-basic,并将其授权给子账号,详情参见授权管理
以子用户身份登录进行验证,用户可以创建和查看EMR集群。

示例3:授权用户创建资源时强制绑定标签权限

下文为您介绍如何让子账号在创建集群时,必须绑定权限策略里面指定的标签键值对才能创建,不绑定标签或者绑定其他标签都会创建失败。可先授权用户 EMR 的查看集群权限,再将以下策略关联到该用户。具体操作步骤如下:
1. 新建自定义策略
进入 访问管理策略 页面,单击新建自定义策略
选择创建策略方式:
按策略语法创建
按标签授权
选择按策略语法创建
选择策略模板时,选择空白模板,单击下一步
新建名为 Operator-emr-request_tag 自定义策略,将策略内容中原有内容清除后,在策略里面配置如下,创建好之后保存即可。
{
"statement": [
{
"action": [
"emr:CreateInstance"
],
"condition": {
"for_any_value:string_equal": {
"qcs:request_tag": [
"App&Dev"
]
}
},
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}
选择按标签授权
在“可视化策略生成器”中选择服务的页面,选择弹性MapReduce (emr),补充以下信息。
效果(必选):选择允许。
服务(必选):选择弹性MapReduce (emr)。
操作(必选):展开全部操作,选中CreateInstance接口。
在选择标签栏,选择标签键(App)和标签值(Dev)。
在选择条件键,选择request_tag,条件运算符选择或(for_any_value)。
是否授予不支持标签的接口"resource": "*"权限,选择
完成策略授权声明编辑后,点击“下一步”,进入基本信息和关联用户/用户组/角色页面。
在关联用户/用户组/角色页面,新建名为 Operator-emr-request_tag 自定义策略,可同时关联用户/用户组/角色快速授权。
单击完成,完成按策略生成器创建自定义策略的操作。
2. 子账号赋权并验证
在用户列表页面找到要赋权的子用户,单击右侧的授权按钮;新建子用户详细操作请参见 新建子用户
选择自定义策略 Operator-emr-basic和Operator-emr-request_tag,并将其授权给子账号,详情参见授权管理
以子用户身份登录进行验证,在不设置标签和不设置对应标签(App&Dev)的情况下,尝试购买EMR集群。
不设置标签情况下,提示无操作权限。
不设置对应标签(App&Dev)情况下,提示无操作权限。
在设置对应标签(App&Dev)情况下,集群创建成功。

示例4:授权用户 EMR 的特定操作权限

下文为您介绍如何授权子账号EMR的扩容节点权限,可先授权用户EMR的查看集群权限,再将以下策略关联到该用户。具体操作步骤如下:
1. 新建自定义策略
进入 访问管理策略 页面,单击新建自定义策略
选择创建策略方式:
按策略生成器创建
按策略语法创建
选择按策略生成器创建
在“可视化策略生成器”中选择服务的页面,选择弹性MapReduce (emr),补充以下信息。
效果(必选):选择允许。
服务(必选):选择弹性MapReduce (emr)。
操作(必选):展开全部操作,选中ScaleOutInstance。
资源(必填):选择全部资源。
完成策略授权声明编辑后,点击“下一步”,进入基本信息和关联用户/用户组/角色页面。
在关联用户/用户组/角色页面,新建名为 Operator-emr-ScaleOutInstance 自定义策略,可同时关联用户/用户组/角色快速授权。
单击完成,完成按策略生成器创建自定义策略的操作。
选择按策略语法创建
选择策略模板时,选择空白模板,单击下一步
新建名为 Operator-emr-ScaleOutInstance 自定义策略(可自行定义),将策略内容中原有内容清除后,在策略里面配置如下,创建好之后保存即可。
{
"statement": [
{
"action": [
"emr:ScaleOutInstance"
],
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}
2. 子账号赋权并验证
在用户列表页面找到要赋权的子用户,单击右侧的授权按钮;新建子用户详细操作请参见 新建子用户
选择自定义策略 Operator-emr-basic和Operator-emr-ScaleOutInstance,并将其授权给子账号,详情参见授权管理
以子用户身份登录进行验证,尝试扩容EMR节点,扩容成功。

示例5:授权用户拥有指定资源的操作权限

下文为您介绍如何授权子账号缩容指定节点权限,可先授权用户 EMR 的查看集群权限,再将以下策略关联到该用户。具体操作步骤如下:
1. 新建自定义策略
进入 访问管理策略 页面,单击新建自定义策略
选择创建策略方式:
按策略生成器创建
按策略语法创建
选择按策略生成器创建
在“可视化策略生成器”中选择服务的页面,选择弹性MapReduce (emr),补充以下信息。
效果(必选):选择允许。
服务(必选):选择弹性MapReduce (emr)。
操作(必选):展开全部操作,选中TerminateNodes。
资源(必填):选择特定资源,例如,对emr-instance添加资源六段式,资源输入emr-12345;对emr-vm添加资源六段式,资源输入emr-vm-12345
完成策略授权声明编辑后,点击“下一步”,进入基本信息和关联用户/用户组/角色页面。
在关联用户/用户组/角色页面,新建名为 Operator-emr-resource-instance 自定义策略,可同时关联用户/用户组/角色快速授权。
单击完成,完成按策略生成器创建自定义策略的操作。
选择按策略语法创建
选择策略模板时,选择空白模板,单击下一步
新建名为 Operator-emr-resource-instance 自定义策略(可自行定义),将策略内容中原有内容清除后,在策略里面配置如下,创建好之后保存即可。
{
"statement": [
{
"action": [
"emr:TerminateNodes"
],
"effect": "allow",
"resource": [
"qcs::emr::uin/12345678:emr-instance/emr-12345",
"qcs::emr::uin/12345678:emr-vm/emr-vm-12345"
]
}
],
"version": "2.0"
}
2. 子账号赋权并验证
在用户列表页面找到要赋权的子用户,单击右侧的授权按钮;新建子用户详细操作请参见 新建子用户
选择自定义策略 Operator-emr-basic和Operator-emr-resource-instance,并将其授权给子账号,详情参见授权管理
以子用户身份登录进行验证,尝试分别缩容节点A(节点ID:emr-vm-12345)和节点B。
缩容节点A,缩容成功。
缩容节点B,提示无操作权限。

示例6:授权用户基于标签的操作权限

下文为您介绍如何授权子账号基于标签的变更节点配置权限,可先授权用户EMR的查看集群权限,再将以下策略关联到该用户。具体操作步骤如下:
1. 新建标签并为集群打上标签。
进入 标签列表页面,单击新建标签。
说明:
此处及后续流程以标签 App 举例。

输入标签键(App)和标签值(Dev),单击确定即可创建成功。
集群列表 页面选择要打标签的集群,单击上方更多操作,单击编辑标签。
编辑标签中选择之前建立的标签 App,单击确定即可。
2. 新建自定义策略。
进入 访问管理策略 页面,单击新建自定义策略
选择按策略语法创建
选择创建策略方式:
按策略语法创建
按标签授权
选择策略模板时,选择空白模板,单击下一步
新建名为 Operator-emr-resource_tag 自定义策略(可自行定义),将策略内容中原有内容清除后,在策略里面配置如下,创建好之后保存即可。
{
"statement": [
{
"action": [
"emr:ModifyResource"
],
"condition": {
"for_any_value:string_equal": {
"qcs:resource_tag": [
"App&Dev"
]
}
},
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}
选择按标签授权
在“可视化策略生成器”中选择服务的页面,选择弹性MapReduce (emr),补充以下信息。
效果(必选):选择允许。
服务(必选):选择弹性MapReduce (emr)。
操作(必选):展开全部操作,选中ModifyResource接口。
在选择标签栏,选择标签键(App)和标签值(Dev)。
在选择条件键,选择resource_tag,条件运算符选择或(for_any_value)。
是否授予不支持标签的接口"resource": "*"权限,选择
完成策略授权声明编辑后,点击“下一步”,进入基本信息和关联用户/用户组/角色页面。
在关联用户/用户组/角色页面,新建名为 Operator-emr-resource_tag 自定义策略,可同时关联用户/用户组/角色快速授权。
单击完成,完成按策略生成器创建自定义策略的操作。
3. 子账号赋权并验证。
在用户列表页面找到要赋权的子用户,单击右侧的授权按钮;新建子用户详细操作请参见 新建子用户
选择自定义策略 Operator-emr-basic和Operator-emr-resource_tag,并将其授权给子账号,详情参见授权管理
以子用户身份登录进行验证,尝试分别变配有标签(App&Dev)的节点和无标签(App&Dev)的节点。
操作有标签(App&Dev)的节点,变配成功。
操作无标签(App&Dev)的节点,提示无操作权限。