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

19 天前
 FlyingBackscratc

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

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

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

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

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

2496 次点击
所在节点    程序员
12 条回复
Inn0Vat10n
19 天前
能直接访问到 db 的机器一般和外部网络是隔离的,不太需要关心 dump 内存攻击这种操作,一般就是 pk/sk 做鉴权,pk 我有见过直接存配置文件里的,也有从统一的配置中心获取的(调用 API 有审计)
FlyingBackscratc
19 天前
@Inn0Vat10n 感觉网络隔离这个在发生权限泄露以后意义不大,感觉从 v 站发帖的观察来看服务器被挂马是常见网安问题,此种情况下内部网络隔离形同虚设。pk/sk 鉴权应该不是单纯用 tls 加密通信这种感觉而是涉及鉴权逻辑吧,不过这种和密码又有啥区别,感觉只是 sk 比密码长一点这样。。。
GeekGao
19 天前
一般的公司没有˙复杂的处理,1 楼说的是很多公司的处理方法。
我所知的做法是使用像 HashiCorp 的 Vault 这样的工具来管理和存储密钥,然后应用是从环境变量中读取密钥。
whileFalse
18 天前
云、k8s 和第三方软件有很多加密配置的组件
不过对于很多应用来说,只要不写死在代码里,能够运行时注入就够了。
不用管内存
wangbin11
18 天前
java 就用 nacos ,现在各种服务解耦,程序员都搞不懂自己的程序和谁连接,不用太耽误密码安全问题,多写点代码就懂了,能跑就行
jinliming2
18 天前
首先,没有绝对的安全。如果真到了可以到你服务器上进行任意代码执行了,那基本上对你的密码是啥也就没啥兴趣了。都能直接进到你家翻箱倒柜了,也就没有必要知道你家防盗门上的密码了。
安全防护通常是很多层,对密码的保护只是其中一层。
代码是很多人都可以访问到的,比如公司里的程序员,几乎人手一份代码,代码泄漏的风险本身就很高。而密码不放在代码里,那么即便是你泄漏了代码,在不考虑其他漏洞的情况下,生产数据库还是安全的。
当然,即便是保护了密码的安全,生产数据库通常也都是网络隔离不能公网访问的,这是另一道安全防线。但也不能说既然不能公网访问,那就不设置密码了吧?
rekulas
18 天前
裸配置就行了, 很多巨头都这样玩的, 服务器不被黑没啥大问题
我们也有加密配置, 不过是因为要部署在客户的机器上 放置泄露而已
wanqiangcrack
18 天前
dump?你这担心的也太多了,都拥有你服务器的控制权了,在折腾安全都是没有意义的。 密码能够看到明文的地方进行加密就好了,后端使用时即时解密。
KylinYou
18 天前
如果是欧盟的服务,需要遵守 GDPR ,用户对信息有知情权,访问权,删除权等
fd7917931e
18 天前
Vault
richcat
18 天前
密码用密钥加密,加密后无所谓放在那里了,密钥有密钥管理服务(参考 AWS KMS),每个用户都可以申请自己的密钥
RedrumSherlock
17 天前
明文存在 Hashicorp 的 Vault 上,然后通过 Vault 的 secret operartor 同步成 k8s 的 secret ,mount 成 pod 的环境变量调用。内存 dump 这种基本不考虑了

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

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

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

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

© 2021 V2EX