为确保MaxCompute项目数据的安全性,项目所有者或者具备授权权限的用户需要对项目内成员的权限进行合理管控,确保权限不会过大也不会过小。本文为您介绍MaxCompute的权限管理体系。

权限体系

类别 说明
权限主体 MaxCompute支持的权限主体如下:
  • 用户:包含阿里云账号、RAM用户、RAM角色。支持添加、删除、查询用户等管理操作。详细用户管理信息,请参见用户规划与管理
  • 角色:MaxCompute有自己内置的管理角色,也支持自定义角色。支持添加、删除、查询自定义角色等管理操作。详细角色管理信息,请参见角色规划与管理
权限对象 MaxCompute细化了项目、表、资源、函数、实例对象的操作,您可以基于MaxCompute提供的授权方案精细化管理用户的操作权限。各对象的权限信息,请参见权限列表
权限控制 MaxCompute提供了如下授权方案,灵活满足授权要求:
  • ACL权限控制:为用户或角色授予项目、表、资源、函数或实例的操作权限。
  • Policy权限控制:为角色授予项目、表、资源、函数或实例的操作权限,将角色赋予用户后,即可完成用户授权。
  • Download权限控制:为用户或角色授予下载表、函数、资源的权限。
  • Label权限控制:提供敏感数据访问权限控制能力。用户或角色仅能访问在自身访问许可等级范围内的数据,如果需要访问高敏感数据,需要进行Label授权。
  • 基于Package跨项目访问资源:当涉及跨项目访问资源场景时,可以通过创建Package包的方式将其他项目需要访问的资源进行打包,并许可其他项目安装。
角色授权 当需要为多个用户授予相同操作权限时,可基于角色实现,简化授权操作。更多角色授权操作信息,请参见角色授权
用户授权 您可以通过如下方式为用户授权:
  • 直接为用户授权:适用于为零散用户进行单点授权。
  • 基于角色为用户授权:适用于为多个用户授予相同的操作权限。

更多用户授权操作信息,请参见用户授权

获取权限信息 查看项目人员权限信息,了解权限是否生效。更多查看权限操作信息,请参见查询权限信息

DataWorks也有自身的权限体系,如果您通过DataWorks维护MaxCompute项目,可以通过DataWorks提供的用户、角色管理能力,合理分配角色达到管理权限的目的。更多DataWorks与MaxCompute的权限关系,请参见MaxCompute和DataWorks的权限关系

授权链路

MaxCompute的常见授权链路如下。

  • 链路一:直接为用户授予对象的操作权限

    项目所有者(Project Owner)或具备内置管理角色的用户将目标用户添加至MaxCompute项目中后,由具备授权权限的用户通过ACL权限控制方案为目标用户授予对象的操作权限。

    为用户授权
  • 链路二:基于角色为多个用户授予对象的操作权限

    项目所有者(Project Owner)或具备内置管理角色的用户将目标用户和角色添加至MaxCompute项目中后,由具备授权权限的用户通过ACL、Policy或Download权限控制方案为目标角色授予对象的操作权限,然后再将角色赋予目标用户。

    通过角色为用户授权
  • 链路三:直接为用户授予访问高敏感等级数据的权限

    项目所有者(Project Owner)或具备内置管理角色的用户将目标用户添加至MaxCompute项目中后,项目所有者(Project Owner)或具备Admin角色的用户可以为目标用户添加许可访问等级,另外,当用户需要访问某些高敏感等级数据时,还可以通过Label权限控制方案为目标用户授予访问高敏感级数据的权限。

    授予访问高敏感级数据的权限
  • 链路四:基于角色为多个用户授予访问高敏感等级数据的权限

    项目所有者(Project Owner)或具备内置管理角色的用户将目标用户添加至MaxCompute项目中后,项目所有者(Project Owner)或具备Admin角色的用户可以为目标用户添加许可访问等级。当需要支持多个用户访问相同的高敏感等级数据时,可以创建目标角色,并由项目所有者(Project Owner)或具备Admin角色的用户通过Label权限控制方案为角色授予访问高敏感级数据的权限,然后再将角色赋予用户。

    通过角色为用户授权
  • 链路五:跨项目访问资源,并直接为目标项目中的用户授予访问Package内资源的权限

    由资源所属项目的项目所有者(Project Owner)创建Package包并添加资源后,许可目标项目安装Package。目标项目的项目所有者(Project Owner)安装Package并通过ACL权限控制或Label权限控制方案为用户授权。

    为用户授权
  • 链路六:跨项目访问资源,并基于角色为用户授予访问Package内资源的权限

    由资源所属项目的项目所有者(Project Owner)创建Package包并添加资源后,许可目标项目安装Package。目标项目的项目所有者(Project Owner)安装Package并通过ACL权限控制或Label权限控制方案为角色授权,然后将角色赋予用户。

    通过角色为用户授权

MaxCompute和DataWorks的权限关系

