数据库DevOps:我们如何提供安全、稳定、高效的研发全自助数据库服务-iDB/DMS企业版

  1. 云栖社区>
  2. 博客>
  3. 正文

数据库DevOps:我们如何提供安全、稳定、高效的研发全自助数据库服务-iDB/DMS企业版

数据管理dms 2017-10-09 19:45:42 浏览3623
展开阅读全文

数据管理DMS企业版地址:https://dms.aliyun.com/

阿里云数据管理DMS 企业版已于2017.7.18正式发布,一期我们提供MySQL、ORACLE、SQLServer、PostgreSQL、Mongo这几种数据库类型的数据管理服务,支持RDS、ECS自建、其他公网自建类型,支持经典网络、VPC网络,提供实例管理、用户管理、任务管理、安全规则、操作审计、权限管理、数据查询、数据变更/数据订正、数据导出、库表同步、SQL审核/sqlreview等功能。


DMS企业版在集团内部产品代号为iDB,是阿里巴巴集团从2010年开始逐步积累迭代出来的研发全自助数据库服务平台。
      从最初解决数据安全访问诞生一个简单的查询页面(2011,iDB1.0时代-提升数据安全),到解决变更在线提交、满足既定设计规范的研发全自助线下表结构设计(2012,iDB2.0时代-解决变更在线化),再到sqlreview、研发有限自助变更线上、DMS个人版的上线(2013-2015,iDB3.0时代-提升研发效率),再到规则引擎、工作流引擎、任务调度引擎、CloudDBA、研发全自助变更(2016,iDB4.0时代-灵活、智能管控最大化提升研发效率);
      iDB在阿里内部不断完善,服务于内部几万用户每天各种各样的数据库研发使用的同时;2017年产品提出正式云化为云上广大中小企业提供成熟的企业数据库管理服务。

我们的目标是:
  • 赋能研发全自助的数据库研发设计能力,提升企业的研发效率(不再因为集中管控人员瓶颈导致项目延期);在满足既定规范内全自助设计与变更,同时辅助CloudDBA性能诊断与优化让研发主动优化改造问题SQL、回收碎片空间、建立合适索引、删除无效索引提升研发的数据库专业技能
  • 解放传统DBA的人肉操作,使其可以将精力转向诸如数据库架构设计等领域深挖;管理员、DBA轻松管理全局,只需要事先制定研发设计规范、研发流程即可轻松管理大批量实例的使用
  • 数据分级、权限管控、操作审计、安全规则、访问IP白名单等一系列解决方案进一步提升企业的数据安全

以下是产品内部分主要功能的详细讲解介绍:

