2025中国互联网产业年会丨《中国互联网产业绿色算力发展倡议》正式发布
2025-02-07
美创用户专访 | 精细化管理:医疗行业数据分类分级的策略与实践
2025-01-10
容灾演练双月报|美创助力某特大型通信基础设施央企顺利完成多个核心系统异地容灾演练
2025-01-10
国家级|美创、徐医附院共建项目入选工信部《2024年网络安全技术应用典型案例拟支持项目名单》
2024-12-20
全球数据跨境流动合作倡议
2024-11-22
存储域
数据库加密 诺亚防勒索访问域
数据库防水坝 数据库防火墙 数据库安全审计 动态脱敏流动域
静态脱敏 数据水印 API审计 API防控 医疗防统方运维服务
数据库运维服务 中间件运维服务 国产信创改造服务 驻场运维服务 供数服务安全咨询服务
数据出境安全治理服务 数据安全能力评估认证服务 数据安全风险评估服务 数据安全治理咨询服务 数据分类分级咨询服务 个人信息风险评估服务 数据安全检查服务本文分析数据库国产化后的一个重要使用场景问题,即国产数据库的访问权限管控该如何设计才能做到在确保数据安全可靠的前提下又能尽可能方便用户使用。
数据库访问权限属于运维权力的一部分,权力跟责任总是要匹配的。有权力但不履行责任或者疲于履行责任,都属于权责失衡的表现。
数据库权限的责任包含:
对于责任 1 是运维的本职工作,受到领导的高度重视。通常都不会有问题,如果有问题那运维负责人必定是第一责任人被问责。
对于责任 2 和 3 ,也跟运维工作有关,实际执行效果在不同客户里不尽相同,反映了企业的科技力量建设成熟度。本文就是就这两点展开论述。
传统数据库运维下,数据库的访问都是通过堡垒机控制访问终端。访问终端包括 SSH 终端(有 Putty、XSHELL、Mabaxterm、SecureCRT、Remote Desktop 等)和数据库客户端终端(SQL Navicat、PLSQL Developer、DBeaver 等)。
堡垒机是访问的重要关卡。一般堡垒机账户到个人,也有的为了简单在多个人之间共用账户。堡垒机针对 SSH 终端有文字审计功能,针对图形化客户端有截屏审计。如果知道某个时间段有非法访问或操作,就事后查看堡垒机的审计记录。如果线索很少,基本上就是大海捞针。
SSH 终端也不是本文重点,就不展开说。数据库客户端终端通常是已经绑定了某个数据库的某个账户。每一个使用这个数据库客户端终端的都是使用同一个账户读写数据库。控制这一个账户的权限就能控制数据库的读写风险。此外,少数人如果有 SSH 终端权限,也可以直接在命令行下使用账户读写数据库。这个数据库账户可能是给到人的,也可能是共用的。
以上这个设计在安全上有一定的防护作用,但也有问题。问题包括:
堡垒机的管理权限在运维,权力在运维这边,出问题追责时,运维自然也难以豁免。于是一种极端的做法就是严格管控有堡垒机访问权限的人,对于非运维人员不允许或者尽可能少的访问生产环境堡垒机里的数据库终端或数据库客户端。至于这些人为什么要访问数据库,有什么需求就跟运维没有关系了。或者就直接说业务研发人员没有需求访问生产数据库。直接从源头上消灭这个问题。在管理学上,这叫“懒政”。
这种管理思想属于“收”或“堵”。业务应用在线上运行,应用出功能问题或者性能问题时,不可避免的就要访问数据库进行排查。如果把这个正常的需求给堵死了,虽然运维一方的安全问题风险是降低了,但业务研发方却会非常难受。站企业总体利益角度来说,这是有损的。
另外一种管理思想是“放”。把权限放出去。不同应用的数据库从服务器上就彼此隔离(很多是虚拟机)。每个业务应用的数据库的虚拟机访问权限(SSH 终端或者数据库客户端终端)权限都给到应用负责人。应用自己用,出问题自己负责(运维只负责最基础的数据库部署、监控、主备高可用、备份等)。放权,也释放一些不必要的责任。这个做法也有它的好处,组织运行效率更高,但是缺点也很明显。问题还是可能出了,只是跟运维无关。这就是敏感数据泄露的一个常见原因。
传统数据库安全产品里还有一类特殊的产品,在网络层面通过对数据库流量抓包来监控或拦截非法访问或操作。这个设计符合安全逻辑,也不跟其他堡垒机或数据库客户端产品、或者应用冲突,也很常用。这个方案本质上是一个网络流量监控方案(就跟我们都知道的那个防火墙设计一样)。为了能将报文内容跟实际数据库库表联系上,产品的使用还需要配置数据库实例信息。
实际部署使用的时候,对网络流量抓包对网络性能会有影响。所以这类产品会做一个旁路设计,会将数据库流量复制一份经过这个产品所在服务器网卡,然后进行分析。这就是旁路网络流量。如何确保无损。生活中我们遭遇过在某些偏僻地方贵重物品失窃或者发生交通事故,当要调监控的时候得到的答复是“真不巧,这几天的监控数据没有或者这个监控已经坏了很长时间”。旁路流量就可能有这个问题。它只能证明事件记录存在过,但是不能证明事件记录不存在过。当数据库规模很大的时候,要做到网络流量旁路,硬件上也要做相应的投入。这个投入随着业务的发展可能会出现“后劲不足”的地步。
流量旁路安全产品要解释报文内容必须跟数据库实例配合使用。它也不能阻止其他数据库访问通道。(所以产品受欢迎)。 它还会存在有些数据库的流量并不在监控范畴内。当然,它最大的问题依然是只能监控不能管控。技术上是能管控拦截,但没有人敢这么用,因为会降低数据库读写性能,引起其他人和应用的抵制。
有没有一种既能收拢权限保障数据安全又能方便用户使用的方案或产品?传统数据库的运维思想、生态产品都已经固化,不大可能会变革了。这种方案或产品只可能出现在国产数据库大兴的时代了。
数据库国产化,绝不仅仅是换个数据库那么简单。上下游的应用和相关人员都会受到影响。特别是应用研发人员,在数据库国产化项目中会非常被动。
具体体现在:
这些用法可能在传统数据库里用了很多次都没问题,到国产数据库下就有问题。虽然有些应用研发也很有探索精神,但国产数据库通常文档欠缺或质量不高,网上相关案例文章经验分享也很少,应用研发人员可以参考或者寻求帮助的途径非常有限。在有些客户项目里,很可能运维人员对国产数据库也是一知半解的情况,出现问题沟通效率非常低。此时就依赖国产数据库厂商原厂支持。
支持客户是原厂售后的职责,但是让客户满意却是可遇不可求的事情。因为客户非常多,每个客户的问题也非常多,大量问题涌来,原厂支持人员的支持力度很难跟上。态度好的,按部就班;客户第一的,疲于奔命。
如果是一个成熟的数据库,应用研发只要增删改查,都不会有问题。偶尔就是大批量数据查询和修改有些性能问题。但国产数据库虽然号称兼容传统数据库(MySQL、ORACLE 或 PostgreSQL),但深入使用又会发现还是有些不一样的地方。这个细节不一样是合理的,特别对于那些是完全自主研发的国产数据库,它只是功能接口兼容传统数据库,其底层原理完全是自主设计跟传统数据库的底层原理很可能完全不同。
所以深入使用国产数据库时,是需要结合应用和数据库的特点去重新设计优化的。把老的设计跑在新的国产数据库上,有问题是难免的。有些应用研发也能认识到这点,只是难度在于数据库的访问受限,导致有些时候没办法自主研究,不得不去找运维沟通,或者找厂商沟通。这就又回到第一个现象里。这个受限通常是在生产环境。
当然设计优化更应该是在开发测试环境就要解决的。开发测试环境数据库访问限制会少很多,很多时候都是直接给到客户端直接连接数据库权限。
这个客户端往往是传统的数据库客户端。如 SQL Navicat、DBeaver、MySQLBench 之类。这些传统的客户端强在数据库开发设计(如表结构设计、存储过程设计等),弱在问题诊断能力。曾经有款很好的传统数据库客户端 Toad(支持 MySQL/ORACLE/SQLServer/DB2等),内嵌了很多数据库诊断脚本和文档,可惜后来也没落了。其他客户端虽然没有多少诊断能力,并不妨碍应用研发分析数据库问题,因为传统数据库的生态很完善,很多问题在网上都有解决方案。而回到国产数据库则相反。还是同样的客户端,同样的用法,但是数据库会有新的问题,很多时候研发都想不明白到底是什么问题。关于这类项目经验说到具体的国产数据库,那说一天也未必能说得完,以后再另起一篇文章分析。
所以,国产数据库开发难问题,一部分跟国产数据库权限管控有关,一部分跟数据库产品功能成熟度和生态有关。
传统数据库换做国产数据库,可能应用也改造或者替换了。除此之外,人还是那些人。但从数据安全分析角度看,数据库国产化,不过就是“旧瓶装新酒”,面临的数据安全挑战一样没少,甚至更严峻。
国产数据库特别是分布式数据库,由于单机能力相比传统数据库单机能力要差一些,所以在规模上就远超传统数据库服务器规模。另外一个重要原因是互联网业务的发展促进数据规模和访问流量的高速增长。多方面因素使得运维人员现在要管控的国产数据库更多了。如果还是堡垒机加数据库客户端那种管理方式,其隐藏的安全风险可能会被进一步放大(窟窿更多了)。权力还是在运维手上没什么变化,责任风险更大了。权责不匹配,久而久之,总会出问题。
不过有些国产数据库出自互联网大厂,在内部的时候造就积累了这类问题的应对经验,很值得外部企业借鉴。蚂蚁集团自主研发的分布式数据库 OceanBase 以及其生态产品就是一个很好的学习例子。
OceanBase 基本占据了蚂蚁业务里关系数据库绝大部分市场,同时也进军了阿里集团原属于分布式 MySQL 数据库的业务板块(如高德、饿了吗业务等)。OceanBase 在蚂蚁和阿里集团的集群规模可以说非常庞大,其面临的数据安全挑战也就更大。
OceanBase 数据库的生态产品里有一款客户端产品 ODC,全名 OceanBase 开发者中心。最初目的就是降低 OceanBase 开发者使用门槛(这个开发者也包括蚂蚁内部用户),提升用户使用体验。翻译成大白话就是 OceanBase 早期出来的时候运维人员和开发人员都抱怨太难用了。即使是到现在,还有些客户在抱怨这点。其中有一部分原因还是传统的数据库安全管控方案。不过这里我们只说 OceanBase 产品自身的问题。
OceanBase 也从来没有回避过这些问题,而是积极的通过产品迭代去不断解决这类问题。如今在大部分客户的心智里,OceanBase 的运维平台 OCP 和开发者中心 ODC 是当之无愧的最好用的国产数据库生态产品。当然迭代快的另外一个问题就是解决老问题的同时可能引入新问题。这点瑕不掩瑜,是否升级客户自己抉择。OceanBase 产品研发团队也不回避这个问题,继续迭代
ODC 是如何解决前面提到的易用性和安全问题呢? 简单总结如下:
ODC 的数据安全应对思路就是通过堡垒机封堵其他数据库访问通道,所有人包括运维人员对数据库的读写访问都通过 ODC 。当然运维任务主要还是在 OCP 里完成,以及部分运维人员要登录数据库主机,这些访问权限就通过堡垒机控制,收敛到只有少数运维人员自己可以操作。
ODC 确实能降低 OceanBase 的使用门槛,且将数据库权限下放给业务研发人员又控制住了数据安全风险,是权责匹配的一个好的实现案例。有关 ODC 的详细介绍可以参考文末另外一篇文章。
ODC 是 OceanBase 的数据库堡垒机,这句话基本是对的。目前看 ODC 的发展也开始支持 ORACLE 、MySQL 和 PostgreSQL 的部分功能。ODC 能做这个的原理也是探索目标数据库的功能原理去适配实现相应 ODC 场景。
有些企业客户使用了多个国产数据库,比如说达梦、OceanBase、TiDB、TDSQL、GaussDB。ODC 就支持不了这么多了。且不论 OceanBase 团队会不会支持其他国产数据库,其他数据库厂商肯定不乐意支持 ODC 。
其他数据库厂商也解决不了这个通用性问题。
所以,国产数据库的数据安全问题的解决方案就最可能在第三方数据库生态公司落地实现。下面介绍的就是浙江云趣公司的数据库安全管控产品 QueryX 。
简单的总结,QueryX 功能包含:
QueryX 的安全管控也需要堡垒机封堵其他数据库读写渠道,同时也不能监控业务的操作记录。业务应用是合法的数据库访问途径,应用内部的数据安全风险问题必须通过应用自身的日志、权限管控和审计功能去解决。这点在某些行业里(如银行、证券)里显得尤为必要。
下面举一个使用场景例子。
某城市银行的很多应用都是外部开发商提供。外包开发人员过千人,每周的数据库变更任务成百上千。数据库涉及到 MySQL、TiDB、OceanBase。 这些数据库变更就是通过 QueryX 的工单系统去完成。平时的数据问题排查、数据导出,更是涉及到很多数据库。运维人员自身肯定没法一一管控到。借助于 QueryX,运维人员维护好实例后,还维护好对应的应用方负责人,有些工单审批也让应用负责人从业务层面参与把关,运维人员做最基础的检查。然后工单的执行由平台在自定义的时间(通常是晚上低峰期)去执行。这样两个运维人员就可以支持好几千人的研发团队的数据库需求。
有关 QueryX 的详细介绍可以参考文末链接。
最后,不得不补充一句,以上讨论的始终是技术层面的解决方案。国产数据库的数据安全关键还是相关责任人的思想。说通俗一点就是要有责任心,同时又要有为其他人提供更好服务的意愿,那么再搭配好的产品就是如虎添翼。否则,数据库国产化,旧瓶装新酒,继续沿用老的运维方式,只会让国产化之路更加坎坷或者充满风险。
此外,数据库权限的收与放还影响业务研发人员的数据库使用体验。特别是国产数据库,研发人员也是要从头学习,缺乏必要的权限也就限制了研发主动分析解决问题的能力。问题是会客观存在,并且会不断放大。问题最终会传递到运维端。解决问题效率低下对企业整体利益也是有损的。