弹性 MapReduce 自定义策略操作指引

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

相关产品
弹性 MapReduce 产品页,含版本规格、价格与购买入口。

一、自定义权限策略创建方式

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

二、授权策略语法参考

通过策略语法创建自定义策略时,需要了解业务的权限管控需求和 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)的节点,提示无操作权限。

赞 (0)
上一篇 4天前
下一篇 4天前