在了解二者间的权限关系前,您需要先理清楚MaxCompute项目和DataWorks工作空间的关系:
  • 创建MaxCompute项目时,如果DataWorks的工作空间模式选择为简单模式时,实际会绑定一个MaxCompute项目。
  • 创建MaxCompute项目时,如果DataWorks的工作空间模式为标准模式时,实际会绑定一个MaxCompute开发(_dev)项目和一个MaxCompute生产项目(Prod)。
同时,您还需要设置MaxCompute访问者身份,决定了MaxCompute项目在账号级别的权限策略。

通过MaxCompute的权限管理体系进行权限控制,并不会影响用户在DataWorks界面上的操作。DataWorks提供了可视化的方式管理MaxCompute项目权限,但是通过DataWorks为用户分配角色,有可能影响用户操作MaxCompute资源的权限。

DataWorks和MaxCompute都存在用户和角色的概念,二者的权限关系如下:
  • 角色及角色权限
    DataWorks为了提供项目成员在数据开发过程中需要的MaxCompute相关资源权限,预设了一些MaxCompute角色。MaxCompute角色与DataWorks预设角色的权限关系如下。
    DataWorks成员角色 MaxCompute角色 DataWorks开发环境/MaxCompute DEV引擎项目数据权限 DataWorks生产环境/MaxCompute PROD引擎项目数据权限 DataWorks平台权限特征
    项目管理员 Role_Project_Admin
    • 引擎层面:当前项目下project/table/fuction/resource/instance/job/package的所有权限。
    • DW层面:可进行数据开发,并且发布任务至生产环境。
    默认无权限、需要在安全中心安全中心走审批流程申请。 指项目空间的管理者。可以对该项目空间的基本属性、数据源、当前项目空间计算引擎配置和项目成员等进行管理,并为项目成员赋予项目管理员、开发、运维、部署、访客角色。
    开发 Role_Project_Dev
    • 引擎层面:当前项目下project/fuction/resource/instance/job/package/table的所有权限。
    • DW层面:可进行数据开发,但无法发布任务至生产环境。
    开发角色的用户能够创建工作流、脚本文件、资源和UDF以及新建和删除表,同时可以创建发布包,但不能执行发布操作。
    运维 Role_Project_Pe 当前项目空间下project/fuction/resource/instance/job的所有权限,拥有package的Read权限和table的Read/Describe权限。
    说明 引擎层面有权限,但在DataWorks上,运维角色不能直接在界面运行节点进行任务执行操作。
    运维角色的用户由项目管理员分配运维权限,拥有发布及线上运维的操作权限,没有数据开发的操作权限。
    部署 Role_Project_Deploy 默认无权限。 部署角色与运维角色相似,但是它没有线上运维的操作权限。
    数据分析师 Role_Project_Data_Analyst 默认无权限。 数据分析师角色的用户默认只有数据分析模块的操作权限。
    访客 Role_Project_Guest 默认无权限。 访客角色的用户只具备查看权限,没有权限进行编辑工作流和代码等操作。
    安全管理员 Role_Project_Security 默认无权限。 安全管理员仅在数据保护伞模块中使用,用于敏感规则配置、数据风险审计等。
    模型设计师 Role_Project_Erd 默认无权限。 可以查看模型,进行数仓规划、数据标准、维度建模和数据指标等内容的编辑,但是不能发布模型。
    Project Owner MaxCompute项目空间的所有者,拥有该项目空间的所有权限。 有权限。
    Super_Administrator MaxCompute项目空间的超级管理员,拥有项目空间的管理类权限以及项目空间内所有类型资源的全部权限。 有权限。
    Admin 每一个项目在创建时,会自动创建一个Admin角色,并且为该角色授予确定的权限。即可以访问项目空间内的所有对象、对用户或角色进行管理、授权。与项目空间的所有者相比,Admin角色不能将Admin权限指派给用户,不能设定项目空间的安全配置,不能修改项目空间的鉴权模型,Admin角色所对应的权限不能被修改。项目空间的所有者可以将Admin角色赋权给一个用户,让该用户代理安全管理。 有权限。
  • 用户及用户权限
    • 在DataWorks工作空间中,阿里云账号只能为项目所有者(Project Owner),项目成员只能为项目所属阿里云账号下的RAM用户。您可以通过DataWorks的工作空间管理能力添加用户并分配角色。
    • 在MaxCompute项目中,阿里云账号既可以为项目所有者(Project Owner)也可以为项目成员,项目成员还可以为阿里云账号下的RAM用户。您可以通过add user xxx;命令添加用户,并通过add role xxx;grant role xxx to user xxx;命令添加角色并绑定至用户。

    在不同工作空间模式及支持的访问者身份下,用户与权限的关系示意图如下。

    用户与权限关系
    说明 DataWorks角色对应的MaxCompute权限是固定的。一旦某个用户通过DataWorks角色获取MaxCompute相关角色权限后,又通过命令行方式获得了其他的MaxCompute权限,会使该用户在MaxCompute上的权限与在DataWorks上查询到的不一致。