MaxCompute数据权限控制详情

DataWorks通过空间预设角色或空间自定义角色与开发环境引擎Role映射,来让被授予空间角色的RAM用户,拥有该空间角色映射的开发引擎Role所拥有的MaxCompute引擎权限,但默认无生产权限,本文为您介绍预设角色权限基本情况、MaxCompute权限管控背景以及如何获得权限。

背景信息

DataWorks预置了空间预设角色,同时提供了自定义空间角色的功能,来控制用户是否可以使用DataWorks空间级模块、是否有开发引擎项目权限。但无论预设角色还是自定义角色,都可以通过预设或手动授权的方式使角色拥有开发引擎项目的相关权限。

说明
  • 主账号拥有该账号下云资源的最大权限,以下描述的权限管控主要针对RAM用户。

  • 预设角色中仅拥有空间开发角色、管理员角色的RAM用户可以在DataWorks数据开发页面创建节点、并执行建表命令。

使用流程

序号

目标

相关文档

1

了解DataWorks预设角色权限基本情况。

2

了解DataWorks工作空间成员如何获取引擎权限。

RAM用户(子账号)获取引擎权限

3

了解管理员可以对生产权限进行的权限管控。

MaxCompute数据权限管控

4

了解如何通过命令查看引擎权限。

查看MaxCompute引擎权限

注意事项

  • 标准模式工作空间下,RAM用户(子账号)默认没有生产项目权限,生产表的查询权限需要在安全中心申请。关于数据权限申请详情请参见MaxCompute数据访问权限控制

  • 简单模式工作空间下,RAM用户(子账号)默认拥有项目所有权限,无法做到数据权限管控。

预设角色权限基本情况

DataWorks空间级预设角色默认可以访问开发环境引擎项目权限,但无法直接访问生产环境引擎项目。即可以直接访问开发表、资源、函数,但无法直接访问生产表、资源、函数。

说明

预设角色中仅拥有空间开发角色、管理员角色的RAM用户可以在DataWorks数据开发页面通过创建节点来执行操作表、资源、函数的命令。

场景

说明

开发环境的MaxCompute引擎权限

DataWorks采取RBAC权限体系与MaxCompute的RBAC角色体系存在天然的映射关系,DataWorks空间成员在被授予空间预设角色的同时,将同步被授予该预设角色映射的引擎Role所拥有的引擎权限。

生产环境的MaxCompute引擎权限

默认RAM用户(子账号)不可以直接操作生产环境。

无论DataWorks空间预设角色还是自定义角色,均没有生产环境的MaxCompute引擎权限,如果要对生产环境的MaxCompute表行访问等操作,您需要在安全中心申请权限,详情请参见MaxCompute数据访问权限控制

说明

预设角色中仅拥有空间开发角色、管理员角色的RAM用户可以在DataWorks数据开发页面通过创建节点来执行建表命令。

RAM用户(子账号)获取引擎权限

为了保障生产数据安全,在标准模式工作空间下,DataWorks对RAM用户(子账号)访问MaxCompute表的操作进行了管控。

  • 获得开发项目权限过程(自动获得):

  • 获得生产项目权限(需要人为申请):需要进入安全中心申请,使用场景如下表所示,更多关于安全中心的使用详情参见MaxCompute数据访问权限控制

    场景

    说明

    同工作空间内,开发环境用户访问生产环境表

    场景1

    当DataWorks的子账号未被添加为生产环境计算引擎访问身份时,默认该账号无法在数据开发界面直接操作本工作空间的生产表,如果子账号需要拥有生产表权限,需要在安全中心发起申请,待审批通过后,便可在数据开发界面对表进行相关操作。

    开发或生产环境用户访问跨工作空间的开发或生产环境表

    场景2

    默认不在工作空间下的子账号无法在数据开发界面跨项目访问开发表或生产表。如果需要跨项目操作开发表或生产表,子账号需要在安全中心发起申请,待审批通过后,便可在数据开发界面对表进行相关操作。

MaxCompute数据权限管控

RAM用户(子账号)若需要访问生产数据,需要进行流程审批,管理员可对生产环境权限进行管控。安全中心

  1. 安全中心内置审批流程可进行生产表权限审批。

  2. 审批中心支持自定义审批流程。

查看MaxCompute引擎权限

您可以在MaxCompute_SQL任务中,执行如下语句,查询自己的权限信息。

  • show grants:查看当前用户自己的访问权限。

  • show grants for <username>:查看指定用户的访问权限,仅空间管理员才有执行权限。

附录:工作空间角色授权过程

场景一:空间级预设角色授权过程

  • 底层实现:当RAM用户(子账号)被加入工作空间并且被授予某个空间预设角色时,将自动为该用户添加MaxCompute底层Role,使用户拥有该底层Role对应的角色权限。关于预设角色与底层Role的映射关系,详情请参见:附录:空间级预设角色与MaxCompute引擎权限的映射关系

  • 场景示例:某个RAM用户被一个拥有空间管理员权限的用户添加为工作空间成员,并授权工作空间开发角色权限。

    说明

    添加成员并授权的操作请参见空间级模块权限管控

    授予预设角色

完成添加成员操作后,在DataWorks层面和MaxCompute引擎层面均有了部分权限,此RAM用户可在DataWorks层面和MaxCompute引擎层面进行的操作权限详情如下。

  • DataWorks层面:给RAM用户授予开发角色后,该用户可以在DataWorks开发代码并且提交,但是不能将代码直接发布到生产环境,发布生产的操作需要有运维权限(项目所有者管理员运维这几类角色拥有此权限)。

  • MaxCompute引擎层面:给RAM用户授予开发角色后,在MaxCompute引擎层面同时为这个RAM用户授予了一个Role_Project_Dev这个角色,这个角色会被赋予部分MaxCompute引擎开发项目的表和项目的权限。

    说明
    • 当授予阿里云RAM用户预设管理员角色,其拥有的DataWorks功能权限较多,但同样不能直接访问生产表。

    • 此处说明的RAM用户特指,未被指定为非调度引擎访问身份(未被指定为生产项目MaxCompute访问身份)的子账号。

场景二:空间自定义角色授权过程

场景示例:某个RAM用户被一个拥有空间管理员权限的用户添加为工作空间成员,并授予DataWorks工作空间自定义角色权限。授予自定义角色新建DataWorks空间自定义角色时,您可以指定此角色是否与MaxCompute引擎的某个角色做映射,角色新建完成后,可以在添加成员时关联此自定义角色,完成后,被添加为成员的RAM用户在DataWorks层面和MaxCompute引擎层面均有了部分权限,此RAM用户可在DataWorks层面和MaxCompute引擎层面进行的操作权限详情如下。

说明

新建DataWorks自定义角色的操作请参见空间级模块权限管控,添加成员并授权的操作请参见空间级模块权限管控

  • DataWorks层面:DataWorks上给一个RAM用户授予DataWorks自定义角色,该用户只能访问自定义角色所赋予的模块权限。

  • MaxCompute引擎层面:

    • 如果该DataWorks自定义角色未设置引擎权限映射,那么RAM用户没有MaxCompute引擎的操作权限,无法通过命令进行引擎查询等相关操作。

    • 如果该DataWorks自定义角色设置了引擎权限映射,那么RAM用户有自定义角色所映射的引擎权限,所拥有的操作权限与映射的MaxCompute引擎的角色一致。

说明

除了RAM用户被指定为调度引擎访问身份(生产项目MaxCompute访问身份)这一场景外,其他场景下,RAM用户被添加为工作空间成员后,默认没有生产环境操作权限,操作及访问生产表需要在安全中心进行权限申请,详情请参见:通过新版安全中心申请表权限。关于MaxCompute访问身份详情说明,可参考文档:创建并管理工作空间

常见问题

权限报错常见问题详情请参见权限管理常见问题

附:通过MaxCompute SQL查询权限信息

MaxCompute支持通过SQL语句查询用户、角色、对象等的权限信息。详情请参见通过MaxCompute SQL查询权限信息

后续步骤

MaxCompute可跨项目访问资源,所以在DataWorks中,开发人员可以在数据开发界面直接访问生产环境下的资源,您可以通过场景:MaxCompute引擎在不同模式工作空间访问资源与权限说明了解工作空间成员如何跨项目访问资源。