MaxCompute支持用户在MaxCompute控制台通过角色为RAM账号(RAM用户、RAM角色)授予相应的MaxCompute权限。本文为您介绍各类权限的授权操作步骤与示例。
项目级管理类权限授权
MaxCompute项目级管理类权限主要包括进行项目安全配置、项目级用户与角色权限管理、Package管理、Label权限管控、清理过期权限等,更多信息请参见项目管理类权限一览表。
操作步骤
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏选择工作区 > 项目管理。
在项目管理页面,单击目标项目操作列的管理。
在角色权限页签,您可以创建管理类(Admin)角色或修改已有的管理类(Admin)角色权限。
说明默认只有阿里云账号(主账号)有权限对项目进行角色管理,如果您需要以RAM账号(RAM用户/RAM角色)进行,需要拥有对应项目的管理权限角色。
创建管理类(Admin)角色
在项目配置页面,单击角色权限。
在角色权限页签,单击新增项目级别角色。
在新建角色对话框,创建管理类(Admin)角色,填写Policy授权策略。
单击确定,完成新建角色与授权。
修改已有的管理类(Admin)角色权限
在项目配置页面,单击角色权限。
在角色权限页签,单击目标角色操作列的编辑角色,进行Policy授权策略修改。
单击确定,完成已有角色权限策略修改。
相关Action及Resource取值请参见项目管理类权限一览表。本文档依据管理模块提供部分Policy授权示例。
单击目标角色操作列的成员管理,在成员管理对话框可以查看角色成员、将角色赋予用户或将用户从角色里移除(即收回赋予用户的角色)。
Policy示例
同一模块的管理类权限一般会涉及多类操作及多类资源权限,因此示例中大多使用通配符
*
表达,实现一次操作对一组对象进行授权。相关Action及Resource取值请参见项目管理类权限一览表。
需要将示例中的
project_name
替换为待授权的MaxCompute项目名称。
支持角色管理类权限的Policy示例。
{ "Statement": [ { "Action": [ "odps:*" ], "Effect": "Allow", "Resource": [ "acs:odps:*:projects/project_name/authorization/roles", "acs:odps:*:projects/project_name/authorization/roles/*/*" ] } ], "Version": "1" }
支持Package管理类权限的Policy示例。
{ "Statement": [ { "Action": [ "odps:*" ], "Effect": "Allow", "Resource": [ "acs:odps:*:projects/project_name/authorization/packages", "acs:odps:*:projects/project_name/authorization/packages/*", "acs:odps:*:projects/project_name/authorization/packages/*/*/*" ] } ], "Version": "1" }
说明在控制台进行Package管理依赖Project的
list
权限,因此需要先授予执行人当前Project的list
权限,通过控制台的授权请参见项目级对象操作权限授权;通过命令行授权请参见通过命令管理用户权限。支持修改项目安全配置的管理权限Policy示例。
{ "Statement":[ { "Action":[ "odps:*" ], "Effect":"Allow", "Resource":[ "acs:odps:*:projects/project_name/authorization/configurations/*" ] } ], "Version":"1" }
支持项目用户管理的Policy示例。
{ "Statement":[ { "Action":[ "odps:*" ], "Effect":"Allow", "Resource":[ "acs:odps:*:projects/project_name/authorization/users" ] } ], "Version":"1" }
支持所有管理类权限的Policy示例。
{ "Statement":[ { "Action":[ "odps:*" ], "Effect":"Allow", "Resource":[ "acs:odps:*:projects/project_name/authorization/*" ] } ], "Version":"1" }
项目级对象操作权限授权
项目级对象操作权限主要包括对项目(Project)、表(Table)、函数(Function)、资源(Resource)等项目及项目内对象的操作权限,如CreateTable、CreateInstacne、SelectTable等。更多信息请参见项目及项目内对象权限一览表。
操作步骤
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏选择工作区 > 项目管理。
在项目管理页面,单击目标项目操作列的管理。
在角色权限页签,您可以创建资源操作类(Resource)角色或修改已有的资源操作类(Resource)角色权限。
说明默认只有阿里云账号有权限对项目进行角色管理,如果您需要以RAM账号(RAM用户/RAM角色)操作,需要拥有对应项目的管理权限角色。
创建资源操作类(Resource)角色
在项目配置页面,单击角色权限。
在角色权限页签,单击新增项目级别角色。
在新建角色对话框,创建资源操作类(Resource)角色,进行ACL授权或Policy授权策略填写。
单击确定,完成新建角色与授权。
修改已有的资源操作类(Resource)角色权限
在项目配置页面,单击角色权限。
在角色权限页签,单击目标角色操作列的编辑角色,进行ACL授权或Policy授权策略修改。
单击确定,完成已有角色权限策略修改。
相关权限请参见项目及项目内对象权限一览表。本文档提供控制台ACL及Policy授权示例,详情请参见项目级管理类权限授权。
单击目标角色操作列的成员管理,在成员管理对话框可以查看角色成员、将角色赋予用户或将用户从角色里移除(即收回赋予用户的角色)。
授权示例
项目级对象操作权限的Action及Object请参见项目及项目内对象权限一览表。
需要将示例中的
project_name
替换为待授权的MaxCompute项目名称。
示例一:通过ACL方式为资源操作类(Resource)角色授予在项目(Project)中创建表(CreateTable)、创建实例(CreateInstance)、查看项目所有类型的对象列表(List)、读取所有表(Table)的元信息(Describe)和表数据(Select)的权限。
授予在项目中创建表、创建实例以及查看所有对象列表权限。
授予读取所有表的元信息(Describe)和表数据(Select)的权限。
说明提交的时候请不要关闭进度条或页面,否则授权将会中断。
示例二:通过Policy方式为资源操作类(Resource)角色授予在项目(Project)中创建表(CreateTable)、创建实例(CreateInstance)、查看项目所有类型的对象列表(List)、读取所有表(Table)的元信息(Describe)和表数据(Select)的权限。
{ "Statement": [{ "Action": ["odps:CreateTable","odps:CreateInstance","odps:List"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name"]}, { "Action": ["odps:Describe","odps:Select"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/tables/*"]}], "Version": "1"}
示例三:通过Policy方式为资源操作类(Resource)角色授予在项目内所有tmp开头的表(Table)的元信息(Describe)和表查询(Select),读取、更新所有资源,读取、更新所有函数的权限,并禁止删除所有表。
{ "Statement": [{ "Action": ["odps:Describe","odps:Select"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/tables/tmp_*"]}, { "Action": ["odps:Read","odps:Write"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/resources/*"]}, { "Action": ["odps:Read","odps:Write"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/functions/*"]}, { "Action": ["odps:Drop"], "Effect": "Deny", "Resource": ["acs:odps:*:projects/project_name/tables/*"]}], "Version": "1"}
如果项目开启了按Schema存储(Schema操作),则需将策略修改为:
{ "Statement": [{ "Action": ["odps:Describe","odps:Select"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/schemas/*/tables/tmp_*"]}, { "Action": ["odps:Read","odps:Write"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/schemas/*/resources/*"]}, { "Action": ["odps:Read","odps:Write"], "Effect": "Allow", "Resource": ["acs:odps:*:projects/project_name/schemas/*/functions/*"]}, { "Action": ["odps:Drop"], "Effect": "Deny", "Resource": ["acs:odps:*:projects/project_name/schemas/*/tables/*"]}], "Version": "1"}
租户级别管理类权限授权
租户级别管理类权限指租户级别用户与角色权限管理,包括添加/删除租户用户、创建/删除租户级别角色、查看租户级别用户/角色列表及权限内容、将租户级别角色授予用户、取消用户被授予的租户级别角色、将租户级别角色添加至项目、移出项目内的租户级别角色等。
仅阿里云账号或者具备租户级别Super_Administrator和Admin角色的用户可操作租户级别权限管理。
若希望授予RAM账号(RAM用户/RAM角色)管理类权限,仅支持通过阿里云账号赋予RAM账号Super_Administrator和Admin角色以实现权限授予。但租户级别Super_Administrator和Admin角色管理权限较大(具体权限请参见角色规划),请谨慎操作。租户级别角色信息请参见租户级别角色授权。
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏选择租户管理 > 用户管理。
在用户管理页面,单击待授权用户操作列的修改角色,在编辑角色对话框选择相应角色授予。
租户级别对象操作权限授权
租户级别对象操作权限包括对租户级对象Quota和网络连接(Networklink)的操作。例如use quota
、CreateNetworkLink
等。租户级别对象操作还包括实现一账号管理多个Project对象,提升权限管理的便捷性。更多租户级别角色信息请参见租户级别角色授权。
操作步骤
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏选择租户管理 > 角色管理。
在角色管理页面,创建新的租户级角色或管理已有自定义角色的权限。
说明仅阿里云账号或者具备租户级别Super_Administrator和Admin角色的用户可操作租户级别权限管理。
新增租户级角色
在角色管理页面,单击新增角色。
在新增角色对话框,配置如下信息。
参数名称
说明
角色名称
新建账户级别角色的名称。在阿里云账号内唯一。命名需要满足如下要求:以字母开头。只能包含字母、下划线(_)或数字。长度为6~64个字符。
policy内容
角色的权限策略。您可以直接在界面上根据策略模板编辑策略代码。
单击确定,完成新建租户级角色与授权。
修改已有的已有租户级角色权限
在角色管理页面,单击目标角色操作列的权限管理,修改Policy授权策略。
单击确定,完成已有角色的权限策略修改。
在用户管理页面,单击待授权用户操作列的修改角色,在编辑角色对话框选择相应角色授予。
Policy示例
示例中使用通配符
*
表达,实现一次操作对一组对象进行授权。具体的Action及Resource请参见租户内对象权限一览表。
示例一:为租户级角色授予所有Region下所有Quota的Usage操作及所有Networklinks的
CreateNetworkLink
、List
和Execute
操作权限。{ "Statement":[ { "Action":[ "odps:Usage" ], "Effect":"Allow", "Resource":[ "acs:odps:*:regions/*/quotas/*" ] }, { "Action":[ "odps:CreateNetworkLink", "odps:List", "odps:Execute" ], "Effect":"Allow", "Resource":[ "acs:odps:*:networklinks/*" ] } ], "Version":"1" }
示例二:为租户级角色授予MaxCompute项目
project_1
和project_2
的所有操作权限。{ "Statement":[ { "Action":[ "odps:*" ], "Effect":"Allow", "Resource":[ "acs:odps:*:projects/project_1", "acs:odps:*:projects/project_1/*", "acs:odps:*:projects/project_2", "acs:odps:*:projects/project_2/*" ] } ], "Version":"1" }
说明通过租户级别角色对Project对象授权后,需要将对应的租户级角色添加到Project中才会生效,因此需要Project的Owner或拥有Project Super_Administrator或Admin角色添加租户角色,在角色权限页签,角色级别选择租户,单击目标角色操作列的启用。