
# 企业级权限管理与规范化数据开发
针对大型企业在构建企业级数据平台时常面临的权限混乱、开发不规范以及运维困难等问题，不仅影响了数据的安全性，还降低了开发效率。华为云DataArts Studio提供企业级数据治理与开发能力，通过完善的权限管理机制和规范化开发流程，保障数据安全与开发质量。本文档阐述权限管理与规范化开发的核心实践方法。
#### 核心架构
DataArts Studio支持两种工作空间模式：简单模式和企业模式，两种类型在权限管理上有细分差异。
#### 简单模式与企业模式介绍
- 简单模式：传统的DataArts Studio工作空间模式。简单模式工作空间下，DataArts Studio数据开发组件以及对应管理中心组件无法设置开发环境和生产环境，只能进行简单的数据开发，无法对数据开发流程和表权限进行强管控。仅支持配置一个数据湖，作为DataArts Studio的生产环境。
  图1简单模式工作空间   
  ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001573525533.png "点击放大")
  
  

- 企业模式：为解决简单模式存在的风险，DataArts Studio工作空间新增支持企业模式。企业模式下，DataArts Studio数据开发组件以及对应管理中心组件的数据连接支持设置开发环境和生产环境，有效隔离开发者对生产环境业务的影响。建议配置两个数据湖，其中一个数据湖作为DataArts Studio开发环境，另一个作为DataArts Studio生产环境。其中：
  - 开发环境只针对开发人员开放，只用于脚本或作业开发，开发完后发布到生产环境中。
  
  - 生产环境内不能做任何修改，只对最终用户开放，任何修改必须回退到开发环境中重新修改发布。
  
  
  图2企业模式工作空间   
  ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001573159209.png "点击放大") 
 
#### 不同模式工作空间的优劣势对比
表1不同模式工作空间的优劣势对比 
| 对比 | 简单模式                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 企业模式                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| 优势 | 简单、方便、易用。 - 仅需要授权数据开发人员"开发者"角色即可完成所有数据开发工作。  - 提交脚本或作业后，您无需发布，脚本或作业即可进入调度系统周期性执行，产出结果数据。                                                                                                                                                                                                                                                                                                                                                                                             | 安全、规范。 - 具备安全、规范的代码发布管控流程（包含代码评审、代码DIFF查看等功能），保障生产环境稳定性，避免因代码逻辑错误引起脏数据蔓延或任务报错等非预期情况。  - 数据访问得到有效管控，数据安全得以保障。  - 所有脚本或作业仅支持在开发环境编辑，开发者无法修改生产环境的脚本或作业。  - 开发环境和生产环境的数据隔离，开发者无法影响生产环境的数据。  - 如果需要对生产环境进行变更，必须在开发环境通过开发者的发布操作才能将变更提交到生产环境，需要管理者或部署者审批通过，才能发布成功。   |
| 劣势 | 存在不稳定、不安全的风险。 - 无法设置开发环境和生产环境隔离，只能进行简单的数据开发。  - 无法对生产表权限进行控制。 说明： 开发调测阶段，开发者可直接访问生产数据湖的数据，随意对表进行增加、删除和修改等操作，存在数据安全风险。   - 无法对数据开发流程进行管控。 说明： 开发者可以不经过任何人审批，随时新增、修改脚本或作业并提交至调度系统，给业务带来不稳定因素。    | 流程相对复杂，一般情况下无法一人完成所有数据开发、生产流程。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
#### 不同模式工作空间对生产任务开发与运维的影响
表2不同模式工作空间对生产任务开发与运维的影响 
| 对比           | 简单模式                                                                                                            | 企业模式（推荐）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| 生产任务开发流程管控差异 | 任务提交后，无需发布，即可进入调度系统周期性执行，产出结果数据。 （提交--\>生产） | - 任务需要先提交至开发环境，再执行发布操作，将任务发布至生产环境，才可以自动调度运行任务。   （提交--\>发布--\>生产） - 生产环境内不能做任何修改，只对最终用户开放，任何修改必须回退到开发环境中重新修改发布。   |
| 生产任务运维权限管控差异 | 开发人员可直接编辑生产任务的脚本和作业。                                                                                            | 开发人员只能在数据开发界面编辑代码并且提交，但是不能将代码直接发布到生产环境，发布生产的操作需要有运维权限（部署者、管理员、运维者这几类角色拥有此权限）。 - 所有脚本和作业仅支持在开发环境编辑，无法修改生产环境的代码。  - 您可基于企业模式工作空间特性，以及DataArts Studio角色权限体系来规划与管控DataArts Studio上任务开发与运维流程。详情请参见[企业模式业务流程](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_5100.html)。                                                                               |
| 生产数据管控差异     | 开发人员可直接使用生产数据进行测试，无法保障生产数据安全。                                                                                   | 开发人员在开发环境可使用测试数据进行测试，生产环境数据可读。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
#### 不同工作空间模式下，DataArts Studio模块对应操作
表3不同工作空间模式下对应模块的操作 
| DataArts Studio模块 | 简单模式                | 企业模式                               |
|:---|:---|:---|
| 管理中心              | 操作生产环境（数据连接、数据导入导出） | 操作开发环境+生产环境（数据源资源映射配置、数据连接、数据导入导出） |
| 数据开发              | 操作生产环境（实例、数据库）      | 操作开发环境+生产环境（实例、数据库）                |
   
