MaxCompute中如何通过policy 禁止角色的删除权限-阿里云开发者社区

开发者社区> 阿里巴巴大数据计算> 正文

MaxCompute中如何通过policy 禁止角色的删除权限

简介: Policy授权则是一种基于主体的授权。通过Policy授权的权限数据(即访问策略)被看做是授权主体的一种子资源。只有当主体(用户或角色)存在时才能进行Policy授权操作。当主体被删除时,通过Policy授权的权限数据会被自动删除。 Policy授权使用MaxCompute自定义的一种访问策略语言来进行授权,允许或禁止主体对项目空间对象的访问权限。Policy授权机制,主要解决ACL授权机制无法解决的一些复杂授权场景。

需求场景:通过DataWorks简单模式项目使用MaxCompute,项目设置MaxCompute访问身份为“个人账号”,当成员子账号为开发角色时,对MaxCompute Project默认可删除所有表的权限。然而业务需求有些表非常重要,不允许开发角色进行删除同时要求杜绝误删,假设这些表名都是以tb_开头。

操作步骤:
1、在客户端创建role ,这里我创建的角色名为test,链接和命令如下:
https://help.aliyun.com/document_detail/27927.html?spm=a2c4g.11186623.6.926.51d647bcbndTpj

create role + role_name

2、通过policy 方式授权project_test项目下,禁止删除 tb_* 开头的所有表,权限赋予test角色。链接和命令如下:
https://help.aliyun.com/document_detail/162576.html?spm=a2c4g.11174283.6.936.3d36590e82MdUv

grant drop on table tb_* to role test privilegeproperties("policy" = "true", "allow"="false");

3、将test角色赋予子账号。链接和命令如下:
https://help.aliyun.com/document_detail/27935.html?spm=a2c4g.11186623.6.932.1bee77ccDP44gr

grant test to + 子账号

图六.png

4、通过dataworks设置子账号为开发角色。
(1)、登录到Dataworks首页,后点击右上方的小扳手进入工作空间配置页面。
图一.png
(2)、进入页面后点击成员管理进行子账号角色配置。
图二.png
(3)、在MaxCompute客户端执行下面的命令,将test角色权限授予子账号,格式如下:
grant test to + 子账号名
(4)、在MaxCompute客户端登录子账号,进行权限的查看,命令如下:
show grants for + 子账号名
图三.png
(5)、子账号删除tb开头表的测试如图:
图四.png

结论:通过policy可以用roles的方式进行权限控制。

参数说明:
• privilegeproperties中的{"policy" = "true"}表示当前为Policy授权。
• privilegeproperties中的{"allow"="[true|false]"}表示本次授权为白名单形式授权。黑名单形式授权为 {"deny"=" [true|false]"}。
• revoke只有allow、objectName和rolename三个参数对应时才会生效。

注意点:
1、如果不知道账号名,可以通过 whoami 命令查看
图五.png
2、添加的用户名username既可以是云账号(即在阿里云官网上注册过的有效邮箱地址),也可以是执行此命令的云账号的某个RAM子账号。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里巴巴大数据计算
使用钉钉扫一扫加入圈子
+ 订阅

阿里大数据官方技术圈

官方博客
链接