普通使用

  • 权限管理
    • 支持库、表、列三种对象粒度申请,列是指表上打标为敏感或机密的字段(即数据分级管控)
      • 库权限包含有库下所有表含后续新增表的非敏感机密字段的权限
      • 表权限仅包含表上非敏感机密字段的权限
      • 权限申请对应的审批流程由管理员、DBA在【安全规则】按需实例级别进行指定配置
    • 支持查询、导出、变更三种权限类型申请
      • 导出、变更,是指可以提交对应的工单;并非直接执行对应操作
    • 支持指定有效期,到期自动失效
    • 数据owner可以随时查看对应库、表的权限开通情况进行回收或者追加授权
    • 申请者本人也可以随时查看所开通权限情况进行主动释放或者续期申请
  • 数据查询 
    • 开通“查询”权限后可以进行对应库、表的结构、数据等进行查询
      • 全局单次查询返回行数有上限限制(默认200,由管理员按需调整;但不建议过大,过大可能会造成页面卡顿)
      • 每人每天查询返回行数有上限限制(默认20000,由管理员按需调整)
      • 每人每天查询次数有上限限制(默认2000,由管理员按需调整)
      • 实例级别可指定查询超时时间(默认60,由管理员、DBA按需调整)
      • 全局禁止大表全表扫描查询(默认10G,由管理员按需调整)
      • 允许执行的SQL类型由管理员、DBA在【安全规则】按需实例级别进行指定配置
    • 查询已经显示在页面的结果可导出excel、txt或insert脚本格式
    • 逻辑库下对逻辑表配置路由算法可自动路由查询返回结果
  • 数据变更/数据订正
    • 开通“变更”权限后可以进行对应库、表的结构与数据等进行变更
      • 工单提交时
        • 会校验语法正确性(不正确则阻断不能提交)
        • 会校验影响行数(可以与预期影响行数进行对比,不一致场景要注意SQL逻辑是否正确书写)
      • 工单执行时
        • 支持立即执行、指定时间执行(定时调度)
        • 支持工单级别开启事务(不开启默认串行执行,遇到失败则终止不回滚;开启则遇到失败会全部回滚)
        • 支持备份(默认开启,对update、delete语句影响的整行记录进行insert脚本的全备;如果变更不符合预期时可快速download附件进行恢复操作)
      • 允许执行的SQL类型、不同需求对应工单的审批流程由管理员、DBA在【安全规则】按需实例级别进行指定配置
    • 安全管控
      • 串行调度:多人同时发起同一个实例的不同变更需求时,串行调度避免任务造成过大负载影响业务正常运行
      • 并发检测:执行任务前会探测目标实例的繁忙程度,活跃会话超过指定阀值则退出休眠5秒再重新尝试;重试5次仍然繁忙则退出失败
      • 执行间隔:每个SQL执行完根据SQL类型以及影响行数进行对应的间隔再调度下一条SQL,防止主备复制延迟
      • 锁检测:在执行DDL语句时还会额外检测元数据锁,设置获取等待时长超过则重试直至获取到才执行DDL语句;重试5次仍然繁忙则退出失败
  • 数据导出
    • 开通“导出”权限后可以进行对应库、表的数据等进行导出
      • 工单提交时
        • 会校验语法正确性,仅支持select(不正确则阻断不能提交)
        • 会校验影响行数(可以与预期影响行数进行对比,不一致场景要注意SQL逻辑是否正确书写)
      • 工单执行时
        • 可选择excel、csv、insert脚本三种格式
        • 默认按照数据库字符集导出,部分场景库表字符集不一致可以指定表的字符集避免乱码
        • 审批通过后24小时内要完成导出,24小时内可反复导出
        • 导出成功后可直接下载最后一次成功的结果集(下载文件距离最后一次导出时间必须是一个月内)
      • 不同需求对应工单的审批流程由管理员、DBA在【安全规则】按需实例级别进行指定配置
  • 库表同步
    • 开通源库的“查询”权限、目标库的“变更”权限后可以进行对应源库与目标库表结构的对比与同步
    • 支持结构同步、空库初始化、表一致性修复三种常见场景
      • 结构同步:源库表、目标库表,对比进行新建表或者修改表达到与源库表一致结构(表数量1:1对应)
        • 适用于测试环境变更同步到其他环境,如生产环境发布等
      • 空库初始化:将源库表结构完整拷贝至目标库
        • 适用于多套环境的搭建,如测试环境搭建等
      • 表一致性修复:将源库表、目标苦逼,对比进行新建表或者修改表达到与源库表一致结构(表数量1:N对应)
        • 适用于分库分表场景下,分表结构一致性的保障check
    • 不同需求对应工单的审批流程由管理员、DBA在【安全规则】按需实例级别进行指定配置
  • SQL审核/sqlreview
    • 开通“查询”权限后可以进行对应库表代码内增删改查访问SQL进行审核
      • 审核的是增删改查的SQL,非DDL语句
      • 主要审核SQL语法书写是否正确、合规
        • 不通过场景:存在`select * `、动态SQL、SQL注入写法
        • 通过场景:SQL语法正确并且执行计划可以走上索引、执行计划走不上索引(会主动建议添加合适的索引,确保每个经过审核后上线的SQL都能有索引可走)
      • java语言:支持Ibatis、Mybatis两种格式的附件
      • 其他语言:需要将代码中的增删改查SQL按照模板整理后提交附件
      • 不同需求对应工单的审批流程由管理员、DBA在【安全规则】按需实例级别进行指定配置
    • 属于应用发布前的事前管控,限制选择的数据库是非生产环境(测试阶段结构已经变更,但线上结构是发布后才变更的)

