0 代码改造实现应用运行时数据库密码无损轮转

作者:柳遵飞

一、敏感数据的安全风险

在应用程序中,访问数据库几乎是必须的,是实现业务功能的基础普遍场景,应用程序访问数据库,需要设置数据库的地址,端口,账号及密码。密码的安全性非常重要,业界密码泄漏导致资损的事件时有发生,根据相关统计,单次泄漏事件的发生平均导致 488 万 美元(约合人民币 3542 万 元),每条泄漏的数据记录平均导致 169 美元 (约合人民币 1226 元),除了直观的资金损失外,对企业的形象和舆论也会造成不良影响。

数据参考《IBM发布的第19期年度数据泄露成本研究报告》

国家在 2019 年颁布了《国家安全二级等保等保2.0标准(GB/T 22239-2019) 》,明确了对于不同类型的企业所需要实现的安全防护等级,特别是涉及银行,金融类的企业 IT 系统中存储的业务数据涉及大量的个人敏感数据,这些数据泄漏往往直接造成经济损失,高级别的合规性要求,深刻影响着企业运营和社会稳定。

二、如何降低账密泄漏风险

Nacos 是国内被广泛使用的 IT 系统应用的配置中心,对于线上的 IT 系统应用,我们可以从多个方面来提升应用访问数据库帐密的安全性,比如增加密码的强度,帐密统一管理,设置访问权限,帐密传输加密等等,可以参考 《Nacos安全零信任》以及《Spring Cloud+Nacos+KMS 动态配置最佳实践》。

Nacos 可以统一托管应用程序中的配置参数,并且从访问控制,传输安全,存储安全三个方面的措施有效降低帐密泄漏的风险,但是没有解决以下两个方面的问题:

  • 帐密人工维护:运维人员需要将账密手动设置在 nacos 加密配置中,过程中人为的参与带来了泄漏的隐患。
  • 运行期轮转成本高 :当帐密泄漏时替换的成本较大,需要创建新帐密,并且在应用程序中重启替换,时间和人力消耗巨大,具体的修复时间和应用集群规模相关,通常需要数小时才能完成,当集群规模达到 100+ 时,修复时间更长,另外大批量的应用重启可能会带来稳定性风险。

三、不重启应用实现密码无损轮转

在应用侧访问数据库通常会结合各类应用侧数据库连接池框架,比如 HikariCP,Apache Druid,C3P0 等,除了连接数据库的地址及帐密之外,还可以设置应用侧连接池大小,超时时间等参数,以实现业务系统可用性和性能的最大化。

为了解决上一节中提到的两个问题,MSE Nacos 联合阿里云密钥管理服务 KMS,开源数据库连接池框架 Druid 以及开源 Spring Cloud Alibaba 社区推出了面向应用侧的数据源运行期动态轮转方案。

可以根据上图中的数字代表的步骤顺序了解整体的工作流程。

其中各个组件的职责如下:

  1. MSE Nacos-动态配置中心

a. 提供应用侧数据源配置的统一管理平台

b. 整合 KMS 实现帐密->应用侧配置的转化

c. 提供数据源配置的运行期推送的基础能力

  1. Spring Cloud Alibaba-开源应用侧框架

a. 整合 nacos-client 和 druid 组件协作,屏蔽接入复杂性

b. 配置化接入数据源 druid 以及配置变更时触发 druid 数据源运行时轮转

  1. Apache Druid-开源应用侧数据库连接池

a. 应用程序内数据库连接池统一管理,支持运行时连接池大小,超时等参数调整

b. 运行时动态刷新,实现旧帐密连接->新帐密连接的优雅刷新,保证业务无损。

c. 运行期异常保护,比如错误帐密,错误地址的预检,保证存量连接稳定。

  1. KMS-阿里云密钥管理服务

a. 提供数据源底层加密配置的加密和解密服务b. 提供云上数据库的账号密码托管和定时轮转功能c. 帐密泄漏时可进行帐密立即轮转,实现一键快速止损

以上方案实现了:

  • 加密配置统一托管 :应用程序侧访问数据库的配置统一加密存储在 Nacos 中。
  • 帐密全托管:KMS 实现了对数据库实例账号密码的全托管。
  • 双层权限管控:应用程序侧对加密配置的查询及加密进行双层权限认证。
  • 帐密秘文存储及传输:在全链路中明文只存在于应用内存中,存储和传输中均为加密配置。
  • 运行时无损轮转:当数据库帐密变更时,应用侧实时感知并且连接优雅切换。

当帐密泄露后,线上应用帐密的切换时间由之前的数小时优化到只需一秒!相比之前重启替换小时级别,大大提升安全性和效率。

动态数据源接入方案无代码侵入性,全程 0 代码改造,详细接入步骤请参照官方文档:《MSE Nacos数据源管理》

help.aliyun.com/zh/mse/user...

除了支持运行期更新账密功能外,同时也支持数据库连接池大小,超时参数,数据库地址及数据库名的动态更新。可以实现运行期调整连接池性能以及切库等高阶功能。

四、Nacos+KMS+X 数据源类通用解决方案

