管理Node.JS的Web服务凭据的最佳实践?

时间:2014-10-09 15:25:52

标签: node.js credentials

我们正在计划一个安全的Node.JS服务器,该服务器使用多个第三方Web服务。每个都需要运营团队需要配置的凭证。

显然,他们可以简单地将它们以明文形式放入配置文件中。

Microsoft .NET似乎为DPAPI提供了更好的选择 - 请参阅Credential storage best practices。有没有办法通过IISNode提供此功能?或者是否有其他选项可以在Node-JS配置中保护此类凭据?

  • 查尔斯

3 个答案:

答案 0 :(得分:4)

这里有几个选项的广泛讨论,包括xShirase提出的两个选项:

http://pmuellr.blogspot.co.uk/2014/09/keeping-secrets-secret.html

用户定义的服务解决了这个问题,但仅适用于Cloud Foundry。

此博客http://encosia.com/using-nconf-and-azure-to-avoid-leaking-secrets-on-github/指出您经常可以在服务器上单独设置环境变量,并建议使用nconf分别读取它们和配置文件。

我仍然想知道IIS是否有特价?

  • 查尔斯

答案 1 :(得分:2)

有两种安全方法:

首先,在启动应用程序时使用命令行参数。

然后在process.argv

中找到这些参数

所以,node myapp.js username password会给你:

process.argv[0]=node
process.argv[1]=/.../myapp.js (absolute path)
process.argv[2]=username 
process.argv[3]=password 

其次是将凭证设置为ENV变量。它通常被认为是最佳实践,因为只有您可以访问这些变量。

您必须使用导出命令设置变量,而不是在process.env

中访问变量

答案 2 :(得分:1)

我目前必须为我的外部API凭据做同样的事情。这就是我做的事情

  • 安装node-config模块
  • 创建名为config / config.js
  • 的文件夹和文件
  • 此处为require(config)module
  • 在本地方框中,它从local.json文件中读取配置文件
  • 我在local.json中为api密钥和共享密钥
  • 设置了虚拟值
  • 在我的QA环境中我导出两个变量NODE_ENV =" QA"和NODE_CONFIG_DIR =" qa服务器上我的配置文件夹的路径"
  • node-config模块从"路径到配置文件夹/ QA.json读取配置"
  • 现在我在QA.json
  • 中拥有真正的api密钥和凭据
  • 在这里,您可以使用加密来加密这些值并将其放回QA.json
  • 在你的应用中获取这些配置值并解密,在你的休息电话中使用它
希望这会有所帮助。

因此您的配置可以与节点代码位于同一容器中。

请参阅此内容以进行加密和解密 http://lollyrock.com/articles/nodejs-encryption/