阿里云-dms使用规范
数据管理DMS 是一种集数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化和服务器管理于一体的数据管理服务。—— 阿里云
为什么选择DMS
- [网络] UAT 及 PROD 环境隔离,办公网段无法访问直接访问
- [开发] 无论在家or公司,无需登录堡垒机、无需接触数据库账号,可以直接查询、增删改数据(通过工单)
- [DBA] 支持钉钉审批、支持自定义流程、支持多种类型数据库、完善的用户授权体系、可杜绝线上数据被篡改
- [审计] 强大的SQL审核及安全审计功能,完全满足外部审计需求
- [安全] 可实现敏感数据管理,防止泄露,保护公司核心数据财产
[TOC]
dms简介
dms使用
- 阿里云dms入口:https://dms.aliyun.com/new
- 访问dms之前,必须先申请一个阿里云RAM子账号,请发申请邮件给 DBA 并抄送双方主管,邮件格式如下:
邮件标题: 申请阿里云ram子账号
邮件收件人: DBA
邮件抄送: 申请人主管, DBA主管
邮件正文: 因 xxx,现需要申请一个ram子账号访问阿里云dms服务,请帮忙开通。
- DMS适用范围:MySQL、Redis、Mongodb、SQL Server、PostgreSQL、ADB
查询数据
权限申请
- 登录新版DMS控制台,依次点开:安全与规范 - 权限 - 申请权限,选择 库-权限
- 只是查询数据的话,建议申请只读实例,以减少对主实例的压力
- 只是查询数据的话,权限类型只选择"查询"权限即可
- 权限期限不得超过6个月(到期可再申请),特殊情况除外
- 根据最小化、按需申请原则,不允许申请整个实例
sql窗口查询数据
- 查询数据超过200条则必须申请工单并经过库owner审批,超过1000条的敏感数据则必须加签审计同事
- 导出sql有未命名的字段必须使用as别名,比如:
select left(remark,7), tag_sourceId from tag_bind where TypeId=2 and is_del=0
变更数据
权限申请
- 可参考查询数据的权限申请,权限类型勾选:变更 即可。
提交工单变更数据
- 若要变更数据,需先申请 [主库] 的 [变更] 权限,再提交 [普通数据变更工单]。
注:申请了变更权限不代表就可以直接修改数据,在dms窗口执行update会弹出提交工单提示。
- 提交普通数据变更,请务必填写 [回滚SQL],以便变更异常后快速回滚;
- 针对且仅限 UPDATE/DELETE 工单,在最后一步执行的时候会有一个“是否备份数据”的按钮,勾选它就会自动备份(如要回滚,可点开此工单下载备份数据),若跳过校验、dml夹杂ddl、begin...end则不会备份。
- 提交普通数据变更,注意 [执行方式] 的区别:
- [审批通过后,提交者执行(默认)] 即 工单审批通过后,仍需要提交者点执行才会执行变更
- [审批通过后,自动执行] 即 工单审批通过后sql会自动执行,无需提交者介入
- [最后一个审批人执行]
- MySQL的大表DML/DDL推荐使用[无锁变更]
说明:
1.无锁变更会自动拆分用户的单条SQL,然后分批执行,因此不保证原始SQL的事务性
2.支持无锁结构变更和无锁数据变更
3.仅支持MySQL,不支持MSSQL/Oracle
适用场景:
1.目标表为大表,且更新语句不走索引,避免长时间锁表
2.历史数据清理/备份大量数据/单条SQL事务太大,超过binlog限制
dms策略及限制
- 单次查询最大返回行数 200,超过200则必须走工单
- 禁止全表UPDATE执行
- 禁止全表DELETE执行
- 不允许TRUNCATE在SQL控制台直接执行
- 审批流程:申请人-->库Owner-->DBA
目前库Owner设置多人,任意一个响应就可以到下一个节点。最多可以设置三个。
工单审批
- 若为库owner角色,则会涉及到工单审批,可参考如下:
- 利用钉钉app审批工单,请参考:https://help.aliyun.com/document_detail/145348.html
实际存在的问题
- 办公网断与生产、UAT环境的网络未隔离;
- 绕过dms,通过ecs、堡垒机使用应用账号直连数据库;
- 不符合规范的工单,比如建表、全表更新等;