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

2 Nacos Github 主仓库

github.com/alibaba/nac...

3 生态组仓库

github.com/nacos-group

4 Spring Cloud Alibaba

sca.aliyun.com/docs/2023/u...

Nacos 多语言生态仓库:

1 Nacos-GO-SDK

github.com/nacos-group...

2 Nacos-Python-SDK

github.com/nacos-group...

3 Nacos-Rust-SDK

github.com/nacos-group...

4 Nacos C# SDK

github.com/nacos-group...

5 Nacos C++ SDK

github.com/nacos-group...

6 Nacos PHP-SDK

github.com/nacos-group...

7 Rust Nacos Server

github.com/nacos-group...

推荐阅读:

MSE Nacos:解决敏感配置的安全隐患

Nacos 配置中心变更利器:自定义标签灰度

《Nacos+Langchain大模型参数及promot托管》

developer.aliyun.com/article/166...

Nacos 开源 MCP Router,加速 MCP 私有化部署

相关推荐
鹤落晴春13 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
张忠琳13 小时前
【runc 1.4.2】(Part 2)runc 1.4.2 超深度分析 — CLI层:main.go、命令文件、runner、信号处理、TTY
云原生·kubernetes·runc
阿里云云原生15 小时前
AI 提效是“假象”还是“红利”?用 LoongSuite + SLS 构建组织级 AI 编码度量看板
云原生
Java识堂16 小时前
如何对微服务进行拆分?
微服务·云原生·架构
Plastic garden19 小时前
K8s知识(3) Pod亲和性,调度
云原生·容器·kubernetes
霸道流氓气质19 小时前
从MySQL到云原生:全面解析阿里云PolarDB数据库及其与MySQL的核心差异
数据库·mysql·云原生
张忠琳19 小时前
【client-go v0.36.1】(store Part 1)Store 超深度分析 — 模块定位、接口层次、类结构、KeyFunc体系、构造初始化
云原生·kubernetes·informer·store·client-go
heimeiyingwang21 小时前
【架构实战】网关架构设计:微服务的统一入口
微服务·云原生·架构
sbjdhjd1 天前
04 (下) | K8S微服务实战:从 Service 到金丝雀发布
运维·微服务·云原生·kubernetes·开源·云计算·excel
java_cj1 天前
K8s入门第一课:从零理解Kubernetes核心概念与架构设计
运维·云原生·容器·架构·kubernetes