系统管理

  • 实例管理
    • 目前支持类型
      • 支持MySQL、ORACLE、SQLServer、PostgreSQL、Mongo几种数据库类型
      • 支持RDS、ECS自建数据库、其他公网自建数据库
      • 支持经典网络、VPC网络
    • 实例级别灵活设置进行管理:查询超时时间、导出超时时间、运维负责人/DBA、【安全规则】
    • 默认会在注册时自动采集实例上schema、表、字段、索引等相关元数据提供普通使用的权限管理及数据分级依据,也可以主动触发增量的同步
    • 对于不需要使用的实例可以进行禁用或者删除:如大促期间禁用某个实例避免非生产服务压力
    • 在授权后,可以自动同步当前账号下购买的rds实例列表;但正式使用需要完善相关信息测试账号可用后进行保存
    • 与所有传统工具不一样,管理员一次录入后所有用户通过产品内各模块权限管控访问数据库表;所有用户不再接触数据库账号密码,即使人员流动账号也没有频繁修改更新的烦恼
  •  用户管理
    • 目前支持阿里云平行账号、主子账号两种形式
    • 对于主子账号,在主账号作为管路员时可以一键同步所有关联的子账号
    • 对于不需要使用的账号可以“禁用”
  • 任务管理
    • 所有从普通使用各个模块产生的变更SQL任务均会记录在此模块
    • 管理员、DBA也可以直接对目标库表进行SQL变更(DML、DDL)任务的部署,区别在工单提交有对应流程审核管控;后台部署因为人员有限可控所以无流程管控
    • 任务的执行的安全管控策略,同【数据变更/数据订正】的“安全管控”一致
  • 安全规则
    • 由审批节点、审批流程线、安全规则依次组成
      • 审批节点:默认的有管理员、DBA(跟随实例走)、数据owner(跟随数据库、表走)三个节点,其他可以按需自定义;如安全管理员、测试负责人、研发负责人等
      • 审批流程线:默认有5个组合好的流程线,单向逐一通过处理;同一个节点多个人时任意一个审批通过即通过
      • 安全规则:默认有3个组合好的安全规则,高、中、低;可以按照业务实际需要组合新的安全规则或调整已有规则的审批流程达到根据不同的业务重要程度及所处阶段灵活管控不同的变更需求
      • 81136847bba10f37ae7cfeb5e03eaa06fbf014b2
  • 操作审计
    • 平台上产生的所有用户操作都会详细记录,管理员可以便捷的查看、溯源
      • 某个用户某段时间做了哪些操作、针对某个模块做了哪些操作等
      • 某个数据库、表,在某段时间被做了哪些操作、在某个模块内做了哪些操作等
  • 访问IP白名单
    • 对于每个企业都是独立的一套企业版部署,管理员在加入企业的员工、企业的数据库后,可以决定是否开启访问IP白名单限制
      • 限制:仅在指定的服务器ip发出的请求才能登录使用DMS企业版,对于企业宽带运营商有固定的ip出口,可由管理员进行配置
    • 在访问安全上DMS企业版做了四层管控:
      • 1)阿里云账号、密码正确性校验
      • 2)DMS企业版对应本企业员工校验:确保本企业员工才可使用
      • 3)DMS企业版访问IP白名单校验:确保办公网内才可使用(规避员工流失未及时清理禁用账号的潜在风险、员工账号被外部非法盗用的潜在风险)
      • 4)目标库表操作权限的校验(产品内体系化保障,规避员工接触数据库账号密码要频繁变更维护的风险与投入)

在以上这些主要功能之外,我们也提供如owner管理、代码生成器、配置管理、我的SQL、逻辑库逻辑表等诸多功能服务。


入口:
     数据管理DMS企业版地址:https://dms.aliyun.com/



网友评论

登录后评论
0/500
评论