作者:柳遵飞
在应用程序中,访问数据库几乎是必须的,是实现业务功能的基础普遍场景,应用程序访问数据库,需要设置数据库的地址,端口,账号及密码。密码的安全性非常重要,业界密码泄漏导致资损的事件时有发生,根据相关统计,单次泄漏事件的发生平均导致488万美元(约合人民币3542万元),每条泄漏的数据记录平均导致169美元(约合人民币1226元),除了直观的资金损失外,对企业的形象和舆论也会造成不良影响。
国家在2019年颁布了《国家安全二级等保等保2.0标准(GB/T 22239-2019)》,明确了对于不同类型的企业所需要实现的安全防护等级,特别是涉及银行,金融类的企业IT系统中存储的业务数据涉及大量的个人敏感数据,这些数据泄漏往往直接造成经济损失,高级别的合规性要求,深刻影响着企业运营和社会稳定。
Nacos是国内被广泛使用的IT系统应用的配置中心,对于线上的IT系统应用,我们可以从多个方面来提升应用访问数据库帐密的安全性,比如增加密码的强度,帐密统一管理,设置访问权限,帐密传输加密等等,可以参考 《Nacos安全零信任》以及《Spring Cloud+Nacos+KMS 动态配置最佳实践》。
Nacos可以统一托管应用程序中的配置参数,并且从访问控制,传输安全,存储安全三个方面的措施有效降低帐密泄漏的风险,但是没有解决以下两个方面的问题:
在应用侧访问数据库通常会结合各类应用侧数据库连接池框架,比如HikariCP,Apache Druid, C3P0等,除了连接数据库的地址及帐密之外,还可以设置应用侧连接池大小,超时时间等参数,以实现业务系统可用性和性能的最大化。
为了解决上一节中提到的两个问题,MSE Nacos联合阿里云密钥管理服务KMS,开源数据库连接池框架Druid以及开源Spring Cloud Alibaba社区推出了面向应用侧的数据源运行期动态轮转方案。
可以根据上图中的数字代表的步骤顺序了解整体的工作流程。
其中各个组件的职责如下:
1. 提供应用侧数据源配置的统一管理平台
2. 整合KMS实现帐密->应用侧配置的转化
3. 提供数据源配置的运行期推送的基础能力
以上方案实现了:
当帐密泄露后,线上应用帐密的切换时间由之前的数小时优化到只需一秒!相比之前重启替换小时级别,大大提升安全性和效率.
动态数据源接入方案无代码侵入性,全程 0 代码改造,详细接入步骤请参照官方文档:《MSE Nacos数据源管理》
除了支持运行期更新帐密功能外,同时也支持数据库连接池大小,超时参数,数据库地址及数据库名的动态更新。可以实现运行期调整连接池性能以及切库等高阶功能。
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 官网
https://nacos.io
[2] Nacos Github 主仓库
https://github.com/alibaba/nacos
[3] 生态组仓库
https://github.com/nacos-group
[4] Spring Cloud Alibaba
https://sca.aliyun.com/docs/2023/user-guide/nacos/quick-start/
Nacos 多语言生态仓库:
[1] Nacos-GO-SDK
https://github.com/nacos-group/nacos-sdk-go
[2] Nacos-Python-SDK
https://github.com/nacos-group/nacos-sdk-python
[3] Nacos-Rust-SDK
https://github.com/nacos-group/nacos-sdk-rust
[4] Nacos C# SDK
https://github.com/nacos-group/nacos-sdk-csharp
[5] Nacos C++ SDK
https://github.com/nacos-group/nacos-sdk-cpp
[6] Nacos PHP-SDK
https://github.com/nacos-group/nacos-sdk-php
[7] Rust Nacos Server
https://github.com/nacos-group/r-nacos
推荐阅读:
《MSE Nacos:解决敏感配置的安全隐患》
《Nacos 配置中心变更利器:自定义标签灰度》
《Nacos+Langchain大模型参数及promot托管》
《Nacos 开源 MCP Router,加速 MCP 私有化部署》