项目空间的安全配置
|
语句
|
说明
|
|---|---|
| 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; --对角色授权