您可以在DMS中通过SQL Console直接输入SQL语法或通过数据变更工单提交数据变更。同时,您可以自定义安全规则,实现对不同环境库定义不同的数据变更执行配置。本文将通过以下4个例子向您介绍典型场景下的安全规则设定与对应提交数据变更的方式。
注意事项
poc_dev
实例的安全规则为POC开发库规则
。poc_prod
实例的安全规则为POC生产库规则
。
通过提交工单执行数据变更
本示例以提交工单的方式执行INSERT
语句。
- 设置安全规则。说明 默认的安全规则规定以工单的方式执行所有DML(Data Manipulation Language)语句。
- 执行
INSERT
语句。- 以普通用户账号登录DMS控制台。
- 在DMS对象列表中展开
poc_prod
实例,双击poc_prod
数据库,即可进入SQL Console页。 - 在SQL Console窗口中,输入如下语句单击执行。
往数据库中插入3行数据。
INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','男'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','女'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','男');
- 单击申请数据变更。
说明 由于默认的安全规则规定了
INSERT
语句不能在SQL Console直接执行,而是通过提交数据变更工单的方式执行数据变更,所以系统提示需要提交数据变更工单。 - 在创建SQL变更工单弹窗中,配置如下信息。
配置项 说明 原因类别(必选) 根据实际情况选择数据导入的原因。 业务背景(必选) 详细填写本次操作的业务背景。 相关人(可选) 被设置的人员可查看工单并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。 执行方式(必填) 选择审批通过后,提交者执行(默认),同时还支持: - 审批通过后,自动执行
- 最后审批人执行
影响行数(必填) 预估本次更新会影响的数据行数,可在SQL Console以 count
统计。回滚SQL(选填) 可直接执行的SQL语句,变更脚本对应的逆向脚本。 - 单击确认,此时系统将自动生成工单,继续单击查看工单。
- 在工单详情页中,再次确认工单详情信息。
说明 您可以在工单详情页中,查看工单的详情信息,同时系统也会对将要执行的SQL进行执行前的预检查,包括SQL语法解析、安全规则中的SQL类型校验、工单提交人的权限检查、预计检查扫描行数等。
- 确认信息无误且预检查通过后,单击提交审批,并等待审批完成。说明
- 在提交审批前,您可以修改工单内容和定时配置,一旦提交审批后,将不能修改相关信息。
- 关于审批的操作详情请参见审批数据变更工单。
- 您可以在审批页签下,单击查看审批详情查询审批进度。
- 待审批通过后,单击执行变更,配置如下信息,单击确定执行。
配置项 说明 是否立即执行 选择是否立即执行,支持: - 立即执行:提交即刻执行。
- 定时执行:按需指定在业务特定时间执行。
是否事务控制 选择是否开启事务控制,支持: - 开启:遇到失败则全部回滚(仅限DML,DDL不在范围内)。
- 关闭:逐条提交,遇到失败则终止但不回滚。
是否备份数据 选择是否备份数据,支持: - 开启:针对
UPDATE、
DELETE
语句将要影响数据,系统生成对应的INSERT
脚本附件,对原数据进行备份。 - 关闭:不生成备份附件。
说明 在创建工单时,若执行方式选择为审批通过后,自动执行,系统会自动跳过此步骤。 - 系统将自动执行,工单结束。
待执行成功后,您可通过单击详情按钮,查看执行日志详细,包括执行语句、执行所用时间、调度详情等信息。
设置开发库可免工单执行DML语句
若开发库的数据变更均需提交工单执行,会导致开发人员研发效能下降。您可以通过DMS内置的安全规则引擎,设置允许研发人员直接在SQL Console对开发库执行DML语句,且不需要提交工单审批,即可实现在不影响数据安全的情况下提升研发效能。
本示例将在SQL Console对开发库执行INSERT
语句。
- 设置安全规则。
- 以管理员账号登录DMS控制台。
- 在顶部菜单栏,选择系统管理 > 安全管理 > 安全规则,进入安全规则页面。
- 单击
POC开发库规则
右侧操作列下的编辑。 - 在详情页左侧的导航栏中,单击SQL变更,并单击SQL执行规则。
- 找到允许所有DML在SQL控制台直接执行规则名,单击右侧的编辑。
- 替换如下规则DSL,并单击提交。
if @fac.sql_type in [ 'UPDATE','DELETE','INSERT','INSERT_SELECT','REPLACE','REPLACE_INTO','MERGE'] AND @fac.env_type not in ['product','pre'] then @act.allow_execute_direct elseif @fac.sql_type in [ 'UPDATE','DELETE','INSERT','INSERT_SELECT','REPLACE','REPLACE_INTO','MERGE'] AND @fac.env_type in ['product','pre'] then @act.allow_submit end
说明 您可以在DMS中将数据库定义成多种环境类型,例如生产环境(product
)、预发环境(pre
)、开发环境(dev
)、测试环境(test
)等。该段安全规则DSL表示:数据库环境类型不为product
或pre
的数据库可以直接执行UPDATE
、DELETE
、INSERT
等上述DML语句,数据库环境类型为product
或pre
的数据库需要通过提交工单执行上述DML语句。更多安全规则语法介绍请参见安全规则DSL语法。 - 启用允许所有DML在SQL控制台直接执行规则,并禁用与其对应的原规则。说明
- 与允许所有DML在SQL控制台直接执行规则对应的规则为禁止所有DML在SQL控制台直接执行,必须以工单方式执行规则。
- 若同时启用相对应的一组规则,系统将执行严管控原则。在本示例中,即会以工单的方式执行。
- 执行
INSERT
语句。- 以普通用户账号登录DMS控制台。
- 在DMS对象列表中展开
poc_dev
实例,双击poc_dev
数据库,即可进入SQL Console页。 - 在SQL Console窗口中,输入如下语句并单击执行。
往数据库中插入1行数据。
INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','男'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','女'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','男');
- 单击确认。
单击确认后,系统执行SQL语句,流程结束。
设置生产库的高风险SQL需提工单
DMS安全规则引擎可以根据SQL类型设置不同的审批流程。例如生产库中,DELETE
语句会造成数据丢失,安全风险相对较大,可以为其设置更严格的审批流程,确保数据安全。接下来的示例将会演示如何将DELETE
语句的审批流程配置为数据Owner+DBA,并提交数据工单申请。
- 设置审批流程。
- 以管理员账号登录DMS控制台。
- 在顶部菜单栏,选择系统管理 > 安全管理 > 审批流程。
- 单击新增审批模板。
- 配置如下信息,单击提交。
参数名称 说明 模板名称 审批模板名称。 备注 审批模板的备注信息。 审批节点 单击增加节点增加审批节点。审批顺序从小到大,例如:0为第一位审批节点,1为第二位审批节点。 说明 本示例为先由数据Onwer进行审批,再由DBA进行审批。单击提交后,审批流程页将新增一个审批模板,本示例中模板ID为
770096
。
- 设置安全规则。
- 以管理员账号登录DMS控制台。
- 在顶部菜单栏,选择系统管理 > 安全管理 > 安全规则。
- 单击
POC生产库规则
右侧操作列下的编辑。 - 在详情页左侧的导航栏中,单击SQL变更。
- 单击风险识别规则,并单击操作右侧的新增规则。
- 在新增规则 - SQL变更对话框中,配置如下信息,单击提交。
配置项 说明 检测点(必选) 选择风险识别规则,同时系统还支持其他三个检测点: - SQL执行规则
- 风险审批规则
- 批量数据导入规则
模板库(可选) 系统会在不同的检测点下提供大量规则模板,详细请参见SQL变更。 说明 本示例为手动输入DSL语法。规则名称(必填) 创建规则名称为 生产环境,DELETE语句为高风险操作
。规则DSL(必填) 输入如下规则DSL。 if @fac.env_type in ['product','pre'] and @fac.sql_type in [ 'DELETE'] then @act.mark_risk 'high' '高风险:线上环境,生产环境, DELETE语句为高风险操作' end
- 在安全规则详情页,单击生产环境,DELETE语句为高风险操作规则右侧的启用按钮,并单击确认。
说明 单击确认后,该条安全规则会立刻生效,即所有
DELETE
语句都会被识别成高风险操作。 - 单击风险审批规则,并单击高风险审批流程右侧操作列下的编辑。
- 将高风险审批流程中审批流程修改为
770096
,并单击提交。即选择步骤1中创建的模板ID为
770096
的审批流程。 - 单击高风险审批流程规则右侧的启用按钮,并单击确认。
- 执行
DELETE
语句。- 以普通用户账号登录DMS控制台。
- 在DMS对象列表中展开
poc_prod
实例,双击poc_prod
数据库,即可进入SQL Console页。 - 在SQL Console窗口中,输入如下语句并单击执行。
查询
data_modify
表,可以看到3条初始化数据。SELECT * FROM `data_modify` ;
- 在SQL Console窗口中,输入如下语句并单击执行。
删除1行数据。
DELETE FROM data_modify WHERE id = 1;
- 单击申请数据变更。
说明 根据安全规则的设定,生产库中执行
DELETE
语句属于高风险操作,需要提交工单且需要经数据Owner与DBA的审批才可执行。 - 在创建SQL变更工单弹窗中,配置如下信息。
配置项 说明 原因类别(必选) 根据实际情况选择数据导入的原因。 业务背景(必选) 详细填写本次操作的业务背景。 相关人(可选) 被设置的人员可查看工单并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。 执行方式(必填) 选择审批通过后,提交者执行(默认),同时还支持: - 审批通过后,自动执行
- 最后审批人执行
影响行数(必填) 预估本次更新会影响的数据行数,可在SQL Console以 count
统计。回滚SQL(选填) 可直接执行的SQL语句,变更脚本对应的逆向脚本。 - 单击确认,此时系统将自动生成工单,请继续单击查看工单。
- 在工单详情页中,确认工单详情信息。
说明 您可以在工单详情页中,查看工单的详情信息,同时系统也会对将要执行的SQL进行执行前的预检查,包括SQL语法解析、安全规则中的SQL类型校验、工单提交人的权限检查、预计检查扫描行数等。
- 确认信息无误且预检查通过后,单击提交审批,并等待审批完成。说明
- 在提交审批前,您可以修改工单内容和定时配置,一旦提交审批后,将不能修改相关信息。
- 在工单中,您还可以查看审批详情与进展,可以看到该条变更的审批节点由数据Owner与DBA组成,本示例中数据Owner和DBA为同一位。关于审批的操作详情请参见审批数据变更工单。
- 待审批通过后,单击执行变更,配置如下信息,单击确定执行。
配置项 说明 是否立即执行 选择是否立即执行,支持: - 立即执行:提交即刻执行。
- 定时执行:按需指定在业务特定时间执行。
是否事务控制 选择是否开启事务控制,支持: - 开启:遇到失败则全部回滚(仅限DML,DDL不在范围内)。
- 关闭:逐条提交,遇到失败则终止但不回滚。
是否备份数据 选择是否备份数据,支持: - 开启:针对
UPDATE
、DELETE
语句将要影响数据,系统生成对应的INSERT
脚本附件,对原数据进行备份。 - 关闭:不生成备份附件。
说明 在创建工单时,若执行方式选择为审批通过后,自动执行,系统会自动跳过此步骤。 - 系统将自动执行,工单结束。
待执行成功后,您可通过单击详情按钮,查看执行日志详细,包括执行语句、执行所用时间、调度详情等信息。
设置生产库禁止执行TRUNCATE语句
DMS安全规则引擎可以根据SQL类型设置不同的执行路径。TRUNCATE
语句会直接清空表中所有的数据,一般在生产库中是不会执行的,如果执行的话会造成大量数据丢失的问题。您可以通过安全规则引擎禁止TRUNCATE
语句执行。接下来的示例将会演示如何在安全规则中设置禁止执行TRUNCATE
语句,并提交TRUNCATE
语句进行验证。
- 设置安全规则。
- 以管理员账号登录DMS控制台。
- 在顶部菜单栏,选择系统管理 > 安全管理 > 安全规则。
- 单击
POC生产库规则
右侧操作列下的编辑。 - 在详情页左侧的导航栏中,单击SQL变更,并单击SQL执行规则。
- 找到允许TRUNCATE在SQL控制台直接执行规则名,单击右侧的编辑。
- 将规则名修改为
禁止TRUNCATE执行
,并替换如下规则DSL,并单击提交。if @fac.sql_type in ['TRUNCATE'] then @act.forbid_execute end
说明 该段安全规则DSL表示:禁止执行TRUNCATE
语句(禁止SQL Console直接执行与提交工单执行)。更多安全规则语法介绍请参见安全规则DSL语法。 - 单击禁止TRUNCATE执行规则右侧的启用按钮,并单击确认。
- 在SQL Console执行
TRUNCATE
语句。- 以普通用户账号登录DMS控制台。
- 在DMS对象列表中展开
poc_prod
实例,双击poc_prod
数据库,即可进入SQL Console页。 - 在SQL Console窗口中,输入如下语句并单击执行。
删除
data_modify
表。TRUNCATE TABLE `data_modify`;
说明 根据安全规则的设定,系统禁止执行TRUNCATE
语句。
- 提交数据工单执行
TRUNCATE
语句。- 以普通用户账号登录DMS控制台。
- 单击顶部导航栏的数据方案 > 数据变更 > 普通数据变更。
- 配置如下信息,并单击提交申请。
参数名 说明 数据库(必填) 选择 poc_prod
库。原因类别(必填) 选择数据变更的原因,方便后续查找。 业务背景(必填) 详细描述变更原因或目标,减少沟通成本。 变更相关人(选填) 设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。 执行方式(必填) 选择审批通过后,提交者执行(默认),同时还支持: - 审批通过后,自动执行
- 最后审批人执行
影响行数(必填) 预估本次更新会影响的数据行数,可在SQLConsole以 count
统计。变更SQL(必填) 输入如下 TRUNCATE
语句。TRUNCATE TABLE `data_modify`;
回滚SQL(选填) 可直接执行的SQL语句,变更脚本对应的逆向脚本。 - 提交工单后,系统显示预检查失败。说明 根据安全规则的设定,系统禁止执行TRUNCATE语句。
在文档使用中是否遇到以下问题
更多建议
匿名提交