**背景:**用户在使用MaxCompute与DataWorks这两种权限模型不清楚,并且对于相关MaxCompute的权限执行语句也不太熟悉,以至于在自己的实际操作中不能建立完整的权限策略,导致权限控制的混乱,甚至在开发过程中时常遇到权限问题的错误,导致延误业务的推动进展,该篇文档集主要的权限知识点与一体,常用的MaxCompute权限语句,以及经典的开发环境和生产环境之间的赋权示例给大家做出做出介绍。
**一、MaxCompute的安全模型**

**二、DataWorks安全模型**

**三、子账户添加的限制**

**四、MaxCompute的授权管理图**

**五、授权场景和注意事项**

**六、移除用户的注意事项**

**七、成员管理的相关语句**
**查看成员:**
```
Project owner或admin命令行执行
List users; --查看成员列表
Show grants for <username>; -- 查看某成员权限
```

**添加成员:**
```
1.DataWorks添加RAM子账号;
2.Project owner或admin命令行方式执行
add user <username> --可为RAM子账户或其他云账户
```

**删除成员:**
```
1.DataWorks删除RAM子账号;
2.Project owner或admin命令行方式执行:
remove user <username>
```

**八、角色管理的相关语句:**
**查看角色:**
```
查看role列表:List roles;
查看role中的权限:describe role <role_name>
查看某用户在什么role中:show grants for <username>
查看某个role都指派给那些user:目前不支持!
```

**创建角色:**
```
创建role:Create role <role_name>;
给角色授权:grant actions on object to <role_name>
添加用户到角色:grant <roleName> TO <full_username>
```

**删除角色:**
```
删除角色中的用户:REVOKE <roleName> FROM <full_usename>;
撤销对角色的授权:revoke <privList> on <objType> <objName> from role <rolename>
删除角色: DROP ROLE <roleName>
```

**九、policy授权介绍**
Policy授权则是⼀种基于主体的授权。通过Policy授权的权限数据(即访问策略)被看做是授权主体的⼀种 ⼦资源。只有当主体(⽤户或⻆⾊)存在时才能进⾏Policy授权操作。当主体被删除时,通过Policy授权的 权限数据会被⾃动删除。 Policy授权使⽤MaxCompute⾃定义的⼀种访问策略语⾔来进⾏授权,允许或 禁⽌主体对项⽬空间对象的访问权限。
Policy授权机制,主要解决ACL授权机制⽆法解决的⼀些复杂授权场景,⽐如:
* ⼀次操作对⼀组对象进⾏授权,如所有的函数、所有以 “taobao” 开头的表
* 带限制条件的授权,如授权只会在指定的时段内才会⽣效、当请求者从指定的IP地址发起请求时授权才 会⽣效、或者只允许⽤户使⽤SQL(⽽不允许其它类型的Task)来访问某张表。
Policy授权语句格式如下:
```
GET POLICY; --读取项目空间的Policy
PUT POLICY <policyFile>; --设置(覆盖)项目空间的Policy
GET POLICY ON ROLE <roleName>; --读取项目空间中某个角色的Policy
PUT POLICY <policyFile> ON ROLE <roleName>; --设置(覆盖)项目空间中某个角色的Policy
```

**policy基本术语**
* **主体(Principal) **主体(Principal)是指访问策略中的权限被指派的对象。⽐如,访问策略”允许张三在 2011年12⽉31⽇之前对资源SampleBucket执⾏CreateObject操作”中的主体是”张三”。
* **操作(Action) **操作(Action)是指主体对资源的访问⽅法。⽐如,访问策略”允许张三在2011年12⽉ 31⽇之前对资源SampleBucket执⾏CreateObject操作”中的操作是”CreateObject”。
* **资源(Resource) **资源(Resource)是指主体请求访问的对象。⽐如,访问策略”允许张三在2011年12 ⽉31⽇之前对资源SampleBucket执⾏CreateObject操作”中的资源是”SampleBucket”。
* **访问限制(Access Restriction) **访问限制(Access Restriction)是指权限⽣效的限制条件。⽐如,访 问策略”允许张三在2011年12⽉31⽇之前对资源SampleBucket执⾏CreateObject操作”中的限制 条件是”在2011年12⽉31⽇之前”。
* **效⼒(Effect) **授权效⼒包括两个⽅⾯:允许操作(Allow)和拒绝操作(Deny)。通常,Deny有更⾼ 的效⼒,在权限检查时会优先使⽤。 注意:“拒绝操作”和”撤销授权”是完全独⽴的两个概念,撤销授 权通常包括撤销对Allow和Deny这两种不同效⼒的授权,⽐如传统数据库⼀般⽀持Revoke和Revoke Deny两种操作
**授权语句(Statement)结构**
* Effect: 指明该条语句的权限类型,取值必须为Allow或Deny。
* Principal: 如果Policy在授权时是与⽤户或⻆⾊绑定,那么就不允许再指定Principal,⽐如 MaxCompute的Role Policy。 如果Policy在授权时是与项⽬空间或项⽬空间内的对象绑定,那么必 须指Principal,⽐如MaxCompute的Project Policy。
* Action: 它表示授权操作,可以是⼀个或多个操作名,可⽀持通配符号” ” 和 ” ? ” 。 例 如 , A c t i o n = “ ” 表示所有的操作。
* Resource: 它表示授权对象,可以是⼀个或多个对象名,可⽀持通配符号” ” 和 ” ? ” 。 例 如 R e s o u r c e = “ ” 表示所有的对象。
* Condition Block: 条件块是该条授权语句所述权限得以⽣效的条件。条件块结构请参⻅下节的描述。
**十、Policy的实际使用授权案例**
基于以前的经验,我们在odps项目中创建了两个基本的角色,分别是开发角色dev、查询角色adhoc。
```
create role dev;
create role adhoc;
```

我们对于角色的权限要求大概分如下两类:
* A开发权限:不能修改project属性但可以读取project信息,有建表、建资源、建Job等各种常用权限;可以修改、删除自己在开发库中创建的表,但对于其他同学创建的表则只有读取权限。
* B查询权限:只能读取project信息,不能建表、建资源、建Job;只能读取表,但没有任何修改、删除权限。
我们的安全策略大致是这样的:
* 开发库上,给所有开发同学赋予A开发权限。
* 生产库上,给所有开发同学赋予B查询权限。
[原文链接](https://link.zhihu.com/?target=https%3A//yq.aliyun.com/articles/739645%3Futm_content%3Dg_1000094672)
本文为阿里云内容,未经允许不得转载。
分享到:
相关推荐
5. **DataWorks权限管理和MaxCompute的权限管理**:DataWorks与MaxCompute之间的权限同步和管理机制。 #### 二、核心概念解释 - **Project(项目空间)**:MaxCompute提供给用户的最小管理单元,用户可以在其中进行...
在权限管理界面中,需要有清晰的角色和权限树视图,以便于用户和角色的关联操作。 6. **数据持久化**:权限信息需要存储在数据库中,以便于系统重启后仍然有效。使用Entity Framework等ORM工具可以方便地处理数据层...
总的来说,这个示例项目提供了一个基础的权限管理系统框架,可以帮助开发者理解如何在SSH环境下实现用户、角色和权限的管理。通过学习和实践这个示例,可以提升你在实际项目中实现复杂权限控制的能力,为构建安全的...
SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 ...
#### DataWorks与MaxCompute简介 - **DataWorks**:阿里云提供的数据研发平台,支持大数据开发、调度、运维、治理等全链路功能,适用于构建云上的数据仓库。 - **MaxCompute**:阿里云的大规模分布式计算服务,能够...
在“javaweb实现的访问权限控制示例”中,我们主要关注的是如何利用Filter进行权限校验。通常,我们会创建一个自定义的Filter类,继承自`javax.servlet.Filter`接口,并实现其`doFilter()`方法。在这个方法中,我们...
- 需要关注上传数据量与MaxCompute计费模型的关系,避免超出预算。 #### 四、具体案例分析 1. **案例一:处理数据中的特殊字符**: - **问题**: 数据中含有回车或空格如何处理? - **解决方法**: 更改数据的分隔...
DataWorks运维指南还涵盖了产品基本概念与架构介绍、安装和配置、运维和监控、故障排除等方面的知识点。用户可以通过本指南了解DataWorks的基本概念和架构,学习如何正确地安装和配置DataWorks产品,并学习如何运维...
源码包含两个部分:主程序部分和注册机部分 1.功能介绍:打开程序,如果已经注册就正常打开程序 否则就会提示用户输入注册码或者选择试用权限 进入主界面。 。 2.注册机通过主程序的机器码和用户自己起的用户名来...
同时,本文档还对 DataWorks 的使用和配置进行了详细的指导,并提供了相关的示例和案例。 此外,本文档还包括了一些重要的法律声明和通用约定,旨在提醒用户在使用 DataWorks 产品时需要注意的一些重要事项。 本...
laravel-entrust-role-permission-panel, 使用 Laravel 和委托给角色分配权限的简单示例 #Panel: 角色和权限这个 repo 只是一个简单的例子,使用委托和定制面板编辑角色和权限,或者你可以简单地将权限分配给角色,...
标题提到的"MVC自定义权限控制示例代码"是一个很好的起点,它展示了如何通过继承`AuthorizeAttribute`来扩展MVC的安全功能。这个小样例可以帮助开发者更好地理解和实现基于角色或特定条件的访问控制。 首先,`...
一个Delphi权限管理示例程序,使用了数据库保存权限设置信息,比较简单点的权限设置程序,可为开发同类模块的Delphi爱好者提升程序参考。相关说明:由MainMenu1,ToolBar1动态维护权限 但这对四级内菜单有效 ...
一个可扩展的VC 权限管理模块示例演示,附完整源码,测试帐户 :admin admin。数据库为Access,这个权限管理模块可应用到你的软件项目中,可为你的软件添加权限管理的功能。 测试请把manager.mdb数据库复制到Debug...
- 提供了命令示例和参数说明,帮助用户理解和执行相关操作。 4. **Java SDK**: - Java SDK是MaxCompute的开发接口,允许开发者使用Java语言进行数据处理和分析。 - 1.1章节可能涵盖了SDK的安装、配置、基本使用...
wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf...
源码包含两个部分:主程序部分和注册机部分 1.功能介绍:打开程序,如果已经注册就正常打开程序 否则就会提示用户输入注册码或者选择试用权限 进入主界面。 。 2.注册机通过主程序的机器码和用户自己起的用户名来...
它不仅为用户提供了关于DataWorks产品使用的法律声明和通用约定,还细致地介绍了产品的核心概念、功能和应用场景,以及如何进行有效的规划与准备。通过这份用户指南的学习,用户不仅能够更加明确自身的权益和责任,...
SQL Server 提供了强大的角色和权限管理系统,示例数据库可以帮助你理解如何设置用户权限、创建登录账户、分配角色以及使用动态管理视图检查当前权限状态。 7. **性能优化**: 通过对示例数据库进行性能测试,...
仓储系统功能模块权限列表示例。