为确保MaxCompute项目数据的安全性,项目所有者或者具备授权权限的用户需要对项目内成员的权限进行合理管控,确保权限不会过大也不会过小。本文为您介绍MaxCompute的权限管理体系。
权限体系
类别 | 说明 |
权限主体 | MaxCompute支持的权限主体如下: |
权限对象 | MaxCompute细化了项目、表、资源、函数、实例对象的操作,您可以基于MaxCompute提供的授权方案精细化管理用户的操作权限。各对象的权限信息,请参见MaxCompute权限。 |
权限控制 | MaxCompute提供了如下授权方案,灵活满足授权要求:
|
角色授权 | 当需要为多个用户授予相同操作权限时,可基于角色实现,简化授权操作。更多角色授权操作信息,请参见项目级别角色授权。 |
用户授权 | 您可以通过如下方式为用户授权:
更多用户授权操作信息,请参见通过命令管理用户权限。 |
获取权限信息 | 查看项目人员权限信息,了解权限是否生效。更多查看权限操作信息,请参见查询权限信息。 |
DataWorks也有自身的权限体系,如果您通过DataWorks维护MaxCompute项目,可以通过DataWorks提供的用户、角色管理能力,合理分配角色达到管理权限的目的。更多DataWorks与MaxCompute的权限关系,请参见MaxCompute和DataWorks的权限关系。
鉴权流程
MaxCompute用户对MaxCompute各类对象进行操作时,需要进行相关权限的鉴权。资源Owner(阿里云主账号)拥有最高权限,能够进行所有操作,并可以授予RAM账号(RAM用户/RAM角色)管理类权限。阿里云主账号及具有管理类权限的用户可以为其他用户授予权限,这将决定谁获得权限,获得对哪些对象的权限,以及允许对这些对象执行的具体操作。
根据操作对象和具体操作的不同,MaxCompute鉴权流程分为RAM鉴权和MaxCompute服务鉴权,一个用户执行不同操作所需要经过的鉴权流程如下图所示。
RAM鉴权
当用户需要在MaxCompute管理控制台进行服务的开通、资源的购买、Quota管理、项目管理、租户管理等操作时,阿里云会对用户进行RAM鉴权,验证用户是否具备相关权限,否则不能进行操作。
MaxCompute服务鉴权
MaxCompute项目级操作鉴权。
MaxCompute项目级操作权限包括项目级对象操作与项目级管理类操作。
项目级对象操作权限:主要包括对项目(Project)、表(Table)、函数(Function)、资源(Resource)等项目及项目内对象的操作权限,如CreateTable、CreateInstance、SelectTable等,详情请参见项目及项目内对象权限一览表。
项目级管理类权限:主要包括进行项目安全配置、项目级用户与角色权限管理、Package管理、Label权限管控、清理过期权限等,详情请参见项目管理类权限一览表。
MaxCompute项目级操作鉴权流程如下:
用户认证。更多关于用户认证的详细描述,请参见用户认证。
您可以使用阿里云账号(包括阿里云主账号和RAM账号)登录MaxCompute管理控制台。
当您使用odpscmd或者JDBC等工具连接MaxCompute时,需要用到AccessKey ID及AccessKey Secret。
当用户使用账号连接MaxCompute时,系统将会判断当前账号是否为当前项目用户。只有管理员执行了
add user "xxx"
命令,用户才允许在该项目中发起操作。
请求源检查(IP检查):检查IP白名单。详情请参见管理IP白名单。
项目空间状态检查:检查项目是否为正常状态。
MaxCompute权限检查:用户被添加至项目后,还需要被授予相关的操作权限,才能在权限范围内进行操作。这里的权限包括通过各类授权方案实现的权限授予,包括ACL权限控制、Policy权限控制、Download权限控制、Label权限控制、基于Package跨项目访问资源。项目级用户管理方法请参见通过命令管理用户权限。
MaxCompute租户级操作鉴权。
MaxCompute租户级操作权限包括租户级别对象操作权限与租户级管理类权限。
租户级别对象操作权限包括对租户级对象Quota和网络连接(Networklink)的操作。例如use quota、CreateNetworkLink等,操作列表请参见租户内对象权限一览表。
租户级别对象操作还包括实现一账号管理多个Project对象,提升权限管理的便捷性。
租户级别管理类权限指租户级别用户与角色权限管理,包括添加/删除租户级别用户、创建/删除租户级别角色、查看租户级别用户/角色列表及权限内容、将租户级别角色授予用户、取消用户被授予的租户级别角色、将租户级别角色添加至项目、移出项目内的租户级别角色等。
当用户需要进行上述操作时,MaxCompute对用户进行鉴权,验证用户是否具备相关权限,否则不能进行操作。
授权链路
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
MaxCompute引擎层面:当前项目下project/table/fuction/resource/instance/job的所有权限,以及
package
的read
权限。DataWorks层面:可进行数据开发,并且发布任务至生产环境。
默认无权限、需要在安全中心走审批流程申请。
指项目空间的管理者。可以对该项目空间的基本属性、数据源、当前项目空间计算引擎配置和项目成员等进行管理,并为项目成员赋予项目管理员、开发、运维、部署、访客角色。
开发
Role_Project_Dev
MaxCompute引擎层面:当前项目下project/table/fuction/resource/instance/job的所有权限,以及
package
的read
权限。DataWorks层面:可进行数据开发,但无法发布任务至生产环境。
默认无权限、需要在安全中心走审批流程申请。
开发角色的用户能够创建工作流、脚本文件、资源和UDF以及新建和删除表,同时可以创建发布包,但不能执行发布操作。
运维
Role_Project_Pe
当前项目空间下project/fuction/resource/instance/job的所有权限,拥有package的Read权限和table的Read/Describe权限。
说明MaxCompute引擎层面有权限,但在DataWorks上,运维角色不能直接在界面运行节点进行任务执行操作。
默认无权限、需要在安全中心走审批流程申请。
运维角色的用户由项目管理员分配运维权限,拥有发布及线上运维的操作权限,没有数据开发的操作权限。
部署
Role_Project_Deploy
默认无权限。
默认无权限、需要在安全中心走审批流程申请。
部署角色与运维角色相似,但是它没有线上运维的操作权限。
访客
Role_Project_Guest
默认无权限。
默认无权限、需要在安全中心走审批流程申请。
访客角色的用户只具备查看权限,没有权限进行编辑工作流和代码等操作。
安全管理员
Role_Project_Security
默认无权限。
默认无权限、需要在安全中心走审批流程申请。
安全管理员仅在数据保护伞模块中使用,用于敏感规则配置、数据风险审计等。
数据分析师
Role_Project_Data_Analyst
默认无权限。
默认无权限、需要在安全中心走审批流程申请。
仅具有数据分析模块的操作权限。
模型设计师
Pole_Project_Erd
默认无权限。
默认无权限、需要在安全中心走审批流程申请。
该角色可以在智能建模查看模型,进行数仓规划、数据标准、维度建模和数据指标等内容的编辑,但是不能发布模型。
空间所有者,即阿里云主账号。
Project Owner
MaxCompute项目空间的所有者,拥有该项目空间的所有权限。
有权限
无
无
Super_Administrator
MaxCompute项目空间的超级管理员,拥有项目空间的管理类权限以及项目空间内所有类型资源的全部权限。
有权限
无
无
Admin
每一个项目在创建时,会自动创建一个Admin角色,并且为该角色授予确定的权限。即可以访问项目空间内的所有对象、对用户或角色进行管理、授权。与项目空间的所有者相比,Admin角色不能将Admin权限指派给用户,不能设定项目空间的安全配置,不能修改项目空间的鉴权模型,Admin角色所对应的权限不能被修改。项目空间的所有者可以将Admin角色赋权给一个用户,让该用户代理安全管理。
有权限
无
无
Role_Project_Scheduler
默认无权限。
MaxCompute引擎层面:当前项目下project/table/fuction/resource/instance/job的所有权限,以及package的read权限。
DataWorks层面:用于在生产调度环境中作为执行身份。
说明当RAM用户或RAM角色被设置为某MaxCompute项目生产环境的调度访问身份(即创建生产环境数据源时,被配置为默认访问身份),则该用户或角色会被映射为MaxCompute项目的Role_Project_Scheduler角色。默认访问身份配置详情,请参见创建数据源。
统一使用该身份调度执行生产环境的MaxCompute任务。
用户及用户权限
在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上查询到的不一致。