如何在生产应用程序中处理配置值



我是新手,最近一直在学习如何构建/部署MEAN堆栈应用程序,现在希望部署到AWS(使用EC2(。目前,我的node.js API使用环境变量(process.env(作为值,例如:

  1. MongoDB URL(用于在端口27017上运行的进程(
  2. JWT身份验证机密
  3. 电子邮件服务的电子邮件和密码
  4. 运行节点的端口

在将此应用程序部署到生产环境时,处理这些动态值的最佳方式是什么?我读到环境变量虽然比明文值更安全,但在某些方面仍然不安全。我知道AWS参数存储等用于安全存储这些值的服务,但我想知道在为任何给定的部署选项将应用程序部署到生产中时,是否有一些存储此类配置变量的一般最佳实践建议。

感谢

AWS参数存储与在配置文件或环境变量中存储凭据相比确实具有优势。要了解更多关于这两个潜在问题的信息,您可能需要查看此问题的答案https://stackoverflow.com/a/28329996/2579733

AWS参数存储几乎不需要配置,因为它是AWS生态系统中的一个工具。

存储在PS中的秘密在传输和休息时都会被加密。

基本上,您需要一个具有ssm:GetParameterkms:Decrypt权限的IAM角色,可以将其分配给您的EC2实例。

那么node.js的基本实现可以是这样的:

const aws = require('aws-sdk')
async function getSecureValue(path) {
const ssm = new aws.SSM()
const ssmParams = {
Name: path,
WithDecryption: true,
}
const storeResponse = await ssm.getParameter(ssmParams).promise()
return storeResponse.Parameter.Value
}
const password = await ssm.getSecureValue(PASSWORD_SSM_PATH)

相关内容

  • 没有找到相关文章

最新更新