MSE Nacos + KMS +Druid 的方案实现了数据库帐密的运行期动态轮转,未来 MSE Nacos 和 KMS 会对接更多的数据源类的组件,比如 NoSql (Redis/Tair),MQ(RocketMQ,Kafka),ScheduleX,OSS 等,以下是将数据库 druid 泛化为通用组件X的架构图,除了进行帐密的托管及动态轮转之外,面向应用侧会进行组件初始化及轮转的逻辑封装,实现 0 代码改造、配置化接入,降低应用侧的复杂性。

Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的体现,也是必经之路,Nacos 提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。当前正在加速迈向 AI 时代,AI 领域的安全问题也同样重要,比如 Agent 访问大模型 LLM,MCP Server 的配置也同样面临传统微服务应用中类似的安全性和易用性问题,Nacos 会全面拥抱 AI 时代,面向应用侧提供一站式安全-易用-稳定的服务,配置,AI Registry 平台。

相关链接:

1\] Nacos 官网 *[nacos.io](https://link.juejin.cn?target=https%3A%2F%2Fnacos.io "https://nacos.io")* \[2\] Nacos Github 主仓库 *[github.com/alibaba/nac...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Falibaba%2Fnacos "https://github.com/alibaba/nacos")* \[3\] 生态组仓库 *[github.com/nacos-group](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group "https://github.com/nacos-group")* \[4\] Spring Cloud Alibaba *[sca.aliyun.com/docs/2023/u...](https://link.juejin.cn?target=https%3A%2F%2Fsca.aliyun.com%2Fdocs%2F2023%2Fuser-guide%2Fnacos%2Fquick-start%2F "https://sca.aliyun.com/docs/2023/user-guide/nacos/quick-start/")* **Nacos 多语言生态仓库:** \[1\] Nacos-GO-SDK *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fnacos-sdk-go "https://github.com/nacos-group/nacos-sdk-go")* \[2\] Nacos-Python-SDK *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fnacos-sdk-python "https://github.com/nacos-group/nacos-sdk-python")* \[3\] Nacos-Rust-SDK *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fnacos-sdk-rust "https://github.com/nacos-group/nacos-sdk-rust")* \[4\] Nacos C# SDK *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fnacos-sdk-csharp "https://github.com/nacos-group/nacos-sdk-csharp")* \[5\] Nacos C++ SDK *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fnacos-sdk-cpp "https://github.com/nacos-group/nacos-sdk-cpp")* \[6\] Nacos PHP-SDK *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fnacos-sdk-php "https://github.com/nacos-group/nacos-sdk-php")* \[7\] Rust Nacos Server *[github.com/nacos-group...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnacos-group%2Fr-nacos "https://github.com/nacos-group/r-nacos")* **推荐阅读:** 《[MSE Nacos:解决敏感配置的安全隐患](https://link.juejin.cn?target=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUzNzYxNjAzMg%3D%3D%26mid%3D2247560684%26idx%3D1%26sn%3Dedad3ba00700c7a7848631c1571771ba%26chksm%3Dfae7e623cd906f35dbf754daef77f5b60e6963f7f15f14ce337cadbb5e3c70d69a898e82846e%26scene%3D21%23wechat_redirect "http://mp.weixin.qq.com/s?__biz=MzUzNzYxNjAzMg==&mid=2247560684&idx=1&sn=edad3ba00700c7a7848631c1571771ba&chksm=fae7e623cd906f35dbf754daef77f5b60e6963f7f15f14ce337cadbb5e3c70d69a898e82846e&scene=21#wechat_redirect")》 《[Nacos 配置中心变更利器:自定义标签灰度](https://link.juejin.cn?target=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUzNzYxNjAzMg%3D%3D%26mid%3D2247569459%26idx%3D1%26sn%3D4ea86a4aaae62d470f806580e609f85c%26scene%3D21%23wechat_redirect "https://mp.weixin.qq.com/s?__biz=MzUzNzYxNjAzMg==&mid=2247569459&idx=1&sn=4ea86a4aaae62d470f806580e609f85c&scene=21#wechat_redirect")》 《Nacos+Langchain大模型参数及promot托管》 [developer.aliyun.com/article/166...](https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.aliyun.com%2Farticle%2F1660070 "https://developer.aliyun.com/article/1660070") 《[Nacos 开源 MCP Router,加速 MCP 私有化部署](https://link.juejin.cn?target=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUzNzYxNjAzMg%3D%3D%26mid%3D2247574770%26idx%3D1%26sn%3Df975121e36eb751a7659a66f42cbac04%26scene%3D21%23wechat_redirect "https://mp.weixin.qq.com/s?__biz=MzUzNzYxNjAzMg==&mid=2247574770&idx=1&sn=f975121e36eb751a7659a66f42cbac04&scene=21#wechat_redirect")》

相关推荐
子恒200524 分钟前
警惕GO的重复初始化
开发语言·后端·云原生·golang
Serverless社区1 小时前
亚太唯一!阿里云Serverless计算产品进入Forrester领导者象限
阿里云·云原生·serverless·函数计算
野生技术架构师2 小时前
微服务循环依赖调用引发的血案
微服务·云原生·架构
容器魔方2 小时前
HDC 2025丨华为云开源专题论坛,携手开发者迈向AI时代
云原生·容器·云计算
阿里云云原生2 小时前
活动邀请 | SECon 全球软件工程技术大会深圳站将于6月20—21日举办!
云原生
阿里云云原生3 小时前
警惕日志采集失败的 6 大经典雷区:从本地管理反模式到 LoongCollector 标准实践
云原生
文艺倾年3 小时前
【八股消消乐】构建微服务架构体系—一致性抽象
微服务·云原生·架构
阿里云云原生4 小时前
AI 播客 + AI 博客,Nacos3.0 首个线下沙龙回顾总结(附 PPT 下载链接)
云原生
_板栗_7 小时前
k8s中pod有哪些状态?
云原生·容器·kubernetes