全部产品

结构设计

更新时间:2020-08-28 18:06:53

背景

结构设计工单一般会涉及到多个实例,例如测试环境中进行结构设计,生产环境中发布这样的经典流程。因此结构设计安全规则中的基础配置项设计规则风险识别规则会使用变更基准库(测试环境中的库)关联的安全规则。

说明:

  • 设计规则包含保存编辑,校验表头保存编辑,校验字段保存编辑,校验索引。如下图所示:
    设计规则
  • 风险识别规则包含控制新建表风险控制修改字段风险控制修改索引风险控制SQL执行风险。如下图所示:
    风险识别规则

而审批流程则使用生产环境中数据库的安全规则。例如:某个结构设计工单发布到B数据库,则使用B实例的安全规则。

基础配置项

结构设计有多个基础配置项:

  • 开启非对等发布:结构设计一直以来都只能对等发布,即A表的变更内容只能发布到另一个库的A表中。开启非对等发布后,允许用户打破表名的限制,任意指定发布目标表。

    注意:风险较大,仅限特殊场景使用,请谨慎开启。

  • 研发流程:结构设计安全规则中最重要的配置,它决定了一个结构设计工单整个流程的所有环节。配置内容说明如下:
    配置内容 说明
    步骤 分为设计发布两种节点。
    • 设计节点:默认节点,无法移除。决定结构变更任务在哪一种环境下设计。
    • 发布节点:在设计阶段完成变更后,将流程推进到发布阶段发布变更。您可添加多个发布节点。
    节点名称 自定义节点的名称,最大支持10个字符。
    库环境 决定当前节点在哪个环境下执行。
    执行策略
    • 立即:任务在审批通过之后会立即执行。
    • 定时:可指定任务的发布时间。(在发布时间之前通过审批,任务会在指定的时间执行,否则发布任务被中断,不会执行。)
    可回退 决定发布任务是否支持回退到设计节点。
    可跳过 决定是否可跳过当前步骤。
    锚点 标识了工单编辑的冻结点,即锚点所在步骤成功发布之后,无法再对表结构进行编辑,工单变成已发布状态。
    操作 可以根据需求移除发布节点。
  • 字段类型配置:配置新增字段中允许使用的数据类型。
  • 索引类型配置:配置新增索引中允许使用的数据类型。
  • 建表模板:配置建表模板,新建表将默认加载配置好的模板。(建表模板不是强制性规范,用户建表时可根据实际情况进行修改。)
  • 禁止修改原有字段数据类型:决定在变更原表时,是否禁止修改原有字段的数据类型。
  • 禁止删除原有字段:决定在变更原表时,是否禁止删除原有字段。(删除原有字段风险较大,建议开启。)
  • 禁止原有字段重命名:决定在变更原表时,是否禁止重命名原有字段。(重命名原有字段风险较大,建议开启。)
  • 表字符集许可配置:配置新建表时允许使用的字符集范围。(如:utf8、utf8mb4。)
  • 结构设计默认审批模板:当审批规则校验检测点未配置审批规则时,结构设计工单默认采用该审批模板。您可以通过切换审批模板来更改默认审批模板的审批流程。操作流程请参见修改默认审批模板操作步骤
  • 已发布时工单自动推进到结束状态:开启后,研发流程中锚点所在节点成功执行变更后,系统会自动将工单推进到结束状态。(要求锚点必须在研发流程中最后一个发布节点上。)

检测点

结构设计有两个流程:

  • 保存编辑流程:对应如下三个检测点,依次对表头、字段、索引进行相关规范的检测。
    • 保存编辑,校验表头
    • 保存编辑,校验字段
    • 保存编辑,校验索引
  • 变更执行流程:对应如下五个检测点,前四个检测点用来识别DDL变更的风险,最后一个检测点用来指定每一个风险对应的审批流程。
    • 控制新建表风险
    • 控制修改字段风险
    • 控制修改索引风险
    • 控制SQL执行风险
    • 审批规则校验

以上流程中均内置了大量的安全规则模板,您可以直接使用这些模板,也可以自定义新增规则。详细操作步骤请参见新增规则操作步骤