#### 企业模式对使用流程的影响
- 简单模式工作空间下，DataArts Studio数据开发组件以及对应管理中心组件无法设置开发环境和生产环境，只能进行简单的数据开发，无法对数据开发流程和表权限进行强管控。提交脚本或作业后，您无需发布，脚本或作业即可进入调度系统周期性执行，产出结果数据。
  图3简单模式流程   
  ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001573209545.png) 
- 企业模式下，DataArts Studio数据开发组件以及对应管理中心组件的数据连接支持设置开发环境和生产环境，有效隔离开发者对生产环境业务的影响。其中：开发环境只针对开发人员开放，只用于脚本或作业开发，开发完后发布到生产环境中。生产环境内不能做任何修改，只对最终用户开放，任何修改必须回退到开发环境中重新修改发布。
  图4企业模式流程   
  ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001523208844.png "点击放大") 
 
 #### 创建企业模式工作空间实现环境隔离
简单模式下为实现开发环境和生产环境隔离，需要创建两个工作空间，一个是开发环境工作空间，一个是生产环境工作空间，然后将开发工作空间导出的脚本或作业，导入到生产工作空间。在这种方式下，无法简单便捷地完成生产环境和开发环境同步，缺少审批管控环节。
企业空间模式，在一个工作空间实现开发环境与生产环境隔离、不同环境计算资源隔离、权限隔离、任务发布流程管控等需求。
1. **创建企业模式工作空间。**
   若您当前使用简单模式工作空间，但希望使用开发环境与生产环境隔离机制，您可以将简单模式工作空间升级为企业模式工作空间，如果您之前未使用过简单模式、无需继承业务数据，则可以直接新建企业模式工作空间。
   - [简单模式升级企业模式](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_5135.html#section3)
   
   - [新建企业模式工作空间](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_5135.html#section4)
    
2. **准备两套相互隔离的数据湖引擎，用于隔离开发环境和生产环境。**
   不同工作空间模式对于数据湖引擎存在一定的要求，企业模式工作空间需要分别为开发环境和生产环境进行数据湖引擎配置，才可以实现开发环境和生产环境隔离。配置开发环境和生产环境隔离包含以下方式：
   图5配置开发生产环境隔离   
   ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001587722313.png "点击放大")
   - 配置两套数据湖服务，进行开发环境与生产环境隔离。 对于集群化的数据源（例如MRS、DWS、RDS、MySQL、Oracle、DIS、ECS等），DataArts Studio通过管理中心的创建数据连接区分开发环境和生产环境的数据湖服务，在开发和生产流程中自动切换对应的数据湖。因此您需要准备两套数据湖服务，且两套数据湖服务的版本、规格、组件、区域、VPC、子网以及相关配置等信息，均应保持一致，详细操作请参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1299.html)。
     创建数据连接时，通过不同的集群来进行开发与生产环境的隔离，如[图6]所示。
     图6创建数据连接时选择不同集群   
     ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000002281714121.png "点击放大") 
   
   - 配置DLI环境隔离。 配置企业模式环境隔离，包含DLI队列配置和DB配置。
     对于Serverless服务（例如DLI），DataArts Studio通过管理中心的环境隔离来配置生产环境和开发环境数据湖服务的对应关系，在开发和生产流程中自动切换对应的数据湖。因此您需要在Serverless数据湖服务中准备两套队列、两套数据库资源，建议通过名称后缀进行区分，详细操作请参见[配置DataArts Studio企业模式环境隔离](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_5105.html)。
     
   
   - 配置DB，在同一个数据湖服务下配置两套数据库，进行开发环境与生产环境隔离。
     对于DWS、MRS Hive和MRS Spark这三种数据源，如果在创建数据连接时选择同一个集群，如[图7]所示，则需要配置数据源资源映射的DB数据库映射关系进行开发生产环境隔离，如[图8]所示。详细操作请参见[DB配置](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_5105.html#section2)。
     图7创建数据连接时选择同一个集群   
     ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000002282848781.png "点击放大")
     图8DB配置   
     ![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000002473259644.png "点击放大") 
     
 
 #### 建立DataArts Studio权限管理体系
