一、自定义权限策略创建方式
| 创建方式 | 授权指南 |
| 通过策略生成器创建自定义策略 | 该方式支持在策略向导中选择服务、操作、定义资源,自动生成策略语法,可以灵活满足差异化权限管理需求,优先推荐使用。详情参见 通过策略生成器创建自定义策略。 |
| 通过标签授权创建自定义策略 | 该方式将具有一类标签属性的资源快速授权给用户或用户组。详情参见 通过标签授权创建自定义策略。 |
| 通过策略语法创建自定义策略 | 该方式由用户编写策略语法,生成对应的策略,权限粒度灵活,可以解决对权限精细划分有较高要求的用户诉求。详情参见 通过策略语法创建自定义策略。 |
二、授权策略语法参考
通过策略语法创建自定义策略时,需要了解业务的权限管控需求和 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 的只读权限 | (预设策略,无需自定义) |
| 示例2:授权用户 EMR 的查看集群权限 | 按策略生成器创建、按策略语法创建 |
| 示例3:授权用户创建资源时强制绑定标签权限 | 按策略语法创建、按标签授权 |
| 示例4:授权用户 EMR 的特定操作权限 | 按策略生成器创建、按策略语法创建 |
| 示例5:授权用户拥有指定资源的操作权限 | 按策略生成器创建、按策略语法创建 |
| 示例6:授权用户基于标签的操作权限 | 按策略语法创建、按标签授权 |
十、示例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"}
注意:说明:
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)的节点,提示无操作权限。