DataWorks在产品管控、功能使用等方面提供了完善的权限管控体系,其中功能使用方面,针对功能的范围是全局功能还是空间级功能,分别提供全局角色、空间级角色来实现权限管控,本文将为您介绍当前DataWorks如何通过RBAC(Role-Based Access Control)方式来管控功能使用权限。
DataWorks的“产品管控”权限指的是与所有在DataWorks管理控制台中执行的操作相关的权限。例如,工作空间列表页面中创建空间、禁用空间、删除空间等操作;资源组列表页面中的创建独享资源组、配置独享资源组网络等操作;报警配置页面的配置联系人等操作。DataWorks针对产品管控方面的权限管控是通过RAM Policy来实现的,详情请参见产品及控制台权限控制详情:RAM Policy。
全局功能及空间级功能
登录DataWorks管理控制台并进入DataWorks工作空间后,单击顶部菜单栏左侧的图标,即可显示DataWorks产品的所有功能模块,如下图所示。单击功能模块即可进入对应功能模块页面并开始使用此功能。进入功能模块页面后:
如果界面顶部菜单栏显示DataWorks工作空间名称,则此模块为“空间级别模块”,例如DataStudio。
如果界面顶部菜单栏不显示DataWorks工作空间名称,则此模块为”全局级别模块”,例如数据地图。
区分全局级功能和工作空间级功能详情请参见下文的附录:如何区分“空间级别模块”和“全局级别模块”。
全局角色与空间级角色
DataWorks功能使用的权限体系是基于RBAC(Role-based access control)权限模型构建的,对全局功能和空间级功能可以分别定义全局角色或空间级角色,将一个用户(RAM用户或Role)添加为某个角色后,这个用户即可拥有此角色包含的DataWorks相关功能模块的使用权限。
您了解的关键概念有:
用户:包含RAM用户、RAM Role两类。
角色:包含DataWorks空间级角色、DataWorks全局级别角色两类。
权限:包含DataWorks空间级别功能模块、DataWorks全局级别功能模块。
DataWorks为您预设了部分全局角色和空间级角色,您可以直接使用这些角色给用户授权,也可以根据需要,自定义全局角色或空间级角色。用户、角色、权限之间的对应关系,如下图所示。
在所有角色中,仅“全局级角色”中的租户管理员角色拥有所有功能模块的使用权限。
阿里云主账号下所有RAM用户均为被默认添加为租户成员角色。
如果租户管理员自定义了某个全局级别角色,并指定了该角色不具备某些全局级模块的使用权限,则该自定义角色的权限优先级将高于租户成员的权限。
例如:某个主账号下的RAM用户(RAM用户A),默认情况下为租户成员角色,可访问数据地图功能页面。当租户管理员自定义了某个角色,并指定该角色无数据地图访问权限,并将RAM用户A添加为该自定义角色后,RAM用户A则无法访问数据地图功能页面。
权限详情:全局角色
DataWorks全局角色包括租户管理员、租户成员、租户安全管理员、数据目录管理员、元数据采集管理员、数据治理管理员这几类,各角色的权限详情如下表所示。
角色 | 权限点 | 授权人 | 描述 |
租户管理员 | 拥有DataWorks所有产品功能的权限(不包含阿里云DataWorks管理控制台的操作权限)。 | 租户所有者(阿里云主账号)、拥有AliyunDataWorksFullAccess的RAM用户、拥有AdministratorAccess权限的用户、拥有租户管理员角色的RAM用户可以将租户管理员角色授权给其RAM用户。 | DataWorks产品最高权限管理员,可以操作DataWorks产品内的所有功能。 |
租户成员 | 拥有和目前开发角色同样的使用权限。
| 无需授权,默认情况下,当前阿里云主账号下所有RAM用户均为租户成员角色。 | 当前阿里云主账号下所有RAM用户、RAM Role默认都是租户成员。 |
租户安全管理员 | 拥有安全中心、审批中心、数据保护伞的所有权限。 | 租户管理员可以将其他RAM用户授权为安全管理员。 | 用于管理工作空间的安全相关配置。 |
数据治理管理员 | 拥有数据治理中心的普通使用权限(不包括服务开通、检查项的创建、启用、停止),及数据治理中心的管理权限。 | 租户管理员可以将其他人授权为数据治理管理员。 | 用于数据治理中心的相关管理。 |
数据目录管理员 | 拥有数据地图普通使用权限、管理数据地图的数据目录功能权限。 | 租户管理员可以将其他人授权为数据目录管理员。 | 可以管理用数据地图的数据目录功能。 |
元数据采集管理员 | 拥有数据地图的普通使用权限和元数据采集权限。 | 租户管理员可以将其他人授权为元数据采集管理员。 | 可以使用数据地图的元数据采集功能。 |
权限详情:空间级角色
DataWorks为您提供了多种预设空间级角色,也支持您根据权限管控需要自定义空间级角色。
预设空间级角色
DataWorks产品提供:项目所有者、数据分析师、空间管理员、开发、运维、部署、访客、安全管理员、模型设计师这几类预设角色。
说明工作空间所有者为阿里云主账号,子账号仅为代主账号创建工作空间。当前不支持给其他用户授权为项目所有者。各预设角色的对DataWorks各个功能模块的权限详情请参见附录:预设角色权限列表(空间级)。
自定义空间级角色
DataWorks自定义空间级角色可控制自定义的角色是否有用某个空间级功能模块的权限,新建自定义角色的操作请参见空间级模块权限管控。
通过空间级角色对空间级功能进行权限管控时,可细分为两类权限管控对象:DataWorks功能操作、引擎功能操作(例如引擎数据库权限,即表、资源等内容的增删改查权限),预设角色和自定义角色对这两类细分的权限管控对象的权限详情如下表所示。
权限管控对象 | 预设角色 | 自定义角色 |
DataWorks功能操作 | DataWorks以预设好各角色在各空间级功能上的使用权限,详情请参见附录:预设角色权限列表(空间级)。 | 创建自定义角色时,自定义指定此角色是否有某个空间级功能的操作权限。 |
引擎功能权限-MaxCompute引擎 |
| 创建自定义角色时,如果配置了自定义角色与MaxCompute引擎的角色进行映射,则自定义角色拥有映射的MaxCompute引擎角色的权限。 |
引擎功能权限-EMR引擎 | 注册EMR集群时,为空间成员配置权限映射获得引擎权限,详情可参考注册EMR集群至DataWorks。 | |
引擎功能权限-CDH | 通过为空间下的成员配置空间成员与Linux或Kerberos账号映射获得引擎权限,详情可参考创建并管理工作空间。 | |
引擎功能权限-其他引擎 | 各引擎在联合DataWorks使用前,都需要先在DataWorks创建数据源。其他引擎在创建数据源时,需设置在开发环境、生产环境使用该引擎的调度身份(如,AnalyticDB for PostgreSQL数据源需指定访问数据库的用户名和密码)。 空间级角色的用户(含预设角色和自定义角色),在执行其他引擎任务时,使用创建数据源设置的调度身份,即,空间级角色不直接管控非MaxCompute引擎权限,此权限由创建数据源时指定的调度身份来设置。 |
如上文所述:
DataWorks提供空间级预设角色时,同时将预设角色与工作空间创建的数据源的角色进行了映射,使得预设角色也拥有了映射角色所拥有的部分引擎操作权限。
DataWorks支持自定义空间级角色,创建自定义角色时,您也可以同时设置角色与引擎角色的映射关系,使得自定义角色拥有引擎操作权限。
因此,使用空间级角色为某个用户授权后,此用户即可拥有DataWorks功能的操作权限和引擎的操作权限。以下以MaxCompute引擎为例,为您介绍,使用空间级预设角色和空间级自定义角色授权后,用户实际的操作权限逻辑。
场景一:授权空间级预设角色权限
示例场景:某个RAM用户被一个拥有空间管理员权限的用户添加为工作空间成员,并授权预设的开发角色权限。
说明添加成员并授权的操作请参见空间级模块权限管控。
完成添加成员操作后,在DataWorks层面和MaxCompute引擎层面均有了部分权限,此RAM用户可在DataWorks层面和MaxCompute引擎层面进行的操作权限详情如下。
DataWorks层面:给RAM用户授予开发角色后,该用户可以在DataWorks开发代码并且提交,但是不能将代码直接发布到生产环境,发布生产的操作需要有运维权限(项目所有者、管理员、运维这几类角色拥有此权限)。
MaxCompute引擎层面:给RAM用户授予开发角色后,在MaxCompute引擎层面同时为这个RAM用户授予了一个Role_Project_Dev角色,这个角色会被赋予部分MaxCompute引擎开发项目的表和项目的权限。
说明当授予阿里云RAM用户预设管理员角色,其拥有的DataWorks功能权限较多,但同样不能直接访问生产表。
此处说明的RAM用户特指,未被指定为非调度引擎访问身份(未被指定为生产项目MaxCompute访问身份)的子账号。
场景二:授权空间级自定义角色权限
场景示例:某个RAM用户被一个拥有空间管理员权限的用户添加为工作空间成员,并授予DataWorks工作空间自定义角色权限。新建自定义角色时,您可以指定此角色是否与MaxCompute引擎的某个角色做映射,角色新建完成后,可以在添加成员时关联此自定义角色,完成后,被添加为成员的RAM用户在DataWorks层面和MaxCompute引擎层面均有了部分权限,此RAM用户可在DataWorks层面和MaxCompute引擎层面进行的操作权限详情如下。
DataWorks层面:DataWorks上给一个RAM用户授予DataWorks自定义角色,该用户只能访问自定义角色所赋予的模块权限。
MaxCompute引擎层面:
如果该DataWorks自定义角色未设置引擎权限映射,那么RAM用户没有MaxCompute引擎的操作权限,无法通过命令进行引擎查询等相关操作。
如果该DataWorks自定义角色设置了引擎权限映射,那么RAM用户有自定义角色所映射的引擎权限,所拥有的操作权限与映射的MaxCompute引擎的角色一致。
说明除了RAM用户被指定为调度引擎访问身份(生产项目MaxCompute访问身份)这一场景外,其他场景下,RAM用户被添加为工作空间成员后,默认没有生产环境操作权限,操作及访问生产表需要在安全中心进行权限申请,详情请参见:通过新版安全中心申请表权限。关于MaxCompute访问身份详情说明,可参考文档:创建并管理工作空间。
附录:空间级预设角色与MaxCompute引擎权限的映射关系
DataWorks空间级预设角色与MaxCompute开发项目的权限映射与权限详情如下表所示:
DataWorks成员角色 | MaxCompute角色 | DataWorks开发环境/MaxCompute DEV引擎项目数据权限 | DataWorks生产环境/MaxCompute PROD引擎项目数据权限 | DataWorks平台权限特征 |
项目管理员 | Role_Project_Admin |
| 默认无权限,需要在安全中心走审批流程申请。 | 指项目空间的管理者。可以对该项目空间的基本属性、数据源、当前项目空间计算引擎配置和项目成员等进行管理,并为项目成员赋予项目管理员、开发、运维、部署、访客角色。 |
开发 | Role_Project_Dev |
| 开发角色的用户能够创建工作流、脚本文件、资源和UDF以及新建和删除表,同时可以创建发布包,但不能执行发布操作。 | |
运维 | Role_Project_Pe | 当前项目空间下project/fuction/resource/instance/job的所有权限,拥有package的Read权限和table的Read/Describe权限。 说明 MaxCompute引擎层面有权限,但在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工作空间名称的模块为“空间级别模块“,例如DataStudio。
界面顶部菜单栏不显示DataWorks工作空间名称的模块为”全局级别模块”,例如数据地图。