因子和动作

  • 因子:因子是系统内置变量,可用来获取安全规则校验的上下文信息,如获取SQL类型、影响行数等。因子全部以@fac.开头,后接因子名称。每个模块的不同检测点均提供不同因子,结构变更中提供因子的说明请参见下表:
    因子名 说明
    @fac.table_kind 工单中编辑的表的种类。值:
    • new:新建表
    • old:原有表
    @fac.column_kind 表结构里面字段的种类。
    • new:新增字段
    • old:原有字段
    @fac.xxxx_old 从原有字段和索引中获取值进行对比。
    @fac.column_is_primary 判断字段是不是主键列。
    • true:主键中的列
    • false:非主键中的列
    @fac.column_type_support_default 判断当前字段的数据类型是不是支持设置默认值。
    • true:支持
    • false:不支持
    例如:CHAR类型支持设置默认值,TEXT类型不支持。
    @fac.index_kind 表结构中索引的种类。
    • new:新增索引
    • old:原有索引
    @fac.index_column_count 索引包含的字段个数。
    @fac.change_type DDL执行的数据库识别出的字段、索引变更类型。
    • add:新增
    • modify:修改
    • delete:删除
    @fac.altered_table_size 被修改表的大小。(单位:MB)
    @fac.online_execute 识别变更是否能ONLINE执行。
    • true:ONLINE
    • false:非ONLINE
    @fac.change_risk_level 变更风险级别。
    • high:高风险
    • middle:中风险
    • low:低风险
    @fac.env_type 环境类型,值是环境标识。如:DEVPRODUCT。更多环境类型请参见实例环境说明
  • 动作:动作是满足if条件之后系统执行的行为,比如:禁止提交工单、选择工作流、允许执行、拒绝执行等,这些动作表达了安全规则的主要目的。动作全部以@act.开头,后接动作名称。每个模块的不同检测点均提供不同动作,结构设计中提供动作的说明请参见下表:
    动作名 说明
    @act.block_submit 在保存表阶段使用,阻断提交并显示错误信息。用法:@act.block_submit '阻断的理由'
    @act.show_warning 在保存表阶段使用,显示警告信息(不阻断提交)。用法:@act.show_warning '警告的内容'
    @act.mark_middle_risk 在风险识别阶段使用,标记为中风险。用法:@act.mark_middle_risk '理由'
    @act.mark_high_risk 在风险识别阶段使用,标记为高风险。用法:@act.mark_high_risk '理由'
    @act.forbid_submit_publish 在设置审批流程阶段使用,阻断变更执行。用法:@act.forbid_submit_publish '理由'
    @act.do_not_approve 指定审批模板ID。详情请参见设置审批流程
    @act.choose_approve_template
    @act.choose_approve_template_with_reason

模板库

安全规则提供了大量的规则模板可直接选择启用,也可以在模板基础上按照实际需求自行调整启用。结构变更中的模板如下所示:

检测点 模板
保存编辑,校验表头 新建表,禁止表名为关键字
新建表,限制表名长度
新建表,表必须填写备注
新建表,限制表名全部小写
新建表,必须要有主键(PK)
新建表,必须要有唯一键(PK/UK)
索引数量合理性约束(过多时警告用户)
新建表,校验某些字段是否存在
保存编辑,校验字段 新增字段,禁止字段名为关键字
新增字段,字段必须填写备注
新增字段,限制字段名大小写
原有表新增非空字段必须明确指定默认值
原有字段,可空改为非空必须明确指定默认值
限制新增主键字段必须是整数类型
新建表要求所有字段不能为可空
新增字段,限制char类型长度
新增字段,限制varchar类型长度
保存编辑,校验索引 新增索引,禁止索引名为关键字
新增索引,限制索引名大小写
新增索引,限制Unique索引名格式
新增索引,限制Normal索引名格式
新增索引,限制FullText索引名格式
新增索引,限制Spatial索引名格式
限制新增主键字段个数
限制新增索引字段个数
控制新建表风险
控制逻辑表分表数量
控制表主键
控制表索引总数量
控制修改字段风险 控制删除字段
控制新增字段数据类型
控制重命名字段
控制修改字段数据类型
控制修改索引风险 控制删除主键
控制删除索引
控制主键更改为索引
控制修改主键包含列
控制修改普通索引
控制新增索引类型
控制SQL执行风险 控制核心实例风险
控制表存储引擎
控制锁表/大表变更风险
审批规则校验 禁止执行任何DDL变更到数据库
禁止执行任何DDL变更到生产库
设置测试库执行DDL变更免批
设置生产环境按风险级别审批

修改默认审批模板操作步骤

  1. 登录数据管理DMS控制台
  2. 在页面顶部的导航栏中,单击系统管理 > 安全管理 > 安全规则
    新增安全规则
  3. 安全规则页签中,单击目标规则集右侧操作列中的编辑
  4. 详情页面左侧的导航栏中,单击结构设计
  5. 结构设计页签中,单击基础配置项
  6. 单击数据变更默认审批模板右侧操作列的编辑
    修改默认审批模板-结构设计
  7. 在弹出的编辑配置项页面中,单击切换审批模板
  8. 选择目标模板名称右侧操作列的选择

    说明:您也可以单击重置为免审批,使工单跳过审批步骤。

  9. 单击提交

新增规则操作步骤

  1. 登录数据管理DMS控制台
  2. 在页面顶部的导航栏中,单击系统管理 > 安全管理 > 安全规则
    新增安全规则
  3. 安全规则页签中,单击目标规则集右侧操作列中的编辑
  4. 详情页面左侧的导航栏中,单击结构设计
  5. 结构设计页签中,单击操作右侧的新增规则
    新增安全规则-结构设计
  6. 新增规则 - 结构设计对话框中,设置如下参数:
    参数 说明
    检测点(必选) 选择需要增加规则的检测点。结构设计中提供了多个检测点,详情请参见检测点
    模板库(可选) 安全规则模板库中提供了大量规则模板,选择了检测点以后,您可以从模板库中按需加载规则模板。可选的模板库列表请参见模板库
    规则名称(必填) 自定义规则名称。(如您在模板库中选择了规则模板,此处会自动填充。)
    规则DSL必填 填写规则DSL,DSL语法请参见安全规则DSL语法(如您在模板库中选择了规则模板,此处会自动填充。)
  7. 单击提交
  8. 新增的规则默认处于已禁用状态,单击规则右侧操作列中的启用
  9. 在弹出的对话框中单击确认