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

突然想到的服务器上项目代码中明文账户密码的加密问题

  •  
  •   phpxiaowangzi · 2020-08-17 10:45:17 +08:00 · 4392 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,之前有想过这个问题,今天无意中有想到了,现在很多配置数据库账户密码的明文都存放在项目代码中,这种有没有什么加密措施,总是感觉这样很不妥,各位大佬怎么说?

    25 条回复    2020-08-18 23:09:29 +08:00
    nicevar
        1
    nicevar  
       2020-08-17 10:51:59 +08:00
    如果进行安全配置了没有什么不妥,这些东西都需要 root 权限才能看到,你都让人拿到 root 权限了,还在乎这个密码被人看到?
    2kCS5c0b0ITXE5k2
        2
    2kCS5c0b0ITXE5k2  
       2020-08-17 10:56:10 +08:00 via iPhone
    担心那么多 你要加密肯定要解密吧 解密不还要密钥 你密钥不也要放机子上? 难道你还要再开一个机子获取密钥吗 那密钥传输安全吗 那又要上 tls 加密传输密钥 那还要防中间人
    coolcoffee
        3
    coolcoffee  
       2020-08-17 11:03:01 +08:00   ❤️ 2
    如果我有你服务器文件任意读写权限,我直接把你程序代码引入的地方加个 log 不就可以看到了。

    正确的做法应该是敏感信息用环境变量,然后启动的时候把环境变量参数传进去。 这样开发人员就无法知晓生产环境的配置
    xdbytes1
        4
    xdbytes1  
       2020-08-17 11:28:35 +08:00
    把密码写在系统环境变量中,代码运行时候自动读取系统变量中的密码就可以了
    37Y37
        5
    37Y37  
       2020-08-17 11:32:46 +08:00   ❤️ 1
    配置文件中都加密,我们的方案 https://blog.ops-coffee.cn/s/dpgqiel4wcmgdqh1aeg4gw
    xuanbg
        6
    xuanbg  
       2020-08-17 11:35:05 +08:00
    运行时又不能加密,配置文件加密毫无意义。
    @37Y37
    594duck
        7
    594duck  
       2020-08-17 11:46:24 +08:00   ❤️ 1
    JAVA 最简单的是引用以下这个,Jenkins 各环境打包的时候直接就把加密好的值 打进去就好,启动的时候把盐给输一下。
    http://www.jasypt.org/

    权限隔离,人员隔离就好。运维不用去管 DBA 和其它第三方 API 的 KEY 是什么,只管根据人家给的加密后的配置打包就好。
    594duck
        8
    594duck  
       2020-08-17 11:47:37 +08:00
    还有就是用像携程的阿波罗那样的中心统一配置中心
    learningman
        9
    learningman  
       2020-08-17 12:06:28 +08:00
    只要有个 xx git 传错地方,你们就该炸了。。。
    crclz
        10
    crclz  
       2020-08-17 16:00:26 +08:00
    放在环境变量里面,因为不想让代码储存服务提供商、构建服务提供商知道你的数据库密码。
    Eirxxx69
        11
    Eirxxx69  
       2020-08-17 17:13:44 +08:00
    我们公司是将项目里的配置文件放在单独的项目上,开发最多只能看到测试环境的配置文件,线上的配置文件没权限看的
    zjsxwc
        12
    zjsxwc  
       2020-08-17 17:24:57 +08:00 via Android
    从系统环境变量里获取密码,代码和项目都不需要密码,只有运维知道密码。
    dallaslu
        13
    dallaslu  
       2020-08-17 17:54:19 +08:00
    代码里不应该有关键密码呀,都放在外部配置文件里呗
    wangritian
        14
    wangritian  
       2020-08-17 18:04:46 +08:00
    代码仓库放开发用配置,开发环境的数据库 /免费额度的 apikey/开发用证书,全暴露也没损失,线上环境用环境变量或文件替换掉,比如 k8s 的 configMap
    x86
        15
    x86  
       2020-08-17 18:07:25 +08:00
    服务器地址写的 localhost 咋啦
    walkfish
        16
    walkfish  
       2020-08-17 18:12:01 +08:00   ❤️ 1
    我们是采用阿波罗配置中心来解决这个问题
    Cookieeeeee
        17
    Cookieeeeee  
       2020-08-17 19:48:08 +08:00
    环境变量
    LokiSharp
        18
    LokiSharp  
       2020-08-17 20:51:56 +08:00 via iPhone
    不是配在 env 里么
    24bit
        19
    24bit  
       2020-08-17 20:54:40 +08:00
    写在环境变量里面或者放到配置中心读取
    Jooooooooo
        20
    Jooooooooo  
       2020-08-17 22:59:52 +08:00
    你需要 kms
    yingfengi
        21
    yingfengi  
       2020-08-18 00:11:20 +08:00
    localhost
    账号密码空
    abc612008
        22
    abc612008  
       2020-08-18 07:19:15 +08:00
    @coolcoffee /proc/self/environ 了解一下
    sadfQED2
        23
    sadfQED2  
       2020-08-18 12:25:25 +08:00 via Android
    密码一般放在环境变量、etcd 、阿波罗
    stevenkang
        24
    stevenkang  
       2020-08-18 15:42:25 +08:00
    物理隔离,环境不互通
    intmax2147483647
        25
    intmax2147483647  
       2020-08-18 23:09:29 +08:00
    AWS 的 KMS😎
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   920 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:39 · PVG 05:39 · LAX 13:39 · JFK 16:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.