大家公司的生产级别代码,对于密码等敏感数据的安全储存一般是怎么操作的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
FlyingBackscratc
V2EX    程序员

大家公司的生产级别代码,对于密码等敏感数据的安全储存一般是怎么操作的?

  •  
  •   FlyingBackscratc 2024-06-07 23:32:39 +08:00 3473 次点击
    这是一个创建于 495 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想在开源项目里用比较正规的流程储存密钥等敏感数据,但是实习经验不多,自己做的过程中还是挺多问题的,有没有大佬讲讲一般商业公司是怎么处理的。想学习一个一般商业公司的还可以的安全管理实现,主要是像大公司或者云平台那种管理咱也没那个成本搞,搞了也用不上。

    目前我的操作方法就是注入数据库密码等等把密文写到配置文件里,然后在代码里读取并解码,就还原成真实密码。唯一好处可能是密文和代码分离了,方便管理。但是密文和密钥又都写在一块,解码方式也很明确,感觉还是意义不大。如果说真的是为了对抗网络攻击的话,那代码泄露和配置文件泄露的安全损害级别应该是一样的,对方有能力获取你的代码又怎么会没能力获取配置文件,还不是会导致所有原文泄露?

    在用户管理方面,比如 nginx 是 A 用户启动的,业务是 B 用户启动的,给密钥文件夹加上 B 的只读权限也许有用。不过说实在的既然只用 nginx 做路由,业务过于单纯,实在是想不到它有什么潜在风险。毕竟全球运行这么多年了,好像也没听说过哪个 0day 漏洞导致 nginx 本身出问题的。

    还有一个处理方案可能是配置文件只存密文,在每次服务启动时管理员手动输入密钥,但是现在服务都做的容器化,每次启动输入既麻烦又不好管理,我觉得应该没有人实际上是这么操作的。

    最后我还想知道一般安全设计上是否需要防范内存攻击,我的程序把密码原文读取到内存,需要防止有人把内存 dump 出来做分析吗,这是否意味着相关内存需要尽快被销毁?

    12 条回复    2024-06-09 23:20:39 +08:00
    Inn0Vat10n
        1
    Inn0Vat10n  
       2024-06-08 00:18:14 +08:00
    能直接访问到 db 的机器一般和外部网络是隔离的,不太需要关心 dump 内存攻击这种操作,一般就是 pk/sk 做鉴权,pk 我有见过直接存配置文件里的,也有从统一的配置中心获取的(调用 API 有审计)
    FlyingBackscratc
        2
    FlyingBackscratc  
    OP
       2024-06-08 00:57:46 +08:00
    @Inn0Vat10n 感觉网络隔离这个在发生权限泄露以后意义不大,感觉从 v 站发帖的观察来看服务器被挂马是常见网安问题,此种情况下内部网络隔离形同虚设。pk/sk 鉴权应该不是单纯用 tls 加密通信这种感觉而是涉及鉴权逻辑吧,不过这种和密码又有啥区别,感觉只是 sk 比密码长一点这样。。。
    R4rvZ6agNVWr56V0
        3
    R4rvZ6agNVWr56V0  
       2024-06-08 01:11:14 +08:00
    一般的公司没有复杂的处理,1 楼说的是很多公司的处理方法。
    我所知的做法是使用像 HashiCorp 的 Vault 这样的工具来管理和存储密钥,然后应用是从环境变量中读取密钥。
    whileFalse
        4
    whileFalse  
       2024-06-08 03:20:40 +08:00
    云、k8s 和第三方软件有很多加密配置的组件
    不过对于很多应用来说,只要不写死在代码里,能够运行时注入就够了。
    不用管内存
    wangbin11
        5
    wangbin11  
       2024-06-08 03:24:22 +08:00
    java 就用 nacos ,现在各种服务解耦,程序员都搞不懂自己的程序和谁连接,不用太耽误密码安全问题,多写点代码就懂了,能跑就行
    jinliming2
        6
    jinliming2  
       2024-06-08 07:42:42 +08:00 via iPhone
    首先,没有绝对的安全。如果真到了可以到你服务器上进行任意代码执行了,那基本上对你的密码是啥也就没啥兴趣了。都能直接进到你家翻箱倒柜了,也就没有必要知道你家防盗门上的密码了。
    安全防护通常是很多层,对密码的保护只是其中一层。
    代码是很多人都可以访问到的,比如公司里的程序员,几乎人手一份代码,代码泄漏的风险本身就很高。而密码不放在代码里,那么即便是你泄漏了代码,在不考虑其他漏洞的情况下,生产数据库还是安全的。
    当然,即便是保护了密码的安全,生产数据库通常也都是网络隔离不能公网访问的,这是另一道安全防线。但也不能说既然不能公网访问,那就不设置密码了吧?
    rekulas
        7
    rekulas  
       2024-06-08 08:50:57 +08:00
    裸配置就行了, 很多巨头都这样玩的, 服务器不被黑没啥大问题
    我们也有加密配置, 不过是因为要部署在客户的机器上 放置泄露而已
    VeteranCat
        8
    VeteranCat  
       2024-06-08 10:39:51 +08:00
    dump?你这担心的也太多了,都拥有你服务器的控制权了,在折腾安全都是没有意义的。 密码能够看到明文的地方进行加密就好了,后端使用时即时解密。
    KylinYou
        9
    KylinYou  
       2024-06-08 11:36:40 +08:00 via Android
    如果是欧盟的服务,需要遵守 GDPR ,用户对信息有知情权,访问权,删除权等
    fd7917931e
        10
    fd7917931e  
       2024-06-08 20:14:24 +08:00
    Vault
    richcat
        11
    richcat  
       2024-06-08 21:51:29 +08:00
    密码用密钥加密,加密后无所谓放在那里了,密钥有密钥管理服务(参考 AWS KMS),每个用户都可以申请自己的密钥
    RedrumSherlock
        12
    RedrumSherlock  
       2024-06-09 23:20:39 +08:00   1
    明文存在 Hashicorp 的 Vault 上,然后通过 Vault 的 secret operartor 同步成 k8s 的 secret ,mount 成 pod 的环境变量调用。内存 dump 这种基本不考虑了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5218 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 09:13 PVG 17:13 LAX 02:13 JFK 05:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86