华为云用户手册

  • 创建分类 在DataArts Studio控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据安全”模块,进入数据安全页面。 图1 选择数据安全 单击数据安全左侧导航树中的“数据分类”,进入数据分类页面。 图2 进入数据分类 首次新建分类时,需要通过分类目录上方的 ,至少新增一个根目录层级分类。后续再新建分类时,可通过或,新增同级或子级分类。 单击或后,在弹出的新建分类窗口中,参考表1填写数据分类信息。 图3 新建数据分类 表1 参数设置 参数名 参数设置 *分类名称 分类名称只能包含中文、英文字母、数字和下划线。 描述 分类描述支持所有字符输入。
  • 数据源简介 表2 数据源简介 数据源类型 简介 数据仓库服务(DWS) 华为云DWS是基于Shared-nothing分布式架构,具备MPP大规模并行处理引擎,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。 数据湖探索(DLI) 华为云DLI是完全兼容Apache Spark和Apache Flink生态,实现批流一体的Serverless大数据计算分析服务。DLI支持多模引擎,企业仅需使用SQL或程序就可轻松完成异构数据源的批处理、流处理、内存计算、机器学习等,挖掘和探索数据价值。 MapReduce服务(MRS HBase) HBase是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。 使用MRS HBase可实现海量数据存储,并实现毫秒级数据查询。选择MRS HBase可以实现物流数据毫秒级实时入库更新,并支持百万级时序数据查询分析。 MapReduce服务(MRS Hive) Hive是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HiveQL,它允许熟悉SQL的用户查询数据。 使用MRS Hive可实现TB/PB级的数据分析,快速将线下Hadoop大数据平台(CDH、HDP等)迁移上云,业务迁移 “0”中断,业务代码 “0”改动。 MapReduce服务(MRS Kafka) 华为云MapReduce服务可提供专属MRS Kafka集群。Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统,它提供了类似于JMS的特性,但在设计上完全不同,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的消息收集、网站活性跟踪、聚合统计系统运营数据(监控数据)、日志收集等大量数据的互联网服务的数据收集场景。 MapReduce服务(MRS Spark) Spark是一个开源的并行数据处理框架,能够帮助用户简单的开发快速、统一的大数据应用,对数据进行协处理、流式处理、交互式分析等等。 Spark提供了一个快速的计算、写入以及交互式查询的框架。相比于Hadoop,Spark拥有明显的性能优势。Spark提供类似SQL的Spark SQL语言操作结构化数据。 MapReduce服务(MRS Clickhouse) ClickHouse是一款开源的面向联机分析处理的列式数据库,其独立于Hadoop大数据体系,最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。 当前ClickHouse被广泛的应用于互联网广告、App和Web流量、电信、金融、物联网等众多领域,非常适用于商业智能化应用场景。 MapReduce服务(MRS Impala) Impala直接对存储在HDFS、HBase或对象存储服务(OBS)中的Hadoop数据提供快速、交互式SQL查询。除了使用相同的统一存储平台之外,Impala还使用与Apache Hive相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue中的Impala查询UI)。这为实时或面向批处理的查询提供了一个熟悉且统一的平台。作为查询大数据的工具的补充,Impala不会替代基于MapReduce构建的批处理框架,例如Hive。基于MapReduce构建的Hive和其他框架最适合长时间运行的批处理作业。 MapReduce服务(MRS Ranger) Ranger提供一个集中式安全管理框架,提供统一授权和统一审计能力。它可以对整个Hadoop生态中如HDFS、Hive、HBase、Kafka、Storm等进行细粒度的数据访问控制。用户可以利用Ranger提供的前端WebUI控制台通过配置相关策略来控制用户对这些组件的访问权限 。 MapReduce服务(MRS Hudi) Hudi是一种数据湖的存储格式,在Hadoop文件系统之上提供了更新数据和删除数据的能力以及消费变化数据的能力。支持多种计算引擎,提供IUD接口,在 HDFS的数据集上提供了插入更新和增量拉取的流原语。 Hudi的元数据存放在Hive中,操作通过Spark进行。 MapReduce服务(MRS Presto) Presto是一个开源的用户交互式分析查询的SQL查询引擎,用于针对各种大小的数据源进行交互式分析查询。其主要应用于海量结构化数据/半结构化数据分析、海量多维数据聚合/报表、ETL、Ad-Hoc查询等场景。 Presto允许查询的数据源包括Hadoop分布式文件系统(HDFS),Hive,HBase,Cassandra,关系数据库甚至专有数据存储。一个Presto查询可以组合不同数据源,执行跨数据源的数据分析。 MapReduce服务(MRS Doris) Doris是一个高性能、实时的分析型数据库,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。因此,Apache Doris 能够较好的满足报表分析、即时查询、统一数仓构建、数据湖联邦查询加速等使用场景。 云数据库 RDS 华为云RDS是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。 注意,DataArts Studio平台目前仅支持RDS中的MySQL和PostgreSQL数据库。 MySQL MySQL是目前最受欢迎的开源数据库之一,其性能卓越,架构成熟稳定,支持流行应用程序,适用于多领域多行业,支持各种WEB应用,成本低,中小企业首选。 ORACLE ORACLE数据库系统是以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。 实时数据接入 DIS 使用实时数据接入通道,可实现跨空间作业调度。若使用数据通道连接,可以向其他账号的DIS通道发送消息;若不使用,仅能给本账号下所有region的通道发送消息。 Rest Client 通过Rest Client执行一个RESTful请求。目前支持IAM Token、用户名密码两种认证鉴权方式的RESTful请求。 主机连接 通过主机连接,用户可以在DataArts Studio数据开发中连接到指定的主机,通过脚本开发和作业开发在主机上执行Shell或Python脚本。主机连接保存连接某个主机的连接信息,当主机的连接信息有变化时,只需在主机连接管理中编辑修改,而不需要到具体的脚本或作业中逐一修改。
  • 参数说明 表5 DLI数据表 参数 是否必选 说明 基本属性 表名 是 数据表的名称。只能包含英文小写字母、数字、“_”,不能为纯数字,不能以“_”开头,且长度为1~63个字符。 别名 否 数据表的别名,只能包含中文字符、英文字母、数字、“_”,不能为纯数字,不能以“_”开头,且长度为1~63个字符。 数据连接类型 是 数据表所属的数据连接类型。系统默认。 数据连接 是 数据表所属的数据连接。系统默认。 数据库 是 数据表所属的数据库。系统默认。 数据位置 是 选择数据存储的位置: OBS DLI 数据格式 是 选择数据的格式。“数据位置”为“OBS”时,配置该参数。 parquet:支持读取不压缩、snappy压缩、gzip压缩的parquet数据。 csv:支持读取不压缩、gzip压缩的csv数据。 orc:支持读取不压缩、snappy压缩的orc数据。 json:支持读取不压缩、gzip压缩的json数据。 路径 是 选择数据存储的OBS路径。“数据位置”为“OBS”时,配置该参数。 如果OBS路径不存在或者OBS桶不存在,系统支持可以自动创建OBS目录。 说明: 如果OBS桶创建超过上限,系统会自动提示“创建obs目录失败,错误原因:[Create OBS Bucket failed:TooManyBuckets:You have attempted to create more buckets than allowed]”。 表描述 否 数据表的描述信息。 表结构 列类型 是 选择列类型。包含分区列和普通列。系统默认普通列。 列名 是 填写列名,列名不能重复。 类型 是 选择数据类型,具体说明请参见《数据湖探索SQL语法参考》的数据类型。 列描述 否 填写列的描述信息。 操作 否 单击,增加列。 单击,删除列。 表6 DWS数据表 参数 是否必选 说明 基本属性 表名 是 数据表的名称。只能包含英文字母、数字、“_”,不能为纯数字,不能以“_”开头,且长度为1~63个字符。 别名 否 数据表的别名,只能包含中文字符、英文字母、数字、“_”,不能为纯数字,不能以“_”开头,且长度为1~63个字符。 数据连接类型 是 数据表所属的数据连接类型。系统默认。 数据连接 是 数据表所属的数据连接。系统默认。 数据库 是 数据表所属的数据库。系统默认。 模式 是 选择数据库的模式。 表描述 否 数据表的描述信息。 高级选项 否 提供以下高级选项: 选择数据表的存储方式 行存模式 列存模式 选择数据表的压缩级别 行存模式:压缩级别的有效值为YES/NO。 列存模式:压缩级别的有效值为YES/NO/LOW/MIDDLE/HIGH,还可以配置列存模式同一压缩级别下不同的压缩水平0-3(数值越大,表示同一压缩级别下压缩比越大)。 表结构 列名 是 填写列名,列名不能重复。 数据分类 是 选择数据类型的类别: 数值类型 货币类型 布尔类型 二进制类型 字符类型 时间类型 几何类型 网络地址类型 位串类型 文本搜索类型 UUID类型 JSON类型 对象标识符类型 类型 是 选择数据类型,具体说明请参见《数据仓库服务开发指南》的数据类型。 列描述 否 填写列的描述信息。 是否建ES索引 否 单击复选框时,表示需要建立ES索引。建立ES索引时,请同时在“CloudSearch集群名”中选择建立好的CSS集群。如何创建CSS集群,请参见《云搜索服务用户指南》的创建集群。 ES索引数据类型 否 选择ES索引的数据类型: text keyword date long integer short byte double boolean binary 操作 否 单击,增加列。 单击,删除列。 表7 MRS Hive数据表 参数 是否必选 说明 基本属性 表名 是 数据表的名称。只能包含英文小写字母、数字、“_”,不能为纯数字,不能以“_”开头,且长度为1~63个字符。 别名 否 数据表的别名,只能包含中文字符、英文字母、数字、“_”,不能为纯数字,不能以“_”开头,且长度为1~63个字符。 数据连接类型 是 数据表所属的数据连接类型。系统默认。 数据连接 是 选择数据表所属的数据连接。系统默认。 数据库 是 选择数据表所属的数据库。系统默认。 表描述 否 数据表的描述信息。 表结构 列名 是 填写列名,列名不能重复。 数据分类 是 选择数据类型的类别: 原始类型 ARRAY MAP STRUCT UNION 类型 是 选择数据类型,具体说明请参见LanguageManual DDL。 列描述 否 填写列的描述信息。 操作 否 单击,增加列。 单击,删除列。
  • 相关操作 查看表详情:在脚本开发导航栏,选择,展开下方的数据连接至数据表层级,右键单击表名称,选择“查看表详情”,可查看如表4所示的数据表信息。 表4 表详情页面 页签名称 说明 表信息 显示数据表的基本信息和存储信息。 字段信息 显示数据表的字段信息。 数据预览 预览数据表的10条记录。 DDL 显示DLI/DWS/MRS Hive数据表的DDL。 删除表:在脚本开发导航栏,选择,展开下方的数据连接至数据表层级,右键单击表名称,选择“删除”后,在弹出的页面中单击“确定”完成删除。 删除操作不可撤销,请谨慎操作。
  • 参考:配置委托权限 将账号的操作权限委托给DataArts Studio服务后,需要配置委托身份的权限,才可与其他服务进行交互。 为实现对权限较小化的安全管控要求,可根据作业中的节点类型,以服务为粒度,参见表1配置相应的服务Admin权限。 也可精确到具体服务的操作、资源以及请求条件等。根据作业中的节点类型,以对应服务API接口为粒度进行权限拆分,满足企业对权限最小化的安全管控要求。参见表2进行配置。例如包含Import GES节点的作业,您只需要创建自定义策略,并勾选ges:graph:getDetail(查看图详情),ges:jobs:getDetail(查询任务状态),ges:graph:access(使用图)这三个授权项即可。 当满足如下条件之一时,MRS集群才支持委托方式提交作业。 非安全集群。 安全集群,集群版本大于 2.1.0,并且安装了MRS 2.1.0.1及以上版本的补丁。 当MRS集群不支持委托方式提交作业时,如下节点相关作业不能配置委托。 MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),以及通过API方式连接的(MRS Spark SQL、MRS Hive SQL)节点。 配置服务级Admin权限 因作业执行过程中,需要往OBS写执行日志信息,因此粗粒度授权时,所有作业都需要添加OBS OperateAccess权限。 表1 配置相关节点的admin权限 节点名称 系统权限 权限描述 CDM Job、DIS Stream、DIS Dump、DIS Client DAYU Administrator 数据治理中心服务的所有执行权限。 Import GES GES Administrator 图引擎服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) MRS Administrator MRS Fullaccess KMS Administrator MRS Administrator:RBAC策略下MapReduce服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 MRS Fullaccess:细粒度策略下MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) DAYU Administrator KMS Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 DLI Flink Job、DLI SQL、DLI Spark DLI Service Admin 数据湖探索的所有执行权限。 DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) DAYU Administrator KMS Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 CSS DAYU Administrator Elasticsearch Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 Elasticsearch Administrator:云搜索服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 Create OBS、Delete OBS、OBS Manager OBS OperateAccess 查看桶、上传对象、获取对象、删除对象、获取对象ACL等对象基本操作权限 SMN SMN Administrator 消息通知服务的所有执行权限。 配置细粒度权限(根据各服务支持的授权项,创建自定义策略) 创建自定义策略的详细操作请参见创建自定义策略。 作业执行过程中,需要向OBS中写入执行日志。当采取精细化授权方式时,任何类型的作业均需要添加OBS的如下授权项: obs:bucket:GetBucketLocation obs:object:GetObject obs:bucket:CreateBucket obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket CDM Job、DIS Stream、DIS Dump、DIS Client节点隶属于DataArts Studio模块,DataArts Studio不支持细粒度授权。因此包含这几类节点的作业,给服务配置权限仅支持DataArts Studio Administarator。 CSS不支持细粒度授权,且需要通过代理执行。因此包含这类节点的作业,需要配置DataArts Studio Administarator和Elasticsearch Administrator权限。 SMN不支持细粒度授权,因此包含这类节点的作业,需要配置SMN Administarator权限。 表2 自定义策略 节点名称 授权项 Import GES ges:graph:access ges:graph:getDetail ges:jobs:getDetail MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) mrs:job:delete mrs:job:stop mrs:job:submit mrs:cluster:get mrs:cluster:list mrs:job:get mrs:job:list kms:dek:crypto kms:cmk:get MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) DLI Flink Job、DLI SQL、DLI Spark dli:jobs:get dli:jobs:update dli:jobs:create dli:queue:submit_job dli:jobs:list dli:jobs:list_all DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) Create OBS、Delete OBS、OBS Manager obs:bucket:GetBucketLocation obs:bucket:ListBucketVersions obs:object:GetObject obs:bucket:CreateBucket obs:bucket:DeleteBucket obs:object:DeleteObject obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket
  • 调度身份的分类 调度身份分为委托和IAM账户两大类。 委托:由于云各服务之间存在业务交互关系,一些云服务需要与其他云服务协同工作,需要您创建云服务委托,将操作权限委托给这些服务,让这些服务以您的身份使用其他云服务,代替您进行一些资源运维工作。 委托可以分为: 公共委托:工作空间级别的全局委托。适用于该空间内的所有作业。配置公共委托请参考配置公共委托。 作业委托:适用于单个作业级别。配置作业委托请参考配置作业委托。 IAM账号:通过用户组统一配置,权限管理相对于委托来说,流程简便;并且使用IAM账号的兼容性更好,可支持MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),通过直连方式的(MRS Spark SQL、MRS Hive SQL)节点,以及目标端为DWS的ETL Job节点,解决部分MRS集群和部分ETL Job节点不支持委托方式提交作业的问题。 IAM账户可分为: 公共IAM账户:工作空间级别的全局IAM账户。适用于该空间内的所有作业。配置公共IAM账户请参考配置公共IAM账号。 执行用户:作业级别的IAM账户,适用于单个作业级别。配置执行用户请参考配置执行用户。
  • 参考:创建委托 登录IAM服务控制台。 选择“委托”,单击“创建委托”。 设置“委托名称”。例如:DGC_agency。 在创建委托页面,委托类型选择“云服务”,云服务选择“数据湖治理中心DGC”,将操作权限委托给DataArts Studio,让DataArts Studio以您的身份使用其他云服务,代替您进行一些资源运维工作。 图3 创建委托 单击“下一步”,进入授权页面。 在授权页面中搜索“Tenant Administrator”策略,勾选“Tenant Administrator”策略并单击“下一步”。 因Tenant Administrator策略具有除统一身份认证服务IAM外,其他所有服务的所有执行权限。所以给委托服务DataArts Studio配置Tenant Administrator,可访问周边所有服务。 若您想达到对权限较小化的安全管控要求,Tenant Administrator可不配置,仅配置OBS OperateAccess权限(因作业执行过程中,需要往OBS写执行日志信息,因此需要添加 OBS OperateAccess权限)。然后再根据作业中的节点类型,配置不同的委托权限。例如某作业仅包含Import GES节点,可配置GES Administrator权限和OBS OperateAccess权限即可。详细方案请参考参考:配置委托权限。 图4 配置权限 单击“确定”完成委托创建。
  • 注意事项 不同工作空间模式对于数据湖引擎存在一定的要求,企业模式工作空间需要分别为开发环境和生产环境进行数据湖引擎配置,才可以实现开发生产环境隔离。配置开发生产环境隔离包含以下三种方式: 图1 配置开发生产环境隔离 配置两套数据湖服务,进行开发与生产环境隔离。 对于集群化的数据源(例如MRS、DWS、RDS、MySQL、Oracle、DIS、ECS等),DataArts Studio通过管理中心的创建数据连接区分开发环境和生产环境的数据湖服务,在开发和生产流程中自动切换对应的数据湖。因此您需要准备两套数据湖服务,且两套数据湖服务的版本、规格、组件、区域、VPC、子网以及相关配置等信息,均应保持一致,详细操作请参见新建数据连接。 创建数据连接时,通过不同的集群来进行开发与生产环境的隔离,如图2所示。 图2 创建数据连接时选择不同集群 配置DLI环境隔离。 配置企业模式环境隔离,包含DLI队列配置和DB配置。 对于Serverless服务(例如DLI),DataArts Studio通过管理中心的环境隔离来配置生产环境和开发环境数据湖服务的对应关系,在开发和生产流程中自动切换对应的数据湖。因此您需要在Serverless数据湖服务中准备两套队列、两套数据库资源,建议通过名称后缀进行区分,详细操作请参见配置企业模式环境隔离。 配置DB,在同一个数据湖服务下配置两套数据库,进行开发与生产环境隔离。 对于DWS、MRS Hive和MRS Spark这三种数据源,如果在创建数据连接时选择同一个集群,如图3所示,则需要配置数据源资源映射的DB数据库映射关系进行开发生产环境隔离,如图4所示。详细操作请参见DB配置。 图3 创建数据连接时选择同一个集群 图4 DB配置 企业模式工作空间下,开发环境的数据开发作业默认不进行调度,仅发布至生产环境后可进行调度。
  • 不同模式工作空间的优劣势对比 表3 不同模式工作空间的优劣势对比 对比 简单模式 企业模式 优势 简单、方便、易用。 仅需要授权数据开发人员“开发者”角色即可完成所有数据开发工作。 提交脚本或作业后,您无需发布,脚本或作业即可进入调度系统周期性执行,产出结果数据。 安全、规范。 具备安全、规范的代码发布管控流程(包含代码评审、代码DIFF查看等功能),保障生产环境稳定性,避免不必要的因代码逻辑引起的脏数据蔓延或任务报错等非预期情况。 数据访问得到有效管控,数据安全得以保障。 所有脚本或作业仅支持在开发环境编辑,开发者无法修改生产环境的脚本或作业。 开发环境和生产环境的数据隔离,开发者无法影响生产环境的数据。 开发环境下,脚本、作业以当前开发者的身份执行;生产环境下,脚本、作业则使用空间级的公共IAM账号或公共委托执行。 如果需要对生产环境进行变更,必须在开发环境通过开发者的发布操作才能将变更提交到生产环境,需要管理者或部署者审批通过,才能发布成功。 劣势 存在不稳定、不安全的风险。 无法设置开发环境和生产环境隔离,只能进行简单的数据开发。 无法对生产表权限进行控制。 说明: 开发调测阶段,开发者可直接访问生产数据湖的数据,随意对表进行增加、删除和修改等操作,存在数据安全风险。 无法对数据开发流程进行管控。 说明: 开发者可以不经过任何人审批,随时新增、修改脚本或作业并提交至调度系统,给业务带来不稳定因素。 流程相对复杂,一般情况下无法一人完成所有数据开发、生产流程。
  • 简单模式与企业模式介绍 简单模式:传统的DataArts Studio工作空间模式。简单模式工作空间下,DataArts Studio数据开发组件以及对应管理中心组件无法设置开发环境和生产环境,只能进行简单的数据开发,无法对数据开发流程和表权限进行强管控。一个数据湖作为DataArts Studio的生产环境。 图5 简单模式工作空间 企业模式:为解决简单模式存在的风险,DataArts Studio工作空间新增支持企业模式。企业模式下,DataArts Studio数据开发组件以及对应管理中心组件的数据连接支持设置开发环境和生产环境,有效隔离开发者对生产环境业务的影响。需要两个数据湖中,其中一个数据湖作为DataArts Studio开发环境,另一个作为DataArts Studio生产环境。其中: 开发环境只针对开发人员开放,只用于脚本或作业开发,开发完后发布到生产环境中。 生产环境内不能做任何修改,只对最终用户开放,任何修改必须回退到开发环境中重新修改发布。 图6 企业模式工作空间 您可选择创建任意模式工作空间体验DataArts Studio,使用企业模式工作空间实现DataArts Studio开发环境与生产环境代码隔离、不同环境计算资源隔离、权限隔离、任务发布流程管控等需求。 若您已在使用简单模式工作空间,并且希望保留当前简单模式工作空间的代码时,可选择工作空间模式升级,详情请参见创建企业模式工作空间。
  • 企业模式对使用流程的影响 简单模式工作空间下,DataArts Studio数据开发组件以及对应管理中心组件无法设置开发环境和生产环境,只能进行简单的数据开发,无法对数据开发流程和表权限进行强管控。提交脚本或作业后,您无需发布,脚本或作业即可进入调度系统周期性执行,产出结果数据。 图7 简单模式流程 企业模式下,DataArts Studio数据开发组件以及对应管理中心组件的数据连接支持设置开发环境和生产环境,有效隔离开发者对生产环境业务的影响。其中:开发环境只针对开发人员开放,只用于脚本或作业开发,开发完后发布到生产环境中。生产环境内不能做任何修改,只对最终用户开放,任何修改必须回退到开发环境中重新修改发布。 图8 企业模式流程
  • 背景信息 本文内容由以下几部分构成,从不同角度分别为您解决企业模式不同的问题。 表1 了解企业模式 分类 说明 简单模式与企业模式介绍 不同工作空间模式的介绍。 不同模式工作空间对生产任务开发与运维的影响 DataArts Studio建立于对应工作空间物理属性之上的任务开发与运维机制介绍。 不同模式工作空间的优劣势对比 不同工作空间模式的优劣势对比。 企业模式对使用流程的影响 介绍企业模式工作空间下的流程管控。 不同工作空间模式下,DataArts Studio模块对应操作 简单模式仅有生产环境,企业模式有开发环境和生产环境,此部分为您介绍各个环境与DataArts Studio模块的对应关系。
  • 导入资源 参考访问DataArts Studio实例控制台登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。 在管理中心页面,单击“资源迁移”,进入资源迁移页面。 图6 资源迁移 单击“新建导入”,选择导入方式后,配置待导入资源的OBS或本地路径。待导入的资源应为通过导出获取的zip文件。 图7 配置待导入的资源存储路径 单击“新建导入”,上传待导入资源。待导入的资源应为通过导出获取的zip文件 单击“下一步”,勾选导入的资源类型。 图8 勾选导入的资源类型 如果选择导入数据源,则单击“下一步”需要配置数据连接。 图9 配置数据连接 单击“下一步”,等待导入任务下发,导入任务成功下发后系统提示“导入开始”。 图10 导入开始 系统提示“导入开始”后,单击“确定”,可在资源迁移任务列表中查看导入结果。 其中存在子任务失败时,可单击红色子任务名,查看失败原因。 图11 查看导入结果
  • 导出资源 参考访问DataArts Studio实例控制台登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。 在管理中心页面,单击“资源迁移”,进入资源迁移页面。 图1 资源迁移 单击“新建导出”,配置文件的OBS存储位置和文件名称。 图2 选择导出文件 单击“下一步”,勾选导出的模块。 图3 勾选导出的模块 单击“下一步”,等待导出完成,资源包导出到所设置的OBS存储位置。 图4 导出完成 导出资源耗时1分钟仍未显示结果则表示导出失败,请重试。如果仍然无法导出,请联系客服或技术支持人员协助解决。 导出完成后可在资源迁移任务列表中,单击对应任务的“下载”按钮,本地获取导出的资源包。 图5 下载导出结果
  • 相关操作 编辑规则分组:在规则分组页面,单击对应规则分组操作栏中的“编辑”,即可修改规则分组的名称、描述和关联的识别规则。 删除规则分组:在规则分组页面,单击对应规则分组操作栏中的“删除”,即可删除识别规则。当需要批量删除时,可以在勾选规则分组后,在列表上方单击“批量删除”。 被引用的规则分组不可删除。如果要删除引用的规则分组,需要先解除规则分组关联的敏感数据发现任务后再删除。解除关联任务请参考发现敏感数据编辑任务,修改“识别规则组”即可。 删除操作无法撤销,请谨慎操作。
  • 创建数据识别规则组 在DataArts Studio控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据安全”模块,进入数据安全页面。 图1 选择数据安全 单击左侧导航树中的“数据识别规则”,进入数据识别规则页面。 单击页面上方“规则分组”页签,进入分组列表页面。 图2 新建数据识别规则组 单击“新建”,输入新建分组名称和描述,参数设置参考表1,并勾选左侧列表中的识别规则。配置完成后单击“确定”即可。 图3 新建分组参数配置 您所勾选的规则将显示在右侧列表中,右侧已选列表中,已选规则可以通过单击操作来取消勾选。 表1 参数配置表 配置 说明 *分组名称 规则组名称只能包含中文、英文字母、数字和下划线。 建议包含规则含义,避免无意义的描述,以便于使用中能快速选择需要的规则组。 分组描述 为更好地识别规则组,此处加以描述信息。
  • 配置作业参数 作业参数为全局参数,可用于作业中的任意节点。操作方法如下: 单击编辑器右侧的“参数”,展开配置页面,配置如表4所示的参数。 表4 作业参数配置 功能 说明 变量 新增 单击“新增”,在文本框中填写作业参数的名称和参数值。 参数名称 名称只能包含字符:英文字母、数字、中划线和下划线。 参数值 字符串类的参数直接填写字符串,例如:str1 数值类的参数直接填写数值或运算表达式。 参数配置完成后,在作业中的引用格式为:${参数名称} 编辑参数表达式 在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述。 修改 在参数名和参数值的文本框中直接修改。 掩码显示 在参数值为密钥等情况下,从安全角度,请单击将参数值掩码显示。 删除 在参数值文本框后方,单击,删除作业参数。 常量 新增 单击“新增”,在文本框中填写作业常量的名称和参数值。 参数名称 名称只能包含字符:英文字母、数字、中划线和下划线。 参数值 字符串类的参数直接填写字符串,例如:str1 数值类的参数直接填写数值或运算表达式。 参数配置完成后,在作业中的引用格式为:${参数名称} 编辑参数表达式 在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述。 修改 在参数名和参数值的文本框中直接修改,修改完成后,请保存。 删除 在参数值文本框后方,单击,删除作业常量。 工作空间环境变量 查看工作空间已配置的变量和常量。 单击“作业参数预览”页签,展开预览页面,配置如表5所示的参数。 表5 作业参数预览 功能 说明 当前时间 仅单次调度才显示。系统默认为当前时间。 事件触发时间 仅事件驱动调度才显示。系统默认为事件触发时间。 周期调度 仅周期调度才显示。系统默认为调度周期。 具体时间 仅周期调度才显示。周期调度配置的具体运行时间。 起始日期 仅周期调度才显示。周期调度的生效时间。 后N个实例 作业运行调度的实例个数。 单次调度场景默认为1。 事件驱动调度场景默认为1。 周期调度场景 当实例数大于10时,系统最多展示10个日期实例,系统会自动提示“当前参数预览最多支持查看10个实例”。 在作业参数预览中,如果作业参数配置存在语法异常情况系统会给出提示信息。 如果参数配置了依赖作业实际运行时产生的数据,参数预览功能中无法模拟此类数据,则该数据不展示。
  • 表达式转换 使用JSP表达式语言(Expression Language)对当前字段或整行数据进行转换。JSP表达式语言可以用来创建算术和逻辑表达式。在表达式内可以使用整型数,浮点数,字符串,常量true、false和null。 数据进行转换过程中,替换内容包含特殊字符时,需要先使用\将该字符转义成普通字符。 表达式支持以下两个环境变量: value:当前字段值。 row:当前行,数组类型。 表达式支持的工具类用法罗列如下,未列出即表示不支持: 如果当前字段为字符串类型,将字符串全部转换为小写,例如将“aBC”转换为“abc”。 表达式:StringUtils.lowerCase(value) 将当前字段的字符串全部转为大写。 表达式:StringUtils.upperCase(value) 如果想将第1个日期字段格式从“2018-01-05 15:15:05”转换为“20180105”。 表达式:DateUtils.format(DateUtils.parseDate(row[0],"yyyy-MM-dd HH:mm:ss"),"yyyyMMdd") 如果想将时间戳转换成“yyyy-MM-dd hh:mm:ss”格式的日期字符串的类型,例如字段值为“1701312046588”,转换后为“2023-11-30 10:40:46”。 表达式:DateUtils.format(NumberUtils.toLong(value),"yyyy-MM-dd HH:mm:ss") 如果想将“yyyy-MM-dd hh:mm:ss”格式的日期字符串转换成时间戳的类型。 表达式:DateUtils.getTime(DateUtils.parseDate(value,"yyyy-MM-dd hh:mm:ss")) 如果当前字段值为“yyyy-MM-dd”格式的日期字符串,需要截取年,例如字段值为“2017-12-01”,转换后为“2017”。 表达式:StringUtils.substringBefore(value,"-") 如果当前字段值为数值类型,转换后值为当前值的两倍。 表达式:value*2 如果当前字段值为“true”,转换后为“Y”,其它值则转换后为“N”。 表达式:value=="true"?"Y":"N" 如果当前字段值为字符串类型,当为空时,转换为“Default”,否则不转换。 表达式:empty value? "Default":value 如果想将日期字段格式从“2018/01/05 15:15:05”转换为“2018-01-05 15:15:05”。 表达式:DateUtils.format(DateUtils.parseDate(value,"yyyy/MM/dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss") 获取一个36位的UUID(Universally Unique Identifier,通用唯一识别码)。 表达式:CommonUtils.randomUUID() 如果当前字段值为字符串类型,将首字母转换为大写,例如将“cat”转换为“Cat”。 表达式:StringUtils.capitalize(value) 如果当前字段值为字符串类型,将首字母转换为小写,例如将“Cat”转换为“cat”。 表达式:StringUtils.uncapitalize(value) 如果当前字段值为字符串类型,使用空格填充为指定长度,并且将字符串居中,当字符串长度不小于指定长度时不转换,例如将“ab”转换为长度为4的“ab”。 表达式:StringUtils.center(value,4) 删除字符串末尾的一个换行符(包括“\n”、“\r”或者“\r\n”),例如将“abc\r\n\r\n”转换为“abc\r\n”。 表达式:StringUtils.chomp(value) 如果字符串中包含指定的字符串,则返回布尔值true,否则返回false。例如“abc”中包含“a”,则返回true。 表达式:StringUtils.contains(value,"a") 如果字符串中包含指定字符串的任一字符,则返回布尔值true,否则返回false。例如“zzabyycdxx”中包含“z”或“a”任意一个,则返回true。 表达式:StringUtils.containsAny(value,"za") 如果字符串中不包含指定的所有字符,则返回布尔值true,包含任意一个字符则返回false。例如“abz”中包含“xyz”里的任意一个字符,则返回false。 表达式:StringUtils.containsNone(value,"xyz") 如果当前字符串只包含指定字符串中的字符,则返回布尔值true,包含任意一个其它字符则返回false。例如“abab”只包含“abc”中的字符,则返回true。 表达式:StringUtils.containsOnly(value,"abc") 如果字符串为空或null,则转换为指定的字符串,否则不转换。例如将空字符转换为null。 表达式:StringUtils.defaultIfEmpty(value,null) 如果字符串以指定的后缀结尾(包括大小写),则返回布尔值true,否则返回false。例如“abcdef”后缀不为null,则返回false。 表达式:StringUtils.endsWith(value,null) 如果字符串和指定的字符串完全一样(包括大小写),则返回布尔值true,否则返回false。例如比较字符串“abc”和“ABC”,则返回false。 表达式:StringUtils.equals(value,"ABC") 从字符串中获取指定字符串的第一个索引,没有则返回整数-1。例如从“aabaabaa”中获取“ab”的第一个索引1。 表达式:StringUtils.indexOf(value,"ab") 从字符串中获取指定字符串的最后一个索引,没有则返回整数-1。例如从“aFkyk”中获取“k”的最后一个索引4。 表达式:StringUtils.lastIndexOf(value,"k") 从字符串中指定的位置往后查找,获取指定字符串的第一个索引,没有则转换为“-1”。例如“aabaabaa”中索引3的后面,第一个“b”的索引是5。 表达式:StringUtils.indexOf(value,"b",3) 从字符串获取指定字符串中任一字符的第一个索引,没有则返回整数-1。例如从“zzabyycdxx”中获取“z”或“a”的第一个索引0。 表达式:StringUtils.indexOfAny(value,"za") 如果字符串仅包含Unicode字符,返回布尔值true,否则返回false。例如“ab2c”中包含非Unicode字符,返回false。 表达式:StringUtils.isAlpha(value) 如果字符串仅包含Unicode字符或数字,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。 表达式:StringUtils.isAlphanumeric(value) 如果字符串仅包含Unicode字符、数字或空格,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。 表达式:StringUtils.isAlphanumericSpace(value) 如果字符串仅包含Unicode字符或空格,返回布尔值true,否则返回false。例如“ab2c”中包含Unicode字符和数字,返回false。 表达式:StringUtils.isAlphaSpace(value) 如果字符串仅包含ASCII可打印字符,返回布尔值true,否则返回false。例如“!ab-c~”返回true。 表达式:StringUtils.isAsciiPrintable(value) 如果字符串为空或null,返回布尔值true,否则返回false。 表达式:StringUtils.isEmpty(value) 如果字符串中仅包含Unicode数字,返回布尔值true,否则返回false。 表达式:StringUtils.isNumeric(value) 获取字符串最左端的指定长度的字符,例如获取“abc”最左端的2位字符“ab”。 表达式:StringUtils.left(value,2) 获取字符串最右端的指定长度的字符,例如获取“abc”最右端的2位字符“bc”。 表达式:StringUtils.right(value,2) 将指定字符串拼接至当前字符串的左侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”左侧,拼接后长度为8,则转换后为“yzyzybat”。 表达式:StringUtils.leftPad(value,8,"yz") 将指定字符串拼接至当前字符串的右侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”右侧,拼接后长度为8,则转换后为“batyzyzy”。 表达式:StringUtils.rightPad(value,8,"yz") 如果当前字段为字符串类型,获取当前字符串的长度,如果该字符串为null,则返回0。 表达式:StringUtils.length(value) 如果当前字段为字符串类型,删除其中所有的指定字符串,例如从“queued”中删除“ue”,转换后为“qd”。 表达式:StringUtils.remove(value,"ue") 如果当前字段为字符串类型,移除当前字段末尾指定的子字符串。指定的子字符串若不在当前字段的末尾,则不转换,例如移除当前字段“www.domain.com”后的“.com”。 表达式:StringUtils.removeEnd(value,".com") 如果当前字段为字符串类型,移除当前字段开头指定的子字符串。指定的子字符串若不在当前字段的开头,则不转换,例如移除当前字段“www.domain.com”前的“www.”。 表达式:StringUtils.removeStart(value,"www.") 如果当前字段为字符串类型,替换当前字段中所有的指定字符串,例如将“aba”中的“a”用“z”替换,转换后为“zbz”。 表达式:StringUtils.replace(value,"a","z") 替换内容包含特殊字符时,需要先把该字符转义成普通字符,例如,客户想通过该表达式把字符串中 \t 去掉时,需要配置为: StringUtils.replace(value,"\\t","")(即把 \ 再次转义)。 如果当前字段为字符串类型,一次替换字符串中的多个字符,例如将字符串“hello”中的“h”用“j”替换,“o”用“y”替换,转换后为“jelly”。 表达式:StringUtils.replaceChars(value,"ho","jy") 如果字符串以指定的前缀开头(区分大小写),则返回布尔值true,否则返回false,例如当前字符串“abcdef”以“abc”开头,则返回true。 表达式:StringUtils.startsWith(value,"abc") 如果当前字段为字符串类型,去除字段中首、尾处所有指定的字符,例如去除“abcyx”中首尾所有的“x”、“y”、“z”和“b”,转换后为“abc”。 表达式:StringUtils.strip(value,"xyzb") 如果当前字段为字符串类型,去除字段末尾所有指定的字符,例如去除当前字段末尾的“abc”字符串。 表达式:StringUtils.stripEnd(value,"abc") 如果当前字段为字符串类型,去除字段开头所有指定的字符,例如去除当前字段开头的所有空格。 表达式:StringUtils.stripStart(value,null) 如果当前字段为字符串类型,获取字符串指定位置后(索引从0开始,包括指定位置的字符)的子字符串,指定位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”索引为2的字符(即c)及之后的字符串,则转换后为“cde”。 表达式:StringUtils.substring(value,2) 如果当前字段为字符串类型,获取字符串指定区间(索引从0开始,区间起点包括指定位置的字符,区间终点不包含指定位置的字符)的子字符串,区间位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”第2个字符(即c)及之后、第4个字符(即e)之前的字符串,则转换后为“cd”。 表达式:StringUtils.substring(value,2,4) 如果当前字段为字符串类型,获取当前字段里第一个指定字符后的子字符串。例如获取“abcba”中第一个“b”之后的子字符串,转换后为“cba”。 表达式:StringUtils.substringAfter(value,"b") 如果当前字段为字符串类型,获取当前字段里最后一个指定字符后的子字符串。例如获取“abcba”中最后一个“b”之后的子字符串,转换后为“a”。 表达式:StringUtils.substringAfterLast(value,"b") 如果当前字段为字符串类型,获取当前字段里第一个指定字符前的子字符串。例如获取“abcba”中第一个“b”之前的子字符串,转换后为“a”。 表达式:StringUtils.substringBefore(value,"b") 如果当前字段为字符串类型,获取当前字段里最后一个指定字符前的子字符串。例如获取“abcba”中最后一个“b”之前的子字符串,转换后为“abc”。 表达式:StringUtils.substringBeforeLast(value,"b") 如果当前字段为字符串类型,获取嵌套在指定字符串之间的子字符串,没有匹配的则返回null。例如获取“tagabctag”中“tag”之间的子字符串,转换后为“abc”。 表达式:StringUtils.substringBetween(value,"tag") 如果当前字段为字符串类型,删除当前字符串两端的控制字符(char≤32),例如删除字符串前后的空格。 表达式:StringUtils.trim(value) 将当前字符串转换为字节,如果转换失败,则返回0。 表达式:NumberUtils.toByte(value) 将当前字符串转换为字节,如果转换失败,则返回指定值,例如指定值配置为1。 表达式:NumberUtils.toByte(value,1) 将当前字符串转换为Double数值,如果转换失败,则返回0.0d。 表达式:NumberUtils.toDouble(value) 将当前字符串转换为Double数值,如果转换失败,则返回指定值,例如指定值配置为1.1d。 表达式:NumberUtils.toDouble(value,1.1d) 将当前字符串转换为Float数值,如果转换失败,则返回0.0f。 表达式:NumberUtils.toFloat(value) 将当前字符串转换为Float数值,如果转换失败,则返回指定值,例如配置指定值为1.1f。 表达式:NumberUtils.toFloat(value,1.1f) 将当前字符串转换为Int数值,如果转换失败,则返回0。 表达式:NumberUtils.toInt(value) 将当前字符串转换为Int数值,如果转换失败,则返回指定值,例如配置指定值为1。 表达式:NumberUtils.toInt(value,1) 将字符串转换为Long数值,如果转换失败,则返回0。 表达式:NumberUtils.toLong(value) 将当前字符串转换为Long数值,如果转换失败,则返回指定值,例如配置指定值为1L。 表达式:NumberUtils.toLong(value,1L) 将字符串转换为Short数值,如果转换失败,则返回0。 表达式:NumberUtils.toShort(value) 将当前字符串转换为Short数值,如果转换失败,则返回指定值,例如配置指定值为1。 表达式:NumberUtils.toShort(value,1) 将当前IP字符串转换为Long数值,例如将“10.78.124.0”转换为Long数值是“172915712”。 表达式:CommonUtils.ipToLong(value) 从网络读取一个IP与物理地址映射文件,并存放到Map集合,这里的URL是IP与地址映射文件存放地址,例如“http://10.114.205.45:21203/sqoop/IpList.csv”。 表达式:HttpsUtils.downloadMap("url") 将IP与地址映射对象缓存起来并指定一个key值用于检索,例如“ipList”。 表达式:CommonUtils.setCache("ipList",HttpsUtils.downloadMap("url")) 取出缓存的IP与地址映射对象。 表达式:CommonUtils.getCache("ipList") 判断是否有IP与地址映射缓存。 表达式:CommonUtils.cacheExists("ipList") 根据IP取出对应的详细地址:国家_省份_城市_运营商,例如“1xx.78.124.0”对应的地址为“中国_广东_深圳_电信”,取不到对应地址则默认“**_**_**_**”。如果需要,可通过StringUtil类表达式对地址进行进一步拆分。 表达式:CommonUtils.getMapValue(CommonUtils.ipToLong(value),CommonUtils.cacheExists("ipLis")?CommonUtils.getCache("ipLis"):CommonUtils.setCache("ipLis",HttpsUtils.downloadMap("url"))) 根据指定的偏移类型(month/day/hour/minute/second)及偏移量(正数表示增加,负数表示减少),将指定格式的时间转换为一个新时间,例如将“2019-05-21 12:00:00”增加8个小时。 表达式:DateUtils.getCurrentTimeByZone("yyyy-MM-dd HH:mm:ss",value, "hour", 8) 如果value值为空或者null时,则返回字符串“aaa”,否则返回value。 表达式:StringUtils.defaultIfEmpty(value,"aaa")
  • 约束限制 作业源端开启“使用SQL语句”参数时不支持配置转换器。 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列),则可以单击后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。 关系数据库、Hive、MRS Hudi及DLI做源端时,不支持获取样值功能。 SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datetime)。 当作业源端为OBS、迁移CSV文件时,并且配置“解析首行为列名”参数的场景下显示列名。 当使用二进制格式进行文件到文件的迁移时,没有配置字段转换器这一步。 自动创表场景下,需在目的端表中提前手动新增字段,再在字段映射里新增字段。 添加完字段后,新增的字段在界面不显示样值,不会影响字段值的传输,CDM会将字段值直接写入目的端。 如果字段映射关系不正确,您可以通过拖拽字段、单击对字段批量映射两种方式来调整字段映射关系。 创建表达式转换器时,表达式的功能是对该字段的数据进行处理,故不建议使用时间宏,如需使用,请根据以下场景处理(源端是文件类的配置时仅支持方式一): 方式一:新建表达式转换器时,表达式需要用''包围。 ${dateformat(yyyy-MM-dd)}不加引号使用时,解析成2017-10-16之后还会进行运算,将'-'识别为减号,导致结果为1991,须使用'${dateformat(yyyy-MM-dd)}',即'2017-10-16'。 图2 使用''包围表达式 方式二:源字段中新增自定义字段,在样值中填写时间宏变量,重新进行字段映射处理。 图3 源字段新增自定义字段 如果是导入到数据仓库服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列: 有主键可以使用主键作为分布列。 多个数据段联合做主键的场景,建议设置所有主键作为分布列。 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。
  • 约束与限制 仅DAYU Administrator、Tenant Administrator用户或者数据安全管理员可以创建、修改或删除密级权限管控策略,其他普通用户无权限操作。 密级权限管控仅支持对数据地图中已标记密级的字段在数据预览时进行权限管控,不支持对已标记密级的表进行权限管控。 用户/用户组和密级共同唯一标识一条密级权限管控策略,因此不支持创建同用户/用户组、同密级的策略。 同用户/用户组如果对应多个密级,则以最高密级为准进行密级权限管控。
  • 创建敏感数据管控策略 在DataArts Studio控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据安全”模块,进入数据安全页面。 图1 选择数据安全 单击左侧导航树中的“敏感数据管控”,进入敏感数据管控页面。 敏感数据管控页面的策略列表中,已有数据安全预置的默认策略,该策略默认给所有用户最大的密级访问权限。 图2 进入敏感数据管控页面 单击“新建”,新建密级权限管控策略页面,参数配置参考表1。 图3 新建密级权限管控策略参数配置 创建密级权限管控策略参数配置说明: 表1 配置策略参数 参数名 参数说明 *用户类型 选择为用户或用户组进行密级权限管控。 *用户名称 选择当前实例所有工作空间成员中的用户或用户组。 *密级 选择指定用户/用户组的指定密级,则指定用户/用户组仅能访问资产密级小于等于指定密级的资产。 *权限类别 当前仅支持数据地图中的数据预览权限。 单击“保存”,完成密级权限管控策略创建。 密级权限管控策略创建完成后,需要删除默认策略,以使新建的策略生效。
  • 创建数据识别规则 在DataArts Studio控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据安全”模块,进入数据安全页面。 图1 选择数据安全 在数据安全控制台左侧的导航树中单击“数据识别规则”,进入数据识别规则页面。 在“识别规则”页面单击“新建”,创建识别规则。 图2 新建识别规则 新建规则参数配置请参考表1,参数配置完成单击“确定”即可。 图3 规则配置 表1 配置识别规则参数说明 配置 说明 *规则类型 即规则所属分类,支持按模板添加内置规则和自定义规则。 *数据密级 对配置的数据进行等级划分。如果现有的分级不满足需求,请进入数据密级页面进行设置,详情请参见定义数据密级。 数据分类 对配置的数据进行分类划分。如果现有的分类不满足需求,请进入数据分类页面进行设置,详情请参见定义数据分类。 规则描述 对当前规则进行简单描述。 内置 *规则模板 规则类型选择“内置”,呈现此参数。 如果选择按模板添加,系统内置了70+条敏感数据识别和脱敏规则,可对个人敏感信息(手机号码、电话号码、银行卡、信用卡等)、企业敏感信息(财政资产信息、企业交付信息等)、密钥敏感信息(DSA密钥、RSA密钥等)、设备敏感信息(IPv4地址、IPv6地址等)、位置敏感信息(省份、城市、GPS位置、地址等)和通用敏感信息(日期)等敏感信息进行识别和脱敏。 *规则名称 规则类型选择“内置”,规则名称自动关联分类模板生成。 自定义 *规则名称 规则类型选择“自定义”,您可以自行填写分类名称,名称为必填项。建议包含规则含义,避免无意义的描述,以便于使用中能快速选择需要的规则。 说明: 定义数据识别规则,名称必须唯一。 *识别规则 规则类型选择“自定义”,呈现此参数,支持正则表达式。 当选择“无”,表示关联了该规则的敏感数据发现任务不生效。无法自动为数据资产分类,需要您手动添加分类。 *正则表达式 识别规则选择“正则表达式”时,呈现此参数。 内容识别:勾选此项后输入自定义正则表达式,该表达式将用于数据内容识别。内容识别正则表达式举例:“^男$|^女&”。 列名识别:勾选此项后输入自定义正则表达式,该表达式将用于字段名精确匹配和模糊匹配两种方式,当前支持多个字段匹配。列名识别正则表达式举例:“sex|gender”。 备注识别:勾选此项后输入自定义正则表达式,例如“.*comment.*”代表模糊匹配备注。
  • 相关操作 编辑识别规则:在识别规则页面,单击对应识别规则操作栏中的“编辑”,即可修改识别规则关联的密级、分类和描述。如果为自定义规则,还支持修改识别规则和正则表达式。 编辑识别规则状态:新增的识别规则默认为启用状态。当识别规则为关闭状态时,表示该规则将不可被添加到识别规则组。 需要修改识别规则状态时,在识别规则页面单击对应识别规则中的或,即可启用或关闭对应规则。 删除识别规则:在识别规则页面,单击对应识别规则操作栏中的“删除”,即可删除识别规则。当需要批量删除时,可以在勾选识别规则后,在列表上方单击“批量删除”。 注意,已在识别规则分组或脱敏策略中引用的识别规则无法删除。若要删除,需要先修改引用关系,再进行删除操作。 删除操作无法撤销,请谨慎操作。 测试内置规则模板:在“内置规则模板”页签可查看所有内置规则模板,并且根据输入的自定义样例数据,测试验证内置规则模板的识别结果。
  • 数据开发操作列表 云审计服务(Cloud Trace Service,简称CTS)为用户提供了云账户下资源的操作记录,可以帮您记录相关的操作事件,便于日后的查询、审计和回溯。 表1 支持云审计的关键操作列表 操作名称 资源类型 事件名称 创建作业 job createJob(api) 修改作业 job editJob(api) 保存作业 job saveJob 删除作业 job deleteJob 重命名作业 job renameJob 导入作业 job importPipeline/importJob(api) 导出作业 job exportPipeline/exportJob(api) 批量导出作业 job exportJobs(api) 提交作业版本 job addNewVersion 抢作业锁 job acquireEditLock 解作业锁 job releaseLock 批量解作业锁 job batchReleaseEditLock 测试运行 job testRun 执行调度 job startJob 执行调度 job startJobByName 停止调度 job stopJob 批量停止调度 job stopJobs 暂停调度 job pauseJob 作业复制另存为 job copyAndSaveJob 批量删除作业 job deleteDirectoryList 移动作业 job move 停止实例 task stopTask/stop(api) 强制成功实例 task forceTaskSuccess 继续执行实例 task continueExecute 重跑实例 task retryTask/restart(api) 节点暂停 task pauseJob 节点恢复 task resumeJob 节点手工重试 task redoJobs 节点跳过 task skipJob 节点强制成功 task forceJobSuccess 新建脚本 script addScript/createScript(api) 执行脚本 script executeScript 修改脚本 script saveScript/editScript(api) 导出脚本 script exportScripts 导入脚本 script importScript 脚本语法校验 script checkSyntax 提交脚本版本 script addNewVersion 抢脚本锁 script acquireScriptLock 解脚本锁 script releaseScriptLock 批量解脚本锁 script batchReleaseScriptLock 批量删除脚本 script deleteDirectoryList 移动脚本 script move 创建目录 directory createDirectory 修改目录 directory modifyDirectory 删除目录 directory deleteDirectoryByPath 移动目录 directory move 批量删除目录 directory deleteDirectoryList 创建数据连接 dataWarehouse createDataWarehouse 测试数据连接 dataWarehouse testDataWarehouseConnectivity 更新数据连接 dataWarehouse updateDataWarehouse 删除数据连接 dataWarehouse deleteDataWarehouse 导出数据连接 dataWarehouse exportConnection 导入数据连接 dataWarehouse importConnection 创建数据库 dataWarehouse createDatabase 更新数据库 dataWarehouse updateDatabase 删除数据库 dataWarehouse deleteDatabase 创建数据表 dataWarehouse createDataTable 更新数据表 dataWarehouse updateDataTable 删除数据表 dataWarehouse deleteDataTable 创建schema dataWarehouse createSchema 删除schema dataWarehouse deleteSchema 更新schema dataWarehouse updateSchema 创建通知 alarmRule createAlarmRules 创建并更新通知 alarmRule createAndUpdateAlarmRules 删除通知 alarmRule deleteAlarmRules 更新通知 alarmRule updateAlarmRules 创建资源 dataResource createResource 更新资源 dataResource updateResource 删除资源 dataResource deleteResources 导出资源 dataResource exportResource 导入资源 dataResource importResource 批量删除资源 dataResource deleteDirectoryList 新建标签 tag create 删除标签 tag delete 导出标签 tag exportJobTags OBS导入标签 tag importJobTag 本地导入标签 tag importJobTag2 保存环境变量 environmentVariable saveEnvParams 删除环境变量 environmentVariable deleteEnvParams 导出环境变量 environmentVariable exportEnvParams 导入环境变量 environmentVariable importEnvParams 更新空间配置项 workspaceConfig updateWorkSpaceConfigs 上传文件 file uploadFile 配置空间委托 agency saveAgency 保存敏感变量 sensitiveParam saveSensitiveParam 更新敏感变量 sensitiveParam updateSensitiveParam 删除敏感变量 sensitiveParam deleteSensitiveParam 新建cdm连接 createConnection cdmConnection 更新cdm连接 updateConnection cdmConnection 删除cdm连接 deleteConnection cdmConnection 发送httpTrigger消息 sendMessage httpTriggerMessage 父主题: 支持云审计的关键操作
  • 前提条件 元数据采集支持丰富的数据源类型,对于DWS、DLI、MRS HBase、MRS Hive、RDS(MySQL)、RDS(PostgreSQL)和ORACLE类型的数据源,首先需要在管理中心创建数据连接。如需采集其他数据源(如OBS、CSS、GES等)元数据,无需在管理中心创建数据连接。 采集Hudi元数据前,需要先在Hudi表开启“同步hive表配置”,然后才能通过采集MRS Hive元数据的方式采集Hudi表的元数据。
  • 操作步骤 在DataArts Studio控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据安全”模块,进入数据安全页面。 图1 选择数据安全 单击左侧导航树中的“数据访问审计”,进入审计日志页面。 图2 数据访问审计 您可以通过切换页签,查看不同数据源的审计日志。日志范围默认1小时,支持自定义时段查询,自定义时段时的最大查询时间间隔为一个月。 DWS审计日志:日志列表默认使用最新DWS数据连接。点击查看日志详情,可查看当前日志的全量信息。 DWS审计日志支持导出,单击“导出”后,会下载当前页的json数据。 图3 DWS审计日志列表 MRS Hive审计日志:MRS Hive日志列表默认不展示日志内容,而是支持根据配置条件进行检索,检索结果按照页签呈现,支持展示最多5个检索结果页签。 图4 MRS Hive审计日志列表 DLI审计日志:DLI日志列表默认展示日志信息。点击日志名查看日志详情,可查看当前日志的全量信息。 图5 DLI审计日志列表
  • 约束与限制 对于DWS数据源,未开启三权分立时,默认拥有SYSADMIN属性的用户可以查看审计记录;如果开启了三权分立,则只有拥有AUDITADMIN属性的用户才可以查看审计记录。因此需要保证数据连接中的账号或当前用户账号拥有上述权限(未开启权限应用前,使用数据连接上的账号查看审计记录;如果开启了权限应用,则使用当前IAM用户身份查看审计记录)。 MRS审计数据依赖cdm agent,确保cdm agent版本为HCS 8.3.1版本
  • 设置API分配配额 专享版集群创建成功后,需要设置API分配配额,当分配配额之后,才能创建相应的API,配额设置参考如下步骤。 在DataArts Studio“空间管理”页签中,单击工作空间操作列“编辑”。 图3 编辑空间管理 在“空间信息”中,单击“设置”按钮对已分配配额进行配置。 图4 设置已分配配额 数据服务专享版在每个DataArts Studio实例下具有创建10个专享版API免费试用额度,超出试用配额后会产生数据服务专享版API的费用,所创建的超出试用配额API按每天每个按1元收费。 设置专享版API已分配配额。 图5 设置配额 已分配配额不能小于已使用配额,不能大于总配额-总分配配额+已分配配额。
  • 设置日志转储 完成购买集群后,可以设置日志转储功能。开启后,集群中当前工作空间下API的所有访问日志,会转储到工作空间指定的OBS桶或者LTS日志中。 在集群页面单击集群名称,进入基本信息页签。 图6 基本信息 选择打开日志转储功能,选择转储方式,目前支持OBS和LTS两种方式。 图7 转储方式选择 当选择OBS存储,当前工作空间中API的所有访问日志,会转储到工作空间指定的OBS桶。 当选择LTS存储,在选择转储方式前,需要在LTS服务中提前新建日志组和日志流,如何新建日志组和日志流请参考云日志接入。选择后当前工作空间中API的所有访问日志,会转储到LTS服务新建的日志流中。
  • 网络环境准备 如图1所示,专享版集群创建后,资源位于资源租户区,由ELB统一对集群节点进行负载均衡。 用户可以通过两种途径访问集群: 内网地址:内网地址为用户VPC内的终端节点IP地址。 外网地址(可选):外网地址为绑定在ELB上的EIP地址。EIP仅在创建数据服务集群时,勾选开启公网入口,才会具备。 图1 专享版集群网络架构说明 因此,为了保证创建的专享版集群能够被用户访问,创建中需要注意如下网络配置: VPC 虚拟私有云。专享版实例需要配置虚拟私有云(VPC),在同一VPC中的资源(如ECS),可以使用专享版实例的私有地址调用API。 在购买时专享版实例时,建议配置和您其他关联业务相同VPC,确保网络安全的同时,方便网络配置。 弹性公网IP 专享版实例的API如果要允许外部调用,则需要购买一个弹性公网IP,并在购买时绑定给实例,作为实例的公网入口。 安全组 安全组类似防火墙,控制谁能访问实例的指定端口,以及控制实例的通信数据流向指定的目的地址。安全组入方向规则建议按需开放地址与端口,这样可以最大程度保护实例的网络安全。 专享版实例绑定的安全组有如下要求: 入方向:如果需要从公网调用API,或从其他安全组内资源调用API,则需要为专享版实例绑定的安全组的入方向放开80(HTTP)、443(HTTPS)两个端口。 出方向:如果后端服务部署在公网,或者其他安全组内,则需要为专享版实例绑定的安全组的出方向放开后端服务地址与API调用监听端口。 如果API的前后端服务与专享版实例绑定了相同的安全组、相同的虚拟私有云,则无需专门为专享版实例开放上述端口。 路由配置 在物理机纳管场景下,如果物理机纳管网段与集群网段不一致,需要配置路由。 进入集群“基本信息”页面,单击配置路由项的“新建”按钮,新增物理机的IP地址,如图2所示。 图2 基本信息
共100000条