pipe理Node.JS的Web服务凭据的最佳实践?
我们正在计划一个安全的Node.JS服务器,它使用多个第三方Web服务。 每个都需要凭据,需要由操作团队configuration。
很明显,他们可以简单地把它们放在一个configuration文件中。
Microsoft .NET似乎提供了DPAPI更好的select – 请参阅凭证存储最佳实践 。 有没有办法通过IISNode使其可用? 或者有没有其他的select来保护Node-JSconfiguration中的这些凭据?
- 查尔斯
这里有几个选项的广泛讨论,其中包括xShirase提出的两个选项:
http://pmuellr.blogspot.co.uk/2014/09/keeping-secrets-secret.html
用户定义的服务解决了这个问题,但仅限于Cloud Foundry。
我仍然怀疑是否有特殊的IIS?
- 查尔斯
有两种方法可以安全地做到这一点:
首先是在启动应用程序时使用命令行参数。
这些参数可以在process.argv
find
所以, node myapp.js username password
会给你:
process.argv[0]=node process.argv[1]=/.../myapp.js (absolute path) process.argv[2]=username process.argv[3]=password
其次是将凭据设置为ENVvariables。 一般认为这是最好的做法,因为只有你有权访问这些variables。
您将不得不使用export命令设置variables,而不是在process.env
访问它
我目前必须为我的外部API凭证执行完全相同的操作。 这是我做的
- 安装node-config模块
- 创build一个名为config / config.js的文件夹和文件
- 这里需要(config)模块
- 在本地框中它从local.json文件读取configuration
- 我在local.json虚拟值为api密钥和共享的秘密
- 在我的QA环境中,我输出两个variablesNODE_ENV =“QA”和NODE_CONFIG_DIR =“我的configuration文件夹在qa服务器上的path”
- node-config模块从“config文件夹path/ QA.json”中读取configuration信息
- 现在我在QA.json中有真正的api key和凭证
- 在这里您可以使用encryption来encryption这些值并将其放回到QA.json中
- 在您的应用程序中获取这些configuration值并解密在您的其他电话中使用它
希望这可以帮助。
所以你的configuration可以和节点代码一样在同一个容器中。
参考这个encryption和解密http://lollyrock.com/articles/nodejs-encryption/