开发者社区> 问答> 正文

MaxCompute用户指南:安全指南:用户及授权管理:授权



授权操作一般涉及到三个要素:主体(Subject,可以是用户也可以是角色),客体(Object)和操作(Action)。在MaxCompute 中,主体是指用户或角色,客体是指项目空间中的各种类型对象,操作则与特定对象类型有关,不同类型的对象支持的操作也不尽相同 。
MaxCompute 项目空间支持如下的对象类型及操作:

客体(Object)操作(Action)说明
ProjectRead查看项目空间自身(不包括项目空间的任何对象)的信息,如CreateTime 等
ProjectWrite更新项目空间自身(不包括项目空间的任何对象)的信息,如 Comments
ProjectList查看项目空间所有类型的对象列表
ProjectCreateTable在项目空间中创建 Table
ProjectCreateInstance在项目空间中创建 Instance
ProjectCreateFunction在项目空间中创建 Function
ProjectCreateResource在项目空间中创建 Resource
ProjectCreateJob在项目空间中创建 Job
ProjectCreateVolume在项目空间中创建 Volume
ProjectCreateOfflineModel在项目空间中创建 OfflineModel
ProjectCreateXflow在项目空间中创建 Xflow
ProjectAll具备上述所有权限
TableDescribe读取 Table 的元信息
TableSelect读取 Table 的数据
TableAlter修改 Table 的元信息,添加删除分区
TableUpdate覆盖或添加 Table 的数据
TableDrop删除 Table
TableAll具备上述所有权限
FunctionRead读取,及执行权限
FunctionWrite更新
FunctionDelete删除
FunctionAll具备上述所有权限
Resource,Instance, Job, VolumeRead读取
Resource,Instance, Job, VolumeWrite更新
Resource,Instance, Job, VolumeDelete删除
Resource,Instance, Job, VolumeAll具备上述所有权限
OfflineModelRead读取
OfflineModelWrite更新
OfflineModelDelete删除
OfflineModelAll具备上述所有权限
XflowRead读取
XflowWrite更新
XflowExecute执行
XflowDelete删除
XflowAll具备上述所有权限

备注:

  • 上述权限描述中 Project 类型对象的 CreateTable 操作,Table类型的Select、Alter、Update、Drop 操作需要与 Project 对象的 CreateInstance 操作权限配合使用。单独使用上述几种权限而没有指派 CreateInstance 权限是无法完成对应操作的。这与 MaxCompute的内部实现相关。同样,Table 的 Select 权限也要与 CreateInstance 权限配合使用 。

  • 使用时请注意:在添加用户或创建角色之后,需要对用户或角色进行授权 。MaxCompute 授权是一种基于对象的授权。通过授权的权限数据(即访问控制列表, Access Control List)被看做是该对象的一种子资源。只有当对象已经存在时,才能进行授权操作;当对象被删除时,通过授权的权限数据会被自动删除。MaxCompute 授权支持类似于 SQL92定义的 GRANT/REVOKE 语法,它通过简单的授权语句来完成对已存在的项目空间对象的授权或撤销授权 。

MaxCompute 支持的授权方法是采用类似 SQL92 定义的 GRANT/REVOKE 语法来进行授权 。授权语法如下:
  1.     grant actions on object to subject
  2.     revoke actions on object from subject
  3.     actions ::= action_item1, action_item2, ...
  4.     object ::= project project_name | table schema_name |
  5.                instance inst_name | function func_name |
  6.                 resource res_name
  7.     subject ::= user full_username | role role_name

熟悉 SQL92 定义的 GRANT/REVOKE 语法或者熟悉 Oracle 数据库安全管理的用户容易发现,MaxCompute 的ACL 授权语法并不支持 [WITH GRANT OPTION] 授权参数 。也就是说,当用户 A 授权用户 B 访问某个对象时,用户 B无法将权限进一步授权给用户 C 。那么,所有的授权操作都必须由具有以下三种身份之一的用户来完成:
  • 项目空间 Owner
  • 项目空间中拥有 admin 角色的用户
  • 项目空间中对象创建者

下面给出一个简单的使用 ACL 授权的应用实例:
场景说明:云账号用户 alice@aliyun.com 和 bob@aliyun.com 是新加入到项目空间 test_project 的成员 。在 test_project 中,他们需要提交作业、创建数据表、查看项目空间已存在的对象 。
管理员执行的授权操作如下:
  1.     use test_project; --打开项目空间
  2.     add user aliyun$alice@aliyun.com; --添加用户
  3.     add user aliyun$bob@aliyun.com; --添加用户
  4.     create role worker; --创建角色
  5.     grant worker TO aliyun$alice@aliyun.com; --角色指派
  6.     grant worker TO aliyun$bob@aliyun.com; --角色指派
  7.     grant CreateInstance, CreateResource, CreateFunction, CreateTable, List ON PROJECT test_project TO ROLE worker; --对角色授权

备注:大数据开发套件中同样需要添加成员并为其授权,具体操作请参见: 如何添加成员及授权

展开
收起
行者武松 2017-10-24 10:46:50 2556 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Data+AI时代大数据平台应该如何建设 立即下载
大数据AI一体化的解读 立即下载
极氪大数据 Serverless 应用实践 立即下载