最健壮的存储api密钥的方法(客户端)?

时间:2015-10-27 00:51:57

标签: java deployment api-key secret-key

我创建了一个java守护程序,它从社交网络帐户收集数据。我使用了很多服务,包括Flick,S3,GeoCoding等。目前我已经设置了程序来从属性文件中读取所有这些API密钥。我的测试文件夹中也有一个类似格式的属性文件,其中包含用于测试目的的不同键。这些属性文件显然未提交源。此收集程序写入mongo db。我还在构建一个也可以与mongo一起使用的Web应用程序,并将与该集合一起部署。在我的开发过程中,我读到最好将密钥存储为生产方面的环境变量。它让我思考;这引出了我的问题...

我想知道是否有更好的方法来处理我的java程序中的这些键(从部署的角度来看)或者人们尝试做类似的事情的一些可能的路径。有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:0)

我会推荐一个数据库。如果您只存储供个人使用的API密钥,那么数据库的大小可能不是主要问题。就个人而言,我建议使用MySQL(或者SQLite),因为它们都得到了很好的支持。

如果您加密密钥,那么在您存储数据库的位置不应该太重要,尽管我当然不会公开下载它。只需选择一个好的加密工具,不要尝试开发自己的加密算法!

答案 1 :(得分:0)

最新的热点(在容器世界中)是使用zookeeperetcdconsul作为分布式配置存储。 confd工具能够确保应用程序配置文件与配置更改保持同步。

我个人的偏好是Consul,它有一个名为consul-template的类似模板工具,另一个名为envconsul,如果您希望程序使用环境变量。

最后,领事制造商Hasicorp有一个名为vault的加密产品。它适用于领事,并得到consul-template的支持。