DataArts Studio采取统一身份认证服务（Identity and Access Management，简称IAM）的角色与策略授权（RBAC）/身份策略授权（ABAC）+工作空间角色的细粒度权限管理体系。此外，数据安全权限管理以数据为中心，构建覆盖全链路的数据湖安全解决方案，并支持对服务资源的管控，从而全方位保障数据湖安全。
![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000002653955236.png "点击放大")
1. **统一身份认证IAM** **权限管理**
   目前IAM支持两类授权，一类是角色与策略授权，另一类为身份策略授权。了解更多两类授权详情请参见[权限管理](https://support.huaweicloud.com/productdesc-dataartsstudio/dataartsstudio_07_012.html)。
   - [创建IAM用户并授予DataArts Studio权限-角色与策略](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0004.html)
   
   - [创建IAM用户并授予DataArts Studio权限-身份策略](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0155.html)。
    
   实际生产过程中，项目管理员可以按照[用户授权最小化权限实践](https://support.huaweicloud.com/bestpractice-dataartsstudio/dataartsstudio_05_0416.html)进行权限最小化配置，这样既能满足实际业务使用，也避免了权限过大的风险。
   
2. **用户角色和权限管理**
   对于非DAYU Administrator或Tenant Administrator账号权限的IAM用户而言，DataArts Studio工作空间角色决定了其在工作空间内的权限。请采取统一身份认证IAM权限管理准备IAM用户，然后将该用户添加为工作空间成员并配置工作空间角色。详细操作步骤请参见[添加工作空间成员和角色](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0117.html)。各角色权限的详细说明请参见[权限列表](https://support.huaweicloud.com/productdesc-dataartsstudio/dataartsstudio_07_013.html)章节。
   - 分配角色 当前可分配的预置角色有管理员、开发者、部署者、运维者和访客这几种。
     - 管理员：建议将项目负责人、开发责任人、运维管理员设置为管理员角色。
     
     - 开发者：建议将任务开发、任务处理的用户设置为开发者。
     
     - 运维者：建议将运维管理、状态监控的用户设置为运维者。
     
     - 部署者：在企业模式中，开发者提交脚本或作业版本后，系统会对应产生发布任务。开发者确认发包后，需要部署者审批通过，才能将修改后的作业同步到生产环境。
     
     - 访客：建议将只查看空间内容、不进行操作的用户设置为访客。
      
   
   - 分配权限
     不同的工作空间角色决定了该用户在工作空间内的权限。
     - 管理员：工作空间管理员拥有工作空间内所有的业务操作权限。
     
     - 开发者：开发者拥有工作空间内创建、管理工作项的业务操作权限。
     
     - 运维者：运维者具备工作空间内运维调度等业务的操作权限，但无法更改工作项及配置。
     
     - 部署者：企业模式独有，具备工作空间内任务包发布的相关操作权限。
     
     - 访客：访客可以查看工作空间内的数据，但无法操作业务。
       
   
   
   如果预置角色不能满足您的需求，您也可以创建自定义角色。自定义角色的权限可自由配置，实现业务操作权限最小化。可以参考[（可选）自定义工作空间角色](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0107.html)章节创建自定义角色。
   
3. **数据安全权限管理**
   DataArts Studio数据安全访问权限控制，为用户配置数据访问权限和服务资源访问权限，控制资源使用范围，进一步保障数据的安全。
   - [配置数据权限访问控制](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1155.html)
     按不同角色、用户、用户组进行数据权限分配，保障数据的访问安全。
     
   
   - [配置服务资源访问控制](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1162.html)
     对队列权限、数据连接、委托等资源进行管控，对各组件目录权限、数据下载权限进行限制，保障资源不被滥用。
     
    
 
#### 标准化数据开发流程
当前DataArts Studio企业模式，主要涉及管理中心和数据开发组件，数据开发流程由管理员、开发者、部署者、运维者等角色共同完成。标准化的开发流程应遵循"设计 \> 开发 \> 测试 \> 审核 \> 发布 \> 运维"的闭环。
图9企业模式角色架构   
![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000002692995697.png "点击放大")
**在进行数据开发与生产前，您还需要了解一项重要的操作：配置调度身份。**
作业执行机制默认以启动作业的用户身份执行该作业。然而，在实际作业执行中可能因权限不足导致作业执行失败，需要通过配置作业调度身份来解决。调度身份分为委托和IAM账户两大类。系统按照作业委托\>公共委托\>执行用户\>公共IAM账号\>调度作业的用户的顺序来获取权限，然后以该权限来执行作业。配置调度身份详情请参考[配置调度身份](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0555.html)。
**进行数据开发与生产最佳实践流程：**
1. 管理员创建工作空间，准备两套数据湖服务，配置开发环境和生产环境，准备数据，配置项目用户权限等。
   管理员可按部门、项目或数据域划分权限边界，实现权限隔离。实际生产过程中，可以设置项目管理员、数据架构师、安全管理员等多个管理员角色，分别负责项目管理、数据管理、权限配置相关业务。
   - 项目管理员创建企业模式工作空间，创建IAM用户，配置用户权限和用户角色。
   
   - 数据架构师：准备两套数据湖服务，配置开发环境和生产环境，准备数据。
   
   - 安全管理员：进行用户访问权限控制，保障数据资产安全。
    
   具体操作请参见[创建企业模式工作空间实现环境隔离]和[建立DataArts Studio权限管理体系]。
   数据架构师准备数据须知：
   - 数据湖服务创建完成后，您需要按照项目规划（例如数据开发需要操作的库表等），分别在开发和生产环境的数据湖服务中，新建数据库、数据库模式（仅DWS需要）、数据表等。
     - 对于集群化的数据源（例如MRS、DWS、RDS、MySQL、Oracle、DIS、ECS等），使用两套集群资源，两套环境中的数据库、数据库模式（仅DWS需要）和数据表必须保持同名。
     
     - 对于Serverless服务（例如DLI），两套队列和两套数据库建议通过名称和后缀（开发环境添加后缀"_dev"，生产环境无后缀）进行关联与区分，数据表必须保持同名。
     
     - 对于DWS、MRS Hive和MRS Spark数据源，如果使用一套相同的集群资源，通过两个数据库（开发环境添加后缀"_dev"，生产环境无后缀）进行开发环境和生产环境隔离，两套环境中数据库模式（仅DWS需要）和数据表必须保持同名。
      
   
   - 数据库、数据库模式（仅DWS需要）、数据表等新建完成后，如果涉及原始数据表等，您还需要将两套数据湖服务之间的数据进行同步：
     - 数据湖中已有数据：通过CDM或DRS等数据迁移服务，在数据湖间批量同步数据。
     
     - 数据源待迁移数据：通过对等的CDM或DRS等数据迁移服务作业进行同步，保证生产环境和开发环境的数据湖服务数据一致。
      
    
2. 开发者在数据开发的开发环境进行脚本、作业开发，提交版本等操作。
   - 脚本开发：
     1. 新建脚本：新建相应类型的脚本。具体操作请参见[新建脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0423.html)。
     
     2. 开发脚本：基于新建的脚本，进行脚本的在线开发、调试和执行。具体操作请参见[开发脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0406.html)。
     
     3. 提交版本并解锁：脚本开发完成后，您需要提交版本并解锁，提交版本并解锁后才能正式地被作业调度运行，便于其他开发者修改。具体操作请参见[提交版本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0901.html)。
      
   
   - 作业开发
     1. 新建作业：创建一个批处理的Pipeline作业。具体操作请参见[新建作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0434.html)。
     
     2. 开发作业：基于新建的作业，进行作业开发，您可以进行编排、配置节点。具体操作请参见[开发Pipeline作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0435.html)。
     
     3. 配置调度作业：配置作业调度任务。具体操作请参见[调度作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0470.html)。
        如果您的作业是批处理作业，您可以配置作业级别的调度任务，即以作业为一个整体进行调度，支持单次调度、周期调度、事件驱动调度三种调度方式。具体操作请参见[配置作业调度任务（批处理作业）](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0470.html#dataartsstudio_01_0470__zh-cn_topic_0099797007_section1590152794714)。
        
     
     4. 提交版本：作业调度配置完成后，您需要提交版本，提交版本后才能用于调度运行，便于其他开发者修改。具体操作请参见[提交版本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0902.html)。
     
     5. 调度作业：作业开发完成后，用户可以在"作业监控"页面中管理作业的调度任务，例如：执行调度、暂停调度、恢复调度、停止调度。[批作业监控：调度作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0508.html#section1)。
     
     6. 查看批处理作业监控详情：批作业监控提供了对批处理作业的状态进行监控的能力。具体操作请参见[批作业监控](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0508.html)。
      
    
3. 部署者在数据开发的开发环境，发布版本，将脚本、作业任务发布到生产环境。 在企业模式中，开发者完成脚本、作业开发后，提交脚本、作业版本，系统会对应产生一个脚本、作业类型的发布任务。部署者审批开发者提交的版本，审批通过，将脚本、作业同步到生产环境。
   发布脚本版本具体操作请参见[发布脚本任务](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1902.html)，发布作业版本具体操作请参见[发布作业任务](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1903.html)。
   
4. 运维者在数据开发的生产环境，基于开发者发布的资源，进行作业监控、通知管理、备份等操作。
   - 运维监控：运维者进行作业监控、实例监控，查看作业和其内各任务节点的运行详情。
   
   - 通知管理：运维者配置多种方式报警，作业和任务发生错误时可及时通知相关人，保证业务正常运行。
   
   - 备份和还原管理：运维者可以通过备份功能，定时备份系统中的所有作业、脚本、资源和环境变量。通过还原功能，还原已备份的资产，包含作业、脚本、资源和环境变量。
   
   
   具体操作请参见[运维调度](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0506.html)。
   
5. 访客在数据开发的生产环境查看工作空间内容。
 
