子账号授权

更新时间:
复制为 MD 格式

用户可选择的授权方式

  • 通过开通RAM子账号的方式,对子账号进行授权,提供该子账号的access key IDsecret。

授权子账号操作步骤

step1 开通RAM服务

在阿里云页面搜索框中搜索RAM,点击开通,进入控制台。

step2 下载配置客户端

MaxCompute的客户端详细介绍见:使用本地客户端(odpscmd)连接

1.下载,解压,进入目录,会有4个文件。

chengrufeideMacBook-Pro:odpscmd_public chengrufei$ ls
bin	conf	lib	plugins
chengrufeideMacBook-Pro:odpscmd_public chengrufei$

2.进入conf目录,修改odps_config.ini文件

(1) 阿里云文档中也有介绍,主要填充以下几个字段。

  • project_name:项目名称,在MaxCompute控制台中查询。

  • access_id: 项目使用的阿里云账号或RAM用户的AccessKey ID。

  • access_key: 项目使用的AccessKey ID对应的AccessKey Secret。

(2) 其它字段用默认值即可(具体可以参考客户端介绍文档,比较详细)。

3.进入bin目录,确认配置成功。

(1) 运行odpscmd,进入命令行。

chengrufeideMacBook-Pro:bin chengrufei$ ./odpscmd
Aliyun ODPS Command Line Tool
Version 0.29.2
@Copyright 2017 Alibaba Cloud Computing Co., Ltd. All rights reserved.
odps@ openrec_gray>

(2)执行 show tables;(注,命令要加上分号)确认结果是否与预期相符

[odps@ openrec_gray]>show tables;
ALIYUN$openias_new:dataimport_table_rufei_test
ALIYUN$openias_new:item_info_table_rufei

4.安装成功,退出。

step3 创建RAM子用户(user)

此步骤为创建要授权的子账号,为避免不必要的问题,请将这个子账号专门对接阿里智能推荐服务,不用授予文档中指定之外的权限。

阿里云官方参考文档(里面roleuser的概念比较绕,可以先按本文档操作流程走完,感兴趣可以仔细了解)

1.进入控制台,在用户管理中栏中,点击创建用户。

2.根据您希望赋予子账号的情况进行选择。填写登录名称(如 test_document)和显示名称(如 official_documents)。访问方式同时勾选控制台访问编程访问。控制台密码选择自动生成密码,重置密码选择无需重置,MFA 多因素认证选择无需开启,然后单击确定

step4 对子账号授权MaxCompute权限

1.在控制台用户中,点击添加权限。

2.搜索dataworks,进行授权。

系统策略 Tab 下选中 AliyunDataWorksFullAccess(备注:管理DataWorks的权限)策略。

step5 将子用户添加到MaxCompute的项目空间中

有两种方式,页面或者odpscmd,建议走页面方式

页面方式:

阿里云官方参考文档

1.进入MaxCompute控制台,点击左侧“工作空间列表”-点击某个工作空间的“工作空间配置”-点击“更多配置”。

2.在左侧的成员管理中添加成员。2.在成员管理页面单击添加成员,在弹出的对话框中,从左侧待添加账号列表勾选目标子账号,单击右箭头>按钮将其移至右侧已添加账号列表,在批量设置角色区域勾选所需角色(可选:项目所有者、空间管理员、开发、运维、部署、访客、安全管理员、模型设计师),然后单击确定。如需新建子账号,可单击顶部提示栏中的RAM控制台链接创建后,再单击刷新同步至当前页面。

3.您可以通过odpscmd验证一下:add user 注意,此时的username格式为RAM\$username

[odps@ openrec_gray]>add user RAM$odsp-read-test;
FAILED: the user already exists in the project

odps cmd方式 在客户端执行 add user。

step6 创建MaxCompute中的角色role

支持页面和odps客户端两种方式创建,强烈建立走odps客户端方式(页面会有命名规则的冲突,比如页面可以有符号“-”,但是在odps授权时,会不识别这个符号)。

页面方式

见阿里云官方RAM文档。

odps cmd方式

执行命令 create role ; (不要忘记分号)。

[odps@ openrec_gray]>create role <role_name>;
OK

step7 对创建的role进行policy授权

这一步只能通过odps的客户端授权。

1.本地编辑一个file,下面为获取read权限,替换项目名称即可 内容如下:

{
        "Version": "1",
        "Statement": [{
                "Effect": "Allow",
                "Action": [
                        "odps:List",
                        "odps:Read"
                ],
                "Resource": [
                        "acs:odps:*:projects/openrec_gray"
                ]
        },
      {
                "Effect": "Allow",
                "Action": [
                        "odps:Read",
                        "odps:Describe",
                        "odps:Select"
                ],
                "Resource": [
                        "acs:odps:*:projects/openrec_gray/tables/*"
                ]
        }]
}

2.如果用户要做个性化修改,可以参考上面的示范。

3.将该policy的策略生效到对应的role中:put policy on role ; (注意加分号,此时的roleName不用加任何的前缀)。

odps@ openrec_gray>put policy /Users/chengrufei/workspace/odpscmd_public/bin/file on role odpsReadRufei;
will overwrite the old policy content  (yes/no)? yes
OK

4.验证是否生效:get policy on role

odps@ openrec_gray>get policy on role odpsReadRufei;
{
    "Statement": [{
            "Action": ["odps:List",
                "odps:Read",
                "odps:Describe",
                "odps:Select"],
            "Effect": "Allow",
            "Resource": ["acs:odps:*:projects/openrec_gray"]}],
"Version": "1"}
openrec_gray>put policy /Users/chengrufei/workspace/odpscm...
Will overwrite the old policy content  (yes/no)? yes
OK

step8 将角色role授权给子用户

只能通过odps的客户端完成。

grant to RAM\$;

odps@ openrec_gray>grant odpsReadRufei to RAM$odsp-read-test;
OK
odps@ openrec_gray>

step9 完成

将以下参数传给我们

  • 子账户的access key id

  • 子账户的access key secret

  • MaxCompute中对应的表名称