使用自定义ECS应用角色访问同账号云资源

本文介绍在E-MapReduce控制台上,通过创建集群时在基础配置页面的高级设置区域设置ECS应用角色,实现以免密的方式访问同账号下的其它资源。例如,对象存储OSS和日志服务SLS。

背景信息

您在创建集群时可以使用自定义的角色,通过给该角色不同的权限策略,以限制集群访问外部资源的权限。例如,您可以进行如下操作:
  • 指定集群只能访问指定OSS的数据目录。
  • 指定集群访问指定的外部资源。

前提条件

已在OSS管理控制台,创建与EMR集群同一地域下的存储空间,详情请参见控制台创建存储空间

操作流程

  1. 步骤一:新建权限策略

  2. 步骤二:创建RAM角色

  3. 步骤三:创建集群并访问外部资源

步骤一:新建权限策略

  1. 进入新建自定义权限策略页面。

    1. 使用云账号登录RAM控制台

    2. 在RAM访问控制页面,选择权限管理 > 权限策略

    3. 权限策略页面,单击创建权限策略

  2. 创建权限策略页面,单击脚本编辑页签。

  3. 输入权限策略内容,然后单击确定

    添加如下策略。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "oss:GetObject",
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:emr-logs2",
                    "acs:oss:*:*:emr-logs2/*"
                ],
                "Effect": "Allow"
            }
        ]
    }
    说明

    策略中涉及的元素如下所示:

    • Action:是指对具体资源的操作。本示例是OSS的读取和查询目录的权限。

    • Resource:是指被授权的具体对象。本示例是访问名为emr-logs2的OSS Bucket及其中的内容。

    更多权限策略的基本元素,请参见权限策略基本元素

  4. 输入权限策略名称

    本示例为test-emr。

  5. 单击确定

步骤二:创建RAM角色

  1. 在RAM访问控制页面,选择身份管理 > 角色

  2. 角色页面,单击创建角色

  3. 创建RAM角色。

    1. 单击阿里云服务

    2. 单击下一步

    3. 配置角色面板,配置以下信息。

      参数

      描述

      角色名称

      本示例为test-emr。

      选择受信服务

      选择云服务器

    4. 单击完成

  4. 可选:修改授信服务。

    重要

    如果您创建的集群是EMR 3.32之后版本、EMR 4.5之后版本或EMR 5.x及之后版本,则无需执行本步骤。

    1. 角色页面,单击刚创建的角色名称

    2. 单击信任策略页签。

    3. 单击编辑信任策略

    4. 修改ecs.aliyuncs.comemr.aliyuncs.com

      策略

    5. 单击保存信任策略

  5. 添加相应权限。

    1. 角色页面,单击刚创建角色名称的操作列的新增授权

    2. 新增授权页面,选择自定义策略,添加新建的权限策略。

    3. 单击确认新增授权

    4. 单击关闭

步骤三:创建集群并访问外部资源

  1. 登录EMR on ECS控制台

  2. 在顶部菜单栏处,根据实际情况选择地域和资源组

  3. 单击创建集群,在基础配置页面的高级设置区域,添加步骤二:创建RAM角色中创建的角色名称。创建详情请参见创建集群

    image

  4. 集群创建成功后,通过SSH登录集群,详情请参见登录集群

    执行以下命令,验证授权是否成功。

    hdfs dfs -ls oss://<yourBucketName>/
    说明

    示例中的<yourBucketName>为您OSS Bucket的名称。

    • 没有该Bucket访问权限时,无法访问OSS路径。

    • 有该Bucket访问权限时,可以正常访问OSS路径。

常见问题

  • Q:创建集群时提示NoPermission。
    A:您可以参照如下方式排查解决。
    1. 您创建集群使用的用户是否有创建集群和更换ECS应用角色的权限,如果该RAM用户权限为AliyunEMRDevelopAccess可以修改为AliyunEMRFullAccess。
    2. 创建集群时ECS应用角色名称是否填写正确。
    3. 授信策略是否修改为emr.aliyuncs.com
  • Q:HDFS无法访问OSS路径。

    A:您可以参照如下方式排查解决。

    1. 确认访问的OSS Bucket是否和集群在同一个地域(Region),如果不在同一地域(Region),在访问链接中需要添加相应的Endpoint。

    2. 确认访问的OSS Bucket是否包含在新建的权限策略中,如果没有,需要修改权限策略。

    3. 确认是否在OSS控制台上设置了该Bucket的相关权限。如果设置了相关权限,您可以在OSS控制台上取消相关权限的设置,通过设置权限策略中的Action内容来设置相关权限。