MaxCompute细化了项目(Project)、表(Table)、函数(Function)、资源(Resource)及实例(Instance)对象的操作,同时还支持对Tunnel下载、敏感数据访问及跨项目访问行为进行管控。在项目实际运行过程中,可以根据人员操作范畴进行精细化授权,为项目及数据安全提供可靠保障。本文为您介绍MaxCompute支持的权限信息。

背景信息

执行权限授权操作时,需要包含如下三个要素。

权限要素 说明
主体(Subject) 被授予权限的用户或角色,即被授权人。
需要注意的是:
  • 被授权人必须已添加至MaxCompute项目中。
  • 使用阿里云账号执行授权操作时,支持为当前账号下的RAM用户和其他阿里云账号授权。
  • 使用RAM用户账号执行授权操作时,仅支持为隶属同一个阿里云账号的其他RAM用户授权,不支持为其他账号授权。
说明 授权人为执行授权操作的用户。授权人需要具备为目标客体和目标操作授权的能力,才可以执行授权操作。
客体(Object) MaxCompute项目中的对象或行为。
操作(Action) 操作与客体类型有关,不同客体类型所支持的操作不相同。例如表的读、写、查操作。

权限一览表

MaxCompute支持的权限列表如下:
  • 对象

    MaxCompute各对象的权限关系表如下。

    客体(Object) 操作(Action) 说明 支持的授权人 支持的授权方案
    Project Read 查看项目自身(不包括项目中的任何对象)的信息。 项目所有者(Project Owner) 暂未开放授权能力
    Write 更新项目自身(不包括项目中的任何对象)的信息。
    List 查看项目所有类型的对象列表。例如show tables;show functions;等。
    • 项目所有者(Project Owner)
    • 具备Super_Administrator或Admin角色的用户
    CreateTable 在项目中创建表(Table)。例如create table <table_name>...;
    CreateInstance 在项目中创建实例(Instance),即运行作业。
    CreateFunction 在项目中创建自定义函数(Function)。例如create function <function_name> ...;
    CreateResource 在项目中添加资源(Resource)。例如add file|archive|py|jar <local_file>... ;add table <table_name> ...;
    All 具备上述Project的所有权限。
    Table Describe 读取表的元数据信息,包含表结构、创建时间、修改时间、表数据大小等。例如desc <table_name>;
    • 表所有者
    • 项目所有者(Project Owner)
    • 具备Super_Administrator角色的用户
    • 具备Admin角色的用户(不支持修改表所有人)
    Select 查看表的数据。例如select * from <table_name>;
    Alter 修改表的元数据信息,包含修改表所有人、修改表名称、修改列名、添加或删除分区等。例如alter table <table_name> add if not exists partition ...;
    Update 更新表数据。例如insert into|overwrite table <table_name> ...;update <table_name> set ...;delete from <table_name> where ...;
    Drop 删除表。例如drop table <table_name>;
    ShowHistory 查看表的备份数据信息。例如show history for table <table_name>;
    All 具备上述Table的所有权限。
    Function Read 读取自定义函数(MaxCompute UDF)的程序文件。
    • 函数所有者
    • 项目所有者(Project Owner)
    • 具备Super_Administrator或Admin角色的用户
    Write 更新自定义函数。
    Delete 删除自定义函数。例如drop function <function_name>;
    Execute 调用自定义函数。例如select <function_name> from ...;
    All 具备上述Function的所有权限。
    Resource Read 读取资源。
    • 资源所有者
    • 项目所有者(Project Owner)
    • 具备Super_Administrator或Admin角色的用户
    Write 更新资源。
    Delete 删除资源。例如drop resource <resource_name>;
    All 具备上述Resource的所有权限。
    Instance Read 读取实例。
    • 项目所有者(Project Owner)
    • 具备Super_Administrator或Admin角色的用户
    Write 更新实例。
    All 具备上述Instance的所有权限。
    说明 Project的CreateTable操作,Table的Select、Alter、Update和Drop操作需要与Project的CreateInstance操作权限配合使用。

    如果您单独使用Table的上述几种权限,且没有CreateInstance权限,则无法完成对应操作。例如,当您通过项目A查询项目B的表时,需要具备项目A的CreateInstance权限和项目B的表Select权限。

  • 行为

    MaxCompute各行为的权限关系表如下。

    客体(Object) 操作(Action) 说明 支持的授权人 支持的授权方案
    Table、Function、Resource、Instance Download 使用Tunnel下载表数据、资源、函数或实例。
    • 项目所有者(Project Owner)
    • 具备Super_Administrator角色的用户
    Download权限控制
    Label 不涉及 读取列级敏感数据。
    • 项目所有者(Project Owner)
    • 具备Admin角色的用户
    Label权限控制
    Package Read 将项目中的对象及允许的操作权限进行打包,生成Package,实现跨项目授权。
    • 项目所有者(Project Owner)
    • 具备Admin角色的用户
    基于Package跨项目访问资源