V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
czwen1993
V2EX  ›  程序员

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

  •  
  •   czwen1993 · 2020-09-10 16:37:43 +08:00 · 3491 次点击
    这是一个创建于 1539 天前的主题,其中的信息可能已经有所发展或是发生改变。
    框架:
    Spring Boot,alibaba druid

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

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

    请教还有什么好的做法吗?
    第 1 条附言  ·  2020-09-10 20:49:01 +08:00
    总结一下,做这事配置中心靠谱
    18 条回复    2020-09-11 17:19:20 +08:00
    passerbytiny
        1
    passerbytiny  
       2020-09-10 16:53:37 +08:00 via Android
    如果要求 100 %数据完整性,除了重启或临时下线,别无它法。数据库是最底层的东西,想做热重载不是一般的难。
    passerbytiny
        2
    passerbytiny  
       2020-09-10 16:59:33 +08:00 via Android
    补充一下,是无缝热重载不好做,不重启但是数据库下线再上线(期间所有与数据库相关的功能,要么等待新事务开启,要么超时,要么回滚)还是很好做的。
    passerbytiny
        3
    passerbytiny  
       2020-09-10 17:04:43 +08:00 via Android
    不赚钱的项目,就弄个脚本让改密码的人在改密码后手动执行一下吧。

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

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

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


    另外,如果是半年一次的话其实可以走 maintenance time 的。哪怕是 Google SRE 都推荐要做做重启动作来熟悉感觉。
    bk201
        9
    bk201  
       2020-09-10 17:32:14 +08:00
    配置中心?
    zlowly
        10
    zlowly  
       2020-09-10 17:36:06 +08:00
    肯花钱的话,有专门商业化的账号安全管理系统可以干这些事情。
    wangdashuai
        11
    wangdashuai  
       2020-09-10 18:32:19 +08:00
    可以在 mysql 和应用中间加一层,屏蔽密码认证。
    iColdCat
        12
    iColdCat  
       2020-09-10 20:20:33 +08:00   ❤️ 1
    不知道 xxl conf 能不能解
    buaacss
        13
    buaacss  
       2020-09-10 20:41:26 +08:00 via iPhone   ❤️ 1
    两套账号,要改密的时候,ops 生成新密码,创建 temp 账号,同时更新 k8s 里的 temp secret,重新部署后使用临时密钥,改之前的线上密钥,再更新 online secret 最后再部署一次,删除临时 secret,开发都不知道这玩意儿换过了。ansible 改环境变量也差不多
    czwen1993
        14
    czwen1993  
    OP
       2020-09-10 20:49:35 +08:00
    @buaacss 还没到这么高级的阶段🤣
    czwen1993
        15
    czwen1993  
    OP
       2020-09-10 20:50:36 +08:00
    @zlowly 不肯。。哈哈哈哈
    czwen1993
        16
    czwen1993  
    OP
       2020-09-10 20:52:05 +08:00
    @justfindu 这,,客户有这个想法
    intmax2147483647
        17
    intmax2147483647  
       2020-09-11 14:55:55 +08:00
    好愚蠢的要求
    LemonCoo1
        18
    LemonCoo1  
       2020-09-11 17:19:20 +08:00
    https://blog.csdn.net/jackson_hou03/article/details/106408666
    可以集成配置中心,比如 nacos apollo 等,自己实现刷新数据源。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3110 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:31 · PVG 22:31 · LAX 06:31 · JFK 09:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.