DataWorks工作空间类型分为“简单模式”、“标准模式”两种,两种类型在权限管理上有细分区别。本实践将基于DataWorks标准模式空间完成从“数据建模”到“数据生产”的基本流程,帮助您快速掌握规范化的数据体系建设流程,提升在数据开发过程中的规范性、安全性、稳定性。
背景信息
DataWorks采取RBAC权限模型供用户管理DataWorks所有页面可见功能以及API的使用权限,同时这套权限体系与MaxCompute的RBAC角色体系存在天然的映射关系,详情可参见空间级模块权限管控。不同工作空间类型的权限管理特征与优缺点不一致,以下表格为您对比介绍两种空间类型的权限细分特点。
细分特点 | 简单模式 | 标准模式 |
描述 | 在简单模式工作空间下,一个DataWorks空间下层对应一个MaxCompute项目(或一个EMR集群、Hologres数据库等),该环境即视为生产(PROD)环境。 | 在标准模式工作空间下,一个DataWorks空间下层对应两个MaxCompute项目(或两个EMR集群、Hologres数据库等),一个视为开发(DEV)环境,一个视为生产(PROD)环境。 |
权限概述 | 在简单模式空间下,DataWorks的“开发”角色因为与MaxCompute数据源的“Role_Project_Dev” Role进行了映射,因此DataWorks开发角色天然能够读取MaxCompute项目内的所有数据。 | 在标准模式空间下,DataWorks的“开发”角色因为与MaxCompute数据源(dev环境)的“Role_Project_Dev” Role进行了映射,因此:
|
优点 | 简单、方便、易用。 仅需要授权数据开发人员“DataWorks开发角色”即可完成所有数据仓库开发工作。 | 安全、规范。
|
缺点 | 存在不稳定、不安全的风险。
| 流程相对复杂,一般情况下无法一人完成所有数据开发、生产流程。 |
关于简单模式与标准模式差异详情可参考文档:必读:简单模式和标准模式的区别
标准模式对使用流程的影响
如图,标准模式“生产、开发隔离”的模式将影响数据模型设计、数据处理逻辑代码发布等流程。
实践操作流程
以下以一个具体的实践为您演示,标准模式下规范化的数据开发流程。
Step1:开通产品与创建空间
开通DataWorks与MaxCompute。
创建DataWorks工作空间。
说明阿里云主账号可直接操作创建工作空间,如需使用RAM用户创建工作空间,则需对RAM用户授权后再操作,详情可参见创建RAM用户。
配置工作空间基本信息。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的工作空间,进入工作空间列表页面。单击创建工作空间,参数根据界面提示配置,完成后单击创建工作空间。
为工作空间创建MaxCompute数据源。具体操作,请参见创建MaxCompute数据源。
其中生产环境的MaxCompute访问身份即调度访问身份,是开发任务发布到生产环境进行周期性调度运行时所使用的身份,通常情况下为保证调度任务顺利进行,比起开发者自己的身份来,调度访问身份往往拥有较大数据范围读写权限。
生产环境MaxCompute访问身份默认情况下为阿里云主账号,如您存在不同部门使用不同空间并要求调度访问身份权限隔离,则可以选择独立RAM用户作为该空间专属调度身份。
Step2:角色管理
在DataWorks工作空间下,您可以根据不同的业务场景为不同的RAM用户设置不同的工作空间权限,DataWorks目前有预设角色,同时也支持您自定义角色。您在将RAM用户添加到DataWorks工作空间时,可以选择添加为当前工作空间的预设角色或者自定义角色。
DataWorks权限体系与MaxCompute权限体系是相互独立的,某个用户拥有DataWorks使用权限不代表一定拥有MaxCompute使用权限,但工作空间的两种模式权限的情况例外,如背景信息所示。
角色规划。
预设角色
DataWorks提供预设角色供用户进行快速授权,具体权限请参见附录:预设角色权限列表(空间级),除此之外,预设角色权限控制大体可以参考以下说明。
空间级别-空间管理员角色:可以做当前空间所有操作。
空间级别-开发角色:可以做任务开发的工作,如DataStudio任务开发、数据服务开发、DQC配置等。
空间级别-运维角色:负责配置资源与任务部署,如配置数据源、发布任务。
空间级别-部署角色:仅负责发布任务。
空间级别-模型设计师角色:仅能操作建模工作,无法定义数据标准。
同时,为方便用户进行数据开发工作,这些DataWorks预设角色与MaxCompute数据源Role存在映射关系,详情请参见背景信息。
以下以一个案例为您示例。
DataWorks上给一个RAM用户授予开发角色,他可以在DataWorks上开发代码并且提交,但是他不能将代码直接发布到生产,发布生产操作需要有运维权限(项目所有者、管理员、运维角色拥有此权限)。
在MaxCompute引擎层面,DataWorks上为RAM用户授予开发角色这个操作,在MaxCompute引擎层面就是为这个RAM用户授予了一个role_project_dev这个角色,这个角色会被赋予一些当前MaxCompute项目的表和项目的权限。
说明查看MaxCompute Role所拥有权限请参考用户规划与管理。
DataWorks自定义角色
您可以通过自定义角色控制是否让某个RAM用户只能访问部分模块,同时您也可以自行控制配置引擎权限映射操作给该自定义角色默认的底层MaxCompute引擎相关的权限。
角色分配。
在本案例中,您需要准备至少5个RAM用户,并对其赋予如下几种角色: 授权步骤请参考用户授权与管理,其中:
数据团队主管被赋予“空间管理员”权限。
数据开发人员被赋予“开发角色”权限。
数据建模人员被赋予“模型设计师角色”权限。
运维人员被赋予“运维角色”权限。
数据分析师人员被赋予“开发角色”权限。
Step3:权限管理
在上述“角色管理”中已对角色相关内容进行了介绍,虽然部分默认配置涉及数据权限管理(如背景信息),但DataWorks仍提供了更为专业的概述,帮助您快速构建平台的数据内容、个人隐私等相关的安全能力,实现更加精细化、场景化的数据权限及高危风险行为管控,满足企业面向高风险场景的各类安全要求(例如,审计),无需您额外配置即可直接使用该功能。
准备工作。
请参考如下步骤打开相关配置,以实现更加精细化的权限管控能力。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的工作空间,进入工作空间列表页面。,单击创建工作空间,选择生产、开发环境隔离,其他参数根据界面提示配置,完成后单击创建工作空间。
启动列级别访问控制。详情请参见Label权限控制。
进入安全中心平台安全诊断,打开数据下载控制。
操作详情请参见进入平台安全诊断。打开后即可实现odpscmd tunnel download,数据下载权限需申请后才能执行。
标准模式下的数据权限管理。
在标准模式下,当数据产出至生产环境后,默认情况下任何人均无数据读写权限。此时,如开发人员或分析师需读取生产环境数据进行数据分析或用于生产,则可以发起相关权限申请流程。
默认数据权限申请流程。
登录数据地图定位至某张表。
点击权限申请。
选择所需申请的权限点以及字段并发起申请。
执行审批。
表责任人(Owner)或空间管理员角色进入DataWorks审批中心-待我审批,即可完成表权限审批。
自定义数据权限申请流程。
在上述步骤中,表权限申请流程仅需由“表责任人(Owner)”或“空间管理员”执行审批即可,但对于权限管控相对严格的企业来说,远远无法满足其需求,仍需更加复杂的审批流程来支持权限申请与审批。
DataWorks支持管理员通过定义MaxCompute项目维度、数据保护伞分级分类维度的审批策略来进行数据权限申请审批,满足企业在不同场景下、针对不同类别数据的审批流程定义,实现更加安全的授权流程。
Step4:数据建模
数据建模的流程包括:创建数据标准、创建数据模型、修改数据模型、保存模型至模型库、提交模型至开发环境计算引擎。操作详情请参见数据建模。
Step5:数据开发与生产
进行数据开发与生产前,您需要了解几个重要的概念。
生产开发数据源
DataWorks支持基于标准模式工作空间对应的两个环境这一特性,来分别为这两个环境配置不同的数据库访问地址。即您可以在数据源配置界面分别为开发环境(DataStudio)测试运行时和生产调度时指定不同的数据库访问地址。
同一个名称的数据源存在开发环境和生产环境两套配置,您可以通过数据源隔离使其在不同环境隔离使用。DataWorks将通过判断任务执行环境来自动访问对应环境下该同名数据源对应的配置信息。详情请参考数据源开发和生产环境隔离。
调度参数
调度参数是DataWorks在调度场景下支持自动根据业务时间替换为具体值的参数,节点中使用调度参数后,在调度场景下,可以实现将对应业务时间的业务数据动态写入对应的时间分区中。详情请参见调度参数支持的格式。
依赖关系
调度依赖就是调度场景下节点间的上下游依赖关系,在DataWorks调度场景中,上游节点运行成功,下游任务节点才会开始运行。
根据表血缘来配置节点调度依赖后,可以保障调度任务在运行时能取到正确的数据,避免下游节点取数据时,上游表数据还未正常产出,导致下游节点取数出现问题。
在DataWorks依赖配置中,上游节点的输出作为下游节点的输入,形成节点依赖关系。平台支持通过自动解析快速设置节点依赖,关于调度依赖详情可参考文档调度依赖配置指引。
了解相关概念后,您可进行数据开发与生产的操作步骤。
以管理员权限创建生产开发数据源。
开发人员创建业务流程。
开发人员在业务流程内新建节点。
开发人员配置节点任务并配置调度属性、依赖关系。
开发人员提交任务并发起代码审核。
代码审批人员进行代码审核决定是否通过审批进入待发布状态。
有运维权限的同学可将节点发布生产或者根据节点变更内容来决定是否取消发布。
运维同学或开发人员进入发布包界面查看发布状态。