2015-10-27 124 views
1

我已经创建了一个java守护程序,用于从社交网络帐户收集数据。我使用了许多服务,包括Flick,S3,GeoCoding等等。目前,我已经将程序设置为从属性文件中读取所有这些API密钥。我的测试文件夹中也有一个类似格式的属性文件,其中包含用于测试目的的不同键。这些属性文件不会明确提交到源代码中。这个收集程序写入一个mongo数据库。我还在构建一个也适用于mongo的网络应用程序,并将与该集合一起部署。在我的开发过程中,我读到最好将密钥存储为生产端的环境变量。它让我思考;这导致我到我的问题...存储API密钥的最健壮的方式(客户端)?

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

回答

0

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

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

0

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

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

终于,consil的制造商Hasicorp有一个名为vault的加密产品。它与领事协同工作,并得到consul-template的支持。

相关问题