摘要:23 年 10 月末至今,CloudQuery(简称"CQ") 已经在该公司内部稳定运行了 3 个多月,本文来自 CQ 社区用户秦钰杰的使用分享。作为负责公司内部系统和对外云平台站点的维护人员,他将会从运维的角度和大家来聊聊他的选型过程,以及 CQ 给他的工作带来哪些实质性的帮助。
我们公司成立于 2009 年,拥有员工数量超过 500 人,是一家集科研、服务、市场于一体的综合性生物科技企业,专注于新一代 DNA 高通量测序技术的应用和推广、生物信息分析、临床诊断试剂盒研发和转化医学研究。
在我们公司内部系统中,涉及多种主流数据库实例,如 MySQL、MongoDB、Redis 等,总计有几十个实例需要维护。由于这些数据库的数量和类型较多,管理起来变得非常繁,我们急需一款能够进行多种数据库管控的工具。
该工具需要帮助我们解决现有的痛点问题,简化数据库管理流程,提高效率和可靠性。并通过集中管理、统一界面和自动化操作等功能,使我们可以更轻松地管理和维护公司内部系统和对外云平台站点所涉及的各种数据库实例。
急需解决的问题
众所周知,一般涉及到多种数据库管控就会遇到各种各样的问题,比如不同类型的数据库可能具有不同的安全性特性,包括访问控制、加密和数据备份等;不同类型的数据库之间数据格式和结构不同;不同数据库之间存在着兼容性问题...伴随着数据库种类越来越多,这也就需要运维人员花费更多的时间和精力来维护和管理。
为提高数据库管理的效率和安全性,减轻运维人员的工作负担,并改善开发测试人员的工作体验。我们希望完善以下四个关注点:
- 多数据源管理: 我们希望开发一个统一的管理平台,支持多种数据库类型的管理。通过该平台,可以方便地添加、删除和管理各种数据库实例,减少运维人员的工作负担。同时,该平台还应提供统一的人员访问入口,确保只有授权的人员可以进行数据库操作,加强数据的安全性。
- 统一资源信息管理: 开发测试人员在使用数据库时经常需要查阅文档或咨询前辈来获取相关资源信息,如 IP、账号和密码等。我们希望将所有相关资源信息集中管理起来,使开发测试人员无需共用同一账号,提高工作效率。
- 权限分离和细粒度权限管控: 为了保护数据的安全性,我们需要实现数据库的权限分离和细粒度权限管控。通过该功能,可以对不同用户和角色设置不同的权限,确保每个人只能访问和操作其所需的数据库资源。同时,对用户的操作行为进行记录、审计和分析,以便及时发现和解决潜在的安全问题。
- 数据变更审批: 为了提高数据的安全性和准确性,我们希望实现数据变更的审批机制。普通开发人员无需通过私聊方式单独提交 SQL语句给小组组长执行,而是在管理平台中提交数据变更请求,并经过审批后执行。这将提高数据变更的可追溯性,降低出错的风险,并增加团队协作的效率。
选型调研
在选型过程中,我们也选择了几款数据库管理工具进行了调研,包括某公有云数据库管理平台、Yearning 和 Archery。我们从产品的功能、收费情况、产品依赖体系等方面进行了考量。
- 某公有云数据库管理平台: 提供丰富的数据库管理功能,需付费使用。但我们想脱离单一云的产品体系,想要看看有没有和该产品类似的,可以私有化部署的产品,于是放弃掉使用。
- Yearning: 开源产品,仅支持单个数据源,满足不了我们的需求,放弃。
- Archery: 开源产品,页面不太友好,我们当时测试的时候问题不断,放弃。
- CloudQuery: 商业化产品,支持多数据源管理、统一资源信息管理、权限分离和细粒度权限管控、数据变更审批等这些我们想要的功能,页面友好,还有社区提供帮助,并且可以私有化部署,满足了我们的需求。
最终选择了 CloudQuery,我们看中的功能主要有以下几个:
- 统一入口: CloudQuery 提供一站式数据库开发与运维平台,实现数据库访问入口统一、管理入口统一,对数据库访问行为进行统一、安全管控支持多种数据库类型,并且集中管理所有数据库的资源信息,包括 IP、账号和密码等。
- 权限管控: CloudQuery 使用自主研发的权限中间件,基于 RBAC 模型进行角色与权限管控,遵循权限最小化原则赋予不同人员不同的权限,实现数据库的权限分离和细粒度权限管控。
- 审计中心: CloudQuery 平台统一记录了所有用户对所有数据库的操作行为,并这些行为进行了统一的审计和分析,判断哪些行为是危险行为,哪些行为是越权行为,哪些行为是高性能消耗的。
- 数据变更: 针对普通用户在 CloudQuery 上使用数据库时发现的少量错误数据,可以发起数据变更申请,支持对订正语句进行 SQL 语法检查,数据订正复核方式支持同步复核和流程复核;针对升级以及大量数据变更任务,支持发起发布变更申请,申请过程中支持在模拟环境中先运行 SQL 文本。
初探 CloudQuery
在完成了前期调研后,我们开始对 CQ 进行接入测试。由于 CQ 主要应用在我们公司的内部系统,数据安全这一块并不是核心需要关注的内容。对我们来说,主要用到 CQ 的数据操作、 数据变更、审计分析模块。下面就针对我们用的三个模块进行简单的介绍:
数据操作 ...
CloudQuery 支持多种数据库类型,包括 MySQL、PostgreSQL、Oracle、SQL Server、MongoDB、Redis 等。我们通过 CQ 统一管理公司内部的所有数据库实例,包括创建、删除、修改、备份等。
a、可视化建模: 通过可视化界面,可以轻松地创建和管理数据库对象,如表、视图、索引等。直观的操作界面能够快速构建复杂的数据模型。
b、SQL 智能提示: 提供智能提示功能,根据用户输入的语句自动提示关键字、函数和表名等,帮助编写正确的 SQL 语句,减少语法错误和调试时间。
c、SQL 规范审核: 检测用户编写的 SQL 语句是否符合预定义的规范要求,如命名规范、注释规范等。通过规范审核,提高代码质量和可维护性。
d、统一授权体系: 通过统一的界面管理用户和角色的权限,灵活控制用户对数据的访问权限和操作权限。这种统一的授权管理机制简化了权限管理流程,提高了数据安全和管理效能。
数据变更 ...
目前所有的线上数据变更操作全部走的 CQ 审批单,在这里我可以看到全部的工单审批及执行情况,对线上SQL执行有全局的把握。
a、SQL检查: 检查用户已提交的 SQL 语句的语法、语义错误,帮助用户避免潜在的数据错误。
b、模拟环境执行: 提供模拟环境执行 SQL 语句以确保数据变更操作不会对生产环境造成影响。帮助用户在实际执行前进行风险评估,有效降低数据风险,提高安全性能。
c、自动备份: 支持四大数据源对 delete、update、drop、truncate 操作进行数据备份并提供闪回,确保数据的安全性和可靠性。
审计分析 ...
通过审计分析模块来对开发操作记录审计,出现问题可以追溯。在 CQ 审计分析模块中,提供审计概览、对象审计、用户审计、和操作明细等功能,通过上卷下钻观察数据,也可以针对对象进行审计。以层次结构的方式浏览数据,使我们全面的了解系统性能和审计用户操作。
a、审计概览: 提供了系统整体的概览信息和总操作数据,包括用户操作量、SQL 执行、高危操作等内容。通过可视化的图标和统计数据,可及时发现潜在安全风险。
b、对象审计: 提供对系统各项操作的记录和定位查询功能。用户可以根据操作类型,数据源类型,操作对象,时间范围等条件进行审计查询,对审计结果支持导出和下载。
c、用户审计: 用于跟踪和记录用户的操作行为,包括客户端IP、账号状态、在线时长、所属部门等操作。用户可了解账号的历史操作,从而实现对用户操作的全面审计。
d、操作明细: 提供对数据库操作的详细记录,包括执行的 SQL 语句、执行时间、执行结果、影响条数、错误信息等信息,用以追踪特定操作的执行过程,定位问题并进行故障排除。
分享一下使用 CQ 小 Tips:
在 SQL 编辑区进行数据操作的时候,经常会写一大坨难以记住的 SQL 语句,可以将此语句保存下来,以便下次直接执行。 SQL 编辑区提供的快捷键列表挺方便的,程序员通过这些快捷键,可以更高效地进行 SQL 编辑和操作,提升了工作效率。
CQ 使用体验
通过使用 CQ 后,我们成功地简化了多数据库实例的管理,实现了统一管控,并提高了安全性和可追溯性。CQ 在多数据库类型、权限分离、审计等方面的功能让我们更好地管理公司内部系统和对外云平台站点所涉及的各种数据库实例。
- 简化了数据库管理流程: 以前需要在不同的机器上管理不同的数据库,需要记住许多机器及密码,容易出错。使用 CQ 后,我只需要在一个平台上就可以管理所有数据库,操作简单,不易出错。
- 提高了数据库管理效率: 以前新来的开发人员需要查阅文档或咨询前辈才能找到所需的数据库资源信息。使用CQ后,我可以通过 CQ 直接开通账号,一个平台管理所有数据库,不需要再去提供各个数据库的账号及密码,提高了工作效率和安全性。
- 加强了数据安全性: 以前需要对不同用户分配不同的权限,开了各种各样的账号。使用 CQ 后,我可以根据用户的角色和职责分配不同的权限,确保数据只被授权人员访问和操作,一个账号解决了所有问题。
- 提高了数据变更的可追溯性和安全性: 以前数据变更的流程不规范,SQL语句传来传去容易出错,使用CQ 的数据变更审批以及审计功能,帮助我提高了数据变更的可追溯性和安全性。这样,我可以追溯数据变更的审批过程,确保数据变更是合规的。
- 在此过程中我们也遇到了一些使用上的问题,比如版本升级的时候遇到的报错提示、权限配置 ... 这些问题在技术交流群中都能得到快速响应。
对 CQ 的建议
- 由于在 CQ 系统内部只能设置一个连接接管理员,如果管理员没有办法及时进行审批,其他人就要一直等待,直到审批结束。能否调整成设置 2 个或者 2 个以上管理员备份。
- 目前我们只能看通过看 WEB 界面上的通知来获取消息提醒,这就需要研发人员需要实时关注 WEB 控制台,能否将企业办版的功能进行开通,钉钉进行打通。使社区版用户能够第一时间获取到消息通知。
- 从数据库安全性能来说,是否能对数据操作模块进行限制查询,比如:用户长时间执行 SQL 会导致数据库 IOPS 升高影响业务
- 对于变更的 SQL 需要进行安全约束,比如,在提交数据变更审批后,在 SQL 预检时需要判断 SQL 是否合规,有没有安全隐患,提前进行提醒。
- 未来我也希望能够进一步利用 CQ 的功能,提高数据库管理效率和安全性,并持续探索 CQ 在其他方面的应用,例如数据保护等。此外,在 24 年我们计划将数据库全面接入 CQ 。
也希望 CQ 提供更全面好用的 SQL 审核功能(数据变更中 SQL 预检功能不够友好),和更多数据库监控功能,例如数据库性能监控、数据库异常报警等。总体来说,我对 CQ 非常满意。CQ 是一款功能强大、易用、安全的数据库管理工具,能够满足不同用户的需求。
关于 CloudQuery
CloudQuery 是一款面向企业的云原生一体化数据库管控平台。致力于为开发者、数据资产管理者等技术人员,打造一个一站式安全可控的数据操作平台,CloudQuery 赋予用户仅通过一个 web 浏览器,即可实现数据安全访问、数据分析治理、数据脱敏等各类复杂场景的能力。
备注:上文中提到的部分建议已经纳入到社区版的排期中,还有一些功能 CQ 企业版目前已经支持。欢迎大家进入 CQ 官网进行验:www.cloudquery.club/home。 如果在产品功能或使用上有什么问题,欢迎大家进行反馈,一起加入到 CQ 的建设中来!