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



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

我想知道是否有更好的方法来处理我的java程序中的这些密钥(从部署的角度来看),或者人们在做类似的事情时尝试过的一些可能的途径。有人能解释一下吗?

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

如果你加密了你的密钥,那么你把数据库存储在哪里应该不会太重要,当然我仍然不会让它公开下载。只要选择一个好的加密工具,就不要尝试开发自己的加密算法

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

我个人更喜欢Consul,它有一个类似的模板工具,叫做Consul模板,如果你希望你的程序使用环境变量,另一个叫做envconsul。

最后,执政官的制造商Hasicorp有了一种名为vault的加密产品。它与执政官合作良好,也得到执政官模板的支持。

最新更新