弹性 MapReduce 角色授权

创建和运行弹性 MapReduce (简称:EMR) 集群时,EMR 需要访问你账号下的其他云资源(CVM、CBS、CDB、COS 等)。腾讯云不会保存和使用你的密钥,而是由你授予一个「角色」给 EMR 服务,EMR 在角色权限范围内临时访问这些资源。这篇档说明需要授权哪些角色、每个角色解决什么问题,以及如何完成授权。

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

服务(相关)角色是由腾讯云服务预定义,经用户授权后 EMR 即可通过扮演服务相关角色对用户资源进行访问操作。

场景 需要做的授权 是否必做
第一次使用 EMR,要创建集群 授权默认服务角色 EMR_QCSRole 必做
集群要读写 COS 上的数据(如 cosn:// 路径) 授权 COS 访问服务相关角色 EMR_QCSLinkedRoleInApplicationDataAccess 按需
只允许某个集群访问指定 COS 桶,或要求最小权限 创建自定义 COS 服务角色并绑定到指定集群 按需(进阶)

一、角色对比

三个角色用途可按下表区分。

对比项 EMR_QCSRole(默认服务角色) EMR_QCSLinkedRoleInApplicationDataAccess(COS 访问服务相关角色) EMRCosRole(自定义 COS 服务角色,示例名)
角色类型 服务角色 服务相关角色(Service Linked Role) 服务角色(用户自建)
解决什么 创建集群所需的基础资源:CVM、CBS、TencentDB、TKE,以及日志落盘 集群运行期间读写 COS 数据、访问数据目录 把 COS 权限收敛到指定桶 / 指定路径
关联策略 QcloudAccessForEMRRole;存量用户另有 QcloudAccessForEMRRoleInApplicationDataAccess QcloudAccessForEMRLinkedRoleInApplicationDataAccess 用户自建策略(如 TestPolicy)
创建时机 首次授权流程自动创建 控制台单击授权时自动创建 用户在 CAM 控制台手动创建
策略变更 预设策略,不可变更 预设策略,不可变更 完全自定义
生效范围 账号下全部 EMR 集群 账号下全部 EMR 集群 仅绑定该角色的集群

注意:说明:

注意:术语速查:

二、默认服务角色授权(必选)

使用 EMR 时访问 CVM、CBS、CDB 等服务,首次购买时需要授权创建默认服务角色 EMR_QCSRole。当该角色授予成功后,弹性 MapReduce 才能调用相关服务创建集群和保存日志。不完成本步授权,主账号和子账号均无法创建集群。

注意:首次开通 EMR 时,必须使用主账号,或具有 QcloudCamSubaccountsAuthorizeRoleFullAccess 权限的协作者以及子用户完成角色授权流程,否则子账号和主账号均不能使用 EMR。若后续还需创建自定义服务角色,该子账号另需 QcloudCamRoleFullAccess 权限。

三、操作步骤

1. 当用户创建集群或创建按需执行计划时,若为 EMR 服务授予 EMR_QCSRole 角色失败,会有如下提示。可单击前往访问管理,进行角色授权。

2. 单击同意授权,会自动创建服务角色 EMR_QCSRole 并关联预设策略 QcloudAccessForEMRRole。

3. 授权完成后,用户需刷新弹性 MapReduce 的控制台或购买页,刷新后即可正常操作。更多 EMR_QCSRole 相关的详细策略信息,可登录 访问管理控制台 查看。

注意:说明:

注意:如何确认授权成功:

注意:1. 在访问管理控制台的 角色列表 中可检索到 EMR_QCSRole,且角色载体为“弹性 MapReduce (emr)”。

注意:2. 刷新后重新进入集群购买页,不再出现“前往访问管理”提示。

四、COS 访问角色授权(可选)

在创建或使用 EMR 集群时,若需要对 COS(对象存储)进行数据的直接写入或计算,尤其是存算分离,为保证数据安全需要授予 EMR 通过临时密钥方式对 COS 资源进行读写,需要授权创建 EMR 服务相关角色 EMR_QCSLinkedRoleInApplicationDataAccess 绑定 QcloudAccessForEMRLinkedRoleInApplicationDataAccess 预设策略。未授权时,Hive、Spark 等组件读写 COS 会报权限错误。

注意:COS 桶访问授权说明:

注意:1. 如何判断自己属于哪一类:进入集群实例信息页查看“集群 COS 服务角色”。显示 EMR_QCSLinkedRoleInApplicationDataAccess → 已使用服务相关角色(推荐,无需额外操作);显示 EMR_QCSRole 或为空 → 属于存量授权方式。

注意:2. 存量用户当前授权策略为服务角色 EMR_QCSRole 中绑定 QcloudAccessForEMRRoleInApplicationDataAccess 策略,可继续使用;若需使用服务相关角色,请授权并在集群实例信息页集群 COS 服务角色手动绑定 EMR_QCSLinkedRoleInApplicationDataAccess 服务相关角色。

注意:3. 当服务相关角色和服务角色均已授权时,默认使用服务相关角色,集群实例信息授权策略中,对象存储显示已授权,且集群 COS 服务角色会显示 EMR_QCSLinkedRoleInApplicationDataAccess 角色。

五、操作步骤

1. 在集群列表页面单击需要管理的集群 ID/名称,进入实例信息页面,会检查是否绑定 EMR 服务相关角色 EMR_QCSLinkedRoleInApplicationDataAccess。

2. 若不存在 EMR 服务相关角色 EMR_QCSLinkedRoleInApplicationDataAccess ,会提示当前集群未授权账号 COS 权限,可单击授权进行授权绑定。

3. 授权完成后,用户需刷新 EMR 的控制台或购买页,刷新后即可正常操作,并在实例信息页确认“对象存储”显示为已授权。

4. 更多 EMR_QCSLinkedRoleInApplicationDataAccess 相关的详细策略信息参见 服务相关角色。

六、自定义集群 COS 服务角色授权(可选)

系统默认使用 EMR 服务相关角色 EMR_QCSLinkedRoleInApplicationDataAccess 访问对象存储(COS)资源,若需要精细化指定集群访问对应的 COS 资源权限,用户可根据需要设置自定义服务角色。

注意:说明:

注意:集群 COS 服务角色默认会显示当前已绑定的角色身份,且当前集群使用该角色身份对 COS 资源进行读写。

七、自定义权限策略流程

1. 登录 访问管理控制台,单击新建自定义策略,在弹出的“选择创建策略方式”页面中选择按策略语法创建。

2. 在“按策略语法创建”页面,选择模板类型为空白模板。

3. 设置语法策略如下(以授权集群读写单个桶为例):

{ "version": "2.0", "statement": [ { "effect": "allow", "action": [ "cos:GetBucket", "cos:HeadBucket", "cos:GetObject", "cos:HeadObject", "cos:PutObject", "cos:DeleteObject", "cos:ListMultipartUploads", "cos:InitiateMultipartUpload", "cos:UploadPart", "cos:CompleteMultipartUpload", "cos:AbortMultipartUpload" ], "resource": [ "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*" ] } ]}

生成一个名为 TestPolicy 的策略,客户可自定义该名称。

注意:参数替换说明:

注意:为安全起见,不建议使用 cos:* 全量授权。请按需勾选上表中的 action;只读场景可只保留 Get* 与 Head* 操作。

八、创建自定义角色流程

1. 在 访问管理控制台,单击新建角色,在弹出的“选择角色载体”页面中选择腾讯云产品服务,进入“新建自定义角色”页面,选择产品服务为“弹性 MapReduce (emr)”。

2. 绑定步骤1中生成的策略,此处为 TestPolicy,客户可根据想要授权的策略进行绑定。

3. 标记角色的标签键和标签值,单击下一步。

4. 生成名称为 EMRCosRole 的自定义角色,客户可自定义该名称。

九、绑定角色到 EMR 集群流程

在 EMR 控制台 中选中对应的集群,单击集群 ID/名称进入实例详情,在实例信息 > 基础配置 > 自定义服务角色中,单击设置。设置“自定义服务角色”为步骤2中生成的自定义角色,此处为 EMRCosRole,用户可自定义该名称。

注意:1. 请确保集群 COS 服务角色中绑定的自定义服务角色包含访问 COS 具体操作权限,若绑定角色未包含访问 COS 的具体操作权限,将无法访问 COS,表现为 403 / AccessDenied。

注意:2. 策略修改后一般秒级生效;如未生效,请在实例信息页重新设置一次自定义服务角色。查询或修改自定义服务角色中预设权限策略可前往 访问管理。

十、授权后如何验证

验证项 操作 预期结果
默认服务角色 访问管理控制台 – 角色 – 搜索 EMR_QCSRole 角色存在,载体为“弹性 MapReduce (emr)”,已关联 QcloudAccessForEMRRole
COS 访问授权 EMR 控制台 – 集群实例信息页 “对象存储”显示已授权,“集群 COS 服务角色”显示对应角色名
集群实际可读写 COS 登录集群执行 hadoop fs -ls cosn://examplebucket-1250000000/path 正常返回目录列表;写入后再执行 hadoop fs -cat 可读取,即读写均正常

十一、常见问题

现象 原因 处理
子账号单击“同意授权”提示无权限 缺少 QcloudCamSubaccountsAuthorizeRoleFullAccess 权限 请主账号在访问管理 – 用户列表为该子账号关联该策略,或直接使用主账号完成首次授权
已授权,控制台仍提示未授权 页面缓存 刷新控制台或购买页;若仍存在,请在 CAM 中核对角色是否创建成功
集群读写 COS 报 403 / AccessDenied 自定义角色策略未包含对应操作,或桶名 / APPID 填写错误 核对 resource 中的地域、APPID、桶名(含 -APPID 后缀),并补齐所需 action
自定义策略保存时报语法错误 resource 未按六段式填写 按 qcs::cos:{地域}:uid/{APPID}:{桶名}-{APPID}/* 格式修改
存量用户是否需要切换到服务相关角色 非强制 现有 EMR_QCSRole 授权可继续使用;如需更安全、与服务绑定的授权方式,再授权并在实例信息页绑定服务相关角色
删除角色会有什么影响 授权失效 删除后新建集群、扩缩容、日志落盘、COS 读写均会失败,请谨慎操作
授权是否收费 – 角色与策略授权本身不产生费用
赞 (0)
上一篇 4天前
下一篇 4天前