子账号授权
用户可选择的授权方式
-
通过开通RAM子账号的方式,对子账号进行授权,提供该子账号的access key ID和secret。
授权子账号操作步骤
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)
此步骤为创建要授权的子账号,为避免不必要的问题,请将这个子账号专门对接阿里智能推荐服务,不用授予文档中指定之外的权限。
阿里云官方参考文档(里面role和user的概念比较绕,可以先按本文档操作流程走完,感兴趣可以仔细了解)。
1.进入控制台,在用户管理中栏中,点击创建用户。
2.根据您希望赋予子账号的情况进行选择。填写登录名称(如 test_document)和显示名称(如 official_documents)。访问方式同时勾选控制台访问和编程访问。控制台密码选择自动生成密码,重置密码选择无需重置,MFA 多因素认证选择无需开启,然后单击确定。
step4 对子账号授权MaxCompute权限
1.在控制台用户中,点击添加权限。
2.搜索dataworks,进行授权。
在系统策略 Tab 下选中 AliyunDataWorksFullAccess(备注:管理DataWorks的权限)策略。
step5 将子用户添加到MaxCompute的项目空间中
有两种方式,页面或者odps的cmd,建议走页面方式
页面方式:
1.进入MaxCompute控制台,点击左侧“工作空间列表”-点击某个工作空间的“工作空间配置”-点击“更多配置”。
2.在左侧的成员管理中添加成员。2.在成员管理页面单击添加成员,在弹出的对话框中,从左侧待添加账号列表勾选目标子账号,单击右箭头>按钮将其移至右侧已添加账号列表,在批量设置角色区域勾选所需角色(可选:项目所有者、空间管理员、开发、运维、部署、访客、安全管理员、模型设计师),然后单击确定。如需新建子账号,可单击顶部提示栏中的RAM控制台链接创建后,再单击刷新同步至当前页面。
3.您可以通过odps的cmd验证一下: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中对应的表名称