在不少的数据开发场景下,MaxCompute项目管理员须要可以提供给某些角色或团队(如开发人员、运维人员)对项目内全部表具有特定权限。例如,某些客户可能须要在生产项目中,给ETL开发团队赋予全部表(或者全部ods开头的表)只读权限,当项目内建立了新表后,对应角色人员能够自动获取到新表的权限,方便开发人员可以快速处理线上数据问题排查。
MaxCompute原有的权限模型提供的ACL受权方式,须要明确指定受权对象才能受权,ACL方式不支持通配符方式对新增表作受权。本文经过一个自定义角色的场景,介绍使用MaxCompute新升级的权限模型,利用ACL实现对特定规则的表进行受权。html
您的MaxCompute项目须要支持MaxCompute新权限模型。截止目前(2020/1/6),MaxCompute新权限模型正在陆续灰度发布,若是您在参考本文档操做时不能正确执行,极可能您的项目尚未开放新权限模型,您能够主动经过工单进行"权限模型2.0"功能申请。如何申请,请参考这里的说明。web
经过Dataworks的控制台建立的MaxCompute项目,在MaxCompute Project中预置了如下内建角色(Predefined roles,文档连接):安全
以上内建角色,没有提供对项目内全部表只读的角色,不知足文前的需求场景。须要建立一个自定义角色来配置能够知足的角色。运维
在MaxCompute项目中建立自定义角色能够经过MaxCompute命令行方式(MaxCompute客户端工具)和Dataworks的Web Console来建立并受权。工具
使用MaxCompute命令行工具(odpscmd),访问须要作受权管理的MaxCompute项目。具体操做以下:测试
1.在目标项目(本demo的项目名称为your_project_name)中建立一个自定义角色_
create role select_only_role;ui
2.为自定义角色select_only_role对项目内全部表(包括将来项目内新建的表)赋予Describe,Select权限_阿里云
1) 项目下的全部表
GRANT Describe,SELECT ON table TO Role select_only_role privilegeproperties("policy" = "true");
2)项目下的全部符合特定规则的表
GRANT Describe,SELECT ON table orders TO Role select_only_role privilegeproperties("policy" = "true");url
3.给select_only_role角色赋予在your_project_name项目内运行做业(CreateInstance,如提交SQL做业)、查看项目内的数据对象(List,如show tables,list resources等)_
GRANT CreateInstance,List ON project your_project_name TO Role select_only_role ;spa
4.给用户赋予自定义角色权限(也能够在Dataworks的自定义角色web-ui界面里,添加某个成员到该自定义角色下)
grant role select_only_role to RAM$account@company_name.com:ram_account01;**
上面刚刚建立了自定义角色select_only_role(这里假设这个角色受权仅能访问orders开头的表),同时将这个角色受权给了子帐号ram_account01。
在项目中找到一张在ram_account01在得到select_only_role角色前,不能访问的表orders_test。经过命令,能够查看到表orders_test目前对于角色select_only_role提供了Describe和Select权限。odps@ your_project_name>show grants on table orders_test;
`Authorization Type: Implicit<br />
AG project_owner/ALIYUN$account@company_name.com: All<br />
AG object_creator/ALIYUN$account@company_name.com: All`
Authorization Type: Policy
`
A role/role_project_admin: *<br />
A role/role_project_dev: *<br />
A role/role_project_pe: Describe | Read<br />
A role/role_project_scheduler: *<br />
A role/select_only_role: Describe | Select`
同时,ram_account01访问MaxCompute项目,能够查看orders_test表的表结构和数据。
odps@ your_project_name>select * from orders_test limit 10;
1.在dataworks的项目管理中新建自定义角色select_only_role
2.点击角色右侧的"权限管理"按钮,勾选添加List和CreateInstance权限
3.在dataworks的临时查询窗口,经过ACL命令为新建角色受权。
4.向某个子帐号授予select_only_role角色的权限。
在自定义用户角色功能页面中,选择自定义角色的成员管理,将某个子帐号添加至该角色下,完成角色受权。
5.查询被受权的表,验证是否得到权限
除此以外,还能够继续测试是否能够写入、删除该表,进一步验证获取的权限是否符合预期。
MaxCompute新的权限模型,支持在ACL受权中使用通配符,在原先必须明确指明已经存在的受权对象基础上,能够经过通配符指定全部表或者特定规则表,在角色上实现更灵活的受权管理需求。更多安全管理的介绍,请查看产品官方文档。
本文为阿里云内容,未经容许不得转载。