数据库密码,审计要求,要定期更改,程序怎么可以适应?

2020-09-10 16:37:43 +08:00
 czwen1993
框架:
Spring Boot,alibaba druid

期望效果:
用户改完数据库密码,程序不用改配置,最好也不用重新启动

思路:
1. 使用 nacos,但增加工作量,,(不赚钱的项目,,)
2. 数据配置文件使用远程文件,用户改完密码,顺手改一下配置文件,顺手重新启动一下?
3. 传统做法

请教还有什么好的做法吗?
3515 次点击
所在节点    程序员
18 条回复
passerbytiny
2020-09-10 16:53:37 +08:00
如果要求 100 %数据完整性,除了重启或临时下线,别无它法。数据库是最底层的东西,想做热重载不是一般的难。
passerbytiny
2020-09-10 16:59:33 +08:00
补充一下,是无缝热重载不好做,不重启但是数据库下线再上线(期间所有与数据库相关的功能,要么等待新事务开启,要么超时,要么回滚)还是很好做的。
passerbytiny
2020-09-10 17:04:43 +08:00
不赚钱的项目,就弄个脚本让改密码的人在改密码后手动执行一下吧。

spring 体系中要想刷新配置,需要上 spring cloud config,管理起来还是很麻烦的。
limuyan44
2020-09-10 17:08:47 +08:00
通常遇到这种什么不想做的但是什么都想要的,我都会拿起 shell 一把梭,整个定时半夜 12 点改密码写配置起服务。
itskingname
2020-09-10 17:15:47 +08:00
这个时候就显示出 sprint boot 的不灵活了。

我用 Apollo 做配置中间。用 fastapi 做后端。发现配置改了,可以直接动态修改连接对象。
justfindu
2020-09-10 17:16:23 +08:00
你给他一个操作接口, 接口内进行 shell 操作并进行应用数据库密码更改... 是不是有些危险.
smallfish1990
2020-09-10 17:20:03 +08:00
讲一个上家公司的方案:

( 1 )数据库做 2 套账户,错开定期修改;
( 2 )应用层走负载,一套一套修改,用户无感
( 3 )改密、负载切换都是走 devops 的,现场运维对密码都不可知
594duck
2020-09-10 17:30:17 +08:00
@itskingname 老哥这个回答靠谱的,走配置中心是最方便的。


另外,如果是半年一次的话其实可以走 maintenance time 的。哪怕是 Google SRE 都推荐要做做重启动作来熟悉感觉。
bk201
2020-09-10 17:32:14 +08:00
配置中心?
zlowly
2020-09-10 17:36:06 +08:00
肯花钱的话,有专门商业化的账号安全管理系统可以干这些事情。
wangdashuai
2020-09-10 18:32:19 +08:00
可以在 mysql 和应用中间加一层,屏蔽密码认证。
iColdCat
2020-09-10 20:20:33 +08:00
不知道 xxl conf 能不能解
buaacss
2020-09-10 20:41:26 +08:00
两套账号,要改密的时候,ops 生成新密码,创建 temp 账号,同时更新 k8s 里的 temp secret,重新部署后使用临时密钥,改之前的线上密钥,再更新 online secret 最后再部署一次,删除临时 secret,开发都不知道这玩意儿换过了。ansible 改环境变量也差不多
czwen1993
2020-09-10 20:49:35 +08:00
@buaacss 还没到这么高级的阶段🤣
czwen1993
2020-09-10 20:50:36 +08:00
@zlowly 不肯。。哈哈哈哈
czwen1993
2020-09-10 20:52:05 +08:00
@justfindu 这,,客户有这个想法
intmax2147483647
2020-09-11 14:55:55 +08:00
好愚蠢的要求
LemonCoo1
2020-09-11 17:19:20 +08:00
https://blog.csdn.net/jackson_hou03/article/details/106408666
可以集成配置中心,比如 nacos apollo 等,自己实现刷新数据源。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/705848

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX