我们正在规划一个安全的 Node.JS 服务器,它使用多个第三方 Web 服务。每个都需要由运营团队配置的凭据。
显然他们可以简单地将它们以纯文本形式放入配置文件中。
Microsoft .NET 似乎通过 DPAPI(数据保护 API)提供了更好的选项 - 请参阅凭证存储最佳实践。有没有办法通过 IISNode 实现此功能?或者是否有其他选项可以在 Node-JS 配置中保护此类凭据?
这里对几个选项进行了广泛的讨论,包括 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有没有特价?
有两种安全的方法:
第一个是在启动应用程序时使用命令行参数。
这些参数可以在
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
中访问它
我目前必须对我的外部 API 凭据执行完全相同的操作。这就是我所做的
希望这有帮助。
因此您的配置可以与节点代码位于同一容器中。
dotenv/环境变量组合允许您将机密存储在根目录中的 .env 文件中,以进行开发和测试。但它还允许在生产服务器上提供更安全的解决方案,其中秘密可以作为环境变量从 HSM(硬件安全模块)或其他方式输入。