项目空间的安全配置
语句
|
说明
|
---|---|
show SecurityConfiguration | 查看项目空间的安全配置 |
set CheckPermissionUsingACL=true/false | 激活/冻结ACL授权机制 |
set CheckPermissionUsingPolicy=true/false | 激活/冻结Policy授权机制 |
set ObjectCreatorHasAccessPermission=true/false | 允许/禁止对象创建者默认拥有访问权限 |
set ObjectCreatorHasGrantPermission=true/false | 允许/禁止对象创建者默认拥有授权权限 |
数据保护
语句
|
说明
|
---|---|
set ProjectProtection=false | 关闭数据保护机制 |
set ProjectProtection=true [with exception <policy> ] |
开启数据保护机制 |
list TrustedProjects | 查看可信项目空间列表 |
add TrustedProject <projectName> |
添加可信项目空间 |
remove TrustedProject <projectName> |
移除可信项目空间 |
项目空间的权限管理
用户管理
语句
|
说明
|
---|---|
list users | 查看所有已添加进来的用户 |
add user <username> |
添加一个用户 |
remove user <username> |
移除一个用户 |
角色管理
语句
|
说明
|
---|---|
list roles | 查看所有已创建的角色 |
create role <rolename> |
创建一个角色 |
drop role <rolename> |
删除建一个角色 |
grant <rolelist> to <username> |
对用户指派一个或多个角色 |
revoke <rolelist> from <username> |
撤销对用户的角色指派 |
ACL授权
语句
|
说明
|
---|---|
grant <privList> on <objType> <objName> to user <username> |
对用户授权 |
grant <privList> on <objType> <objName> to role <rolename> |
对角色授权 |
revoke <privList> on <objType> <objName> from user <username> |
撤销对用户的授权 |
revoke <privList> on <objType> <objName> from role <rolename> |
撤销对角色的授权 |
权限审查
语句
|
说明
|
---|---|
whoami | 查看当前用户信息 |
show grants [for <username> ] [on type <objectType> ] |
查看用户权限和角色 |
show acl for <objectName> [on type <objectType> ] |
查看具体对象的授权信息 |
describe role <roleName> |
查看角色的授权信息和角色指派 |
详细授权
MaxCompute 项目空间支持如下的对象类型及操作:
客体(Object)
|
操作(Action)
|
说明
|
---|---|---|
Project | Read | 查看项目空间自身(不包括项目空间的任何对象)的信息,如CreateTime等 |
Project | Write | 更新项目空间自身(不包括项目空间的任何对象)的信息,如Comments |
Project | List | 查看项目空间所有类型的对象列表 |
Project | CreateTable | 在项目空间中创建Table |
Project | CreateInstance | 在项目空间中创建Instance |
Project | CreateFunction | 在项目空间中创建Function |
Project | CreateResource | 在项目空间中创建Resource |
Project | CreateJob | 在项目空间中创建Job |
Project | CreateVolume | 在项目空间中创建Volume |
Project | CreateOfflineModel | 在项目空间中创建OfflineModel |
Project | CreateXflow | 在项目空间中创建Xflow |
Project | All | 具备上述所有权限 |
Table | Describe | 读取Table的元信息 |
Table | Select | 读取Table的数据 |
Table | Alter | 修改Table的元信息,添加删除分区 |
Table | Update | 覆盖或添加Table的数据 |
Table | Drop | 删除Table |
Table | All | 具备上述所有权限 |
Function | Read | 读取,及执行权限 |
Function | Write | 更新 |
Function | Delete | 删除 |
Function | All | 具备上述所有权限 |
Resource,Instance, Job, Volume | Read | 读取 |
Resource,Instance, Job, Volume | Write | 更新 |
Resource,Instance, Job, Volume | Delete | 删除 |
Resource,Instance, Job, Volume | All | 具备上述所有权限 |
OfflineModel | Read | 读取 |
OfflineModel | Write | 更新 |
OfflineModel | Delete | 删除 |
OfflineModel | All | 具备上述所有权限 |
Xflow | Read | 读取 |
Xflow | Write | 更新 |
Xflow | Execute | 执行 |
Xflow | Delete | 删除 |
Xflow | All | 具备上述所有权限 |
注意点:
- 上述权限描述中Project类型对象的CreateTable操作,Table类型的Select、Alter、Update、Drop操作需要与Project对象的CreateInstance操作权限配合使用。单独使用上述几种权限而没有指派CreateInstance权限是无法完成对应操作的。这与ODPS的内部实现相关。类似的,Table的Select权限也要与CreateInstance权限配合使用。使用时请注意。
所有的授权操作都必须由具有以下三种身份之一的用户来完成:
- 项目空间Owner
- 项目空间中拥有admin角色的用户
- 项目空间中对象创建者
样例
use test_project; --打开项目空间
add user aliyun$alice@aliyun.com; --添加用户
add user aliyun$bob@aliyun.com; --添加用户
create role worker; --创建角色
grant worker TO aliyun$alice@aliyun.com; --角色指派
grant worker TO aliyun$bob@aliyun.com; --角色指派
grant CreateInstance, CreateResource, CreateFunction, CreateTable, List ON PROJECT test_project TO ROLE worker; --对角色授权