如何处理生产应用程序中的配置值
How to handle configuration values in production applications
我是新手,最近一直在学习如何 build/deploy MEAN 堆栈应用程序,现在希望部署到 AWS(使用 EC2)。目前我的 node.js API 使用环境变量 (process.env) 来获取以下值:
- MongoDB URL(对于端口 27017 上的进程 运行ning)
- JWT 身份验证密钥
- 电子邮件服务的电子邮件和密码
- 端口到 运行 节点
将此应用程序部署到生产环境时,处理这些动态值的最佳方式是什么?我读过环境变量虽然比明文值更安全,但在某些方面仍然不安全。我知道用于安全存储这些值的 AWS 参数存储等服务,但想知道在针对任何给定部署选项将应用程序部署到生产环境时,是否有一些通用的最佳实践建议可以遵循以存储此类配置变量。
谢谢
与在配置文件或环境变量中存储凭证相比,AWS Parameter Store 确实具有优势。要了解有关这 2 个潜在问题的更多信息,您可能需要查看此问题的答案
AWS Parameter Store 几乎不需要配置,因为它是 AWS 生态系统中的一个工具。
存储在 PS 中的机密在传输过程中和静态时均已加密。
基本上,您需要一个具有 ssm:GetParameter
和 kms: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)
我是新手,最近一直在学习如何 build/deploy MEAN 堆栈应用程序,现在希望部署到 AWS(使用 EC2)。目前我的 node.js API 使用环境变量 (process.env) 来获取以下值:
- MongoDB URL(对于端口 27017 上的进程 运行ning)
- JWT 身份验证密钥
- 电子邮件服务的电子邮件和密码
- 端口到 运行 节点
将此应用程序部署到生产环境时,处理这些动态值的最佳方式是什么?我读过环境变量虽然比明文值更安全,但在某些方面仍然不安全。我知道用于安全存储这些值的 AWS 参数存储等服务,但想知道在针对任何给定部署选项将应用程序部署到生产环境时,是否有一些通用的最佳实践建议可以遵循以存储此类配置变量。
谢谢
与在配置文件或环境变量中存储凭证相比,AWS Parameter Store 确实具有优势。要了解有关这 2 个潜在问题的更多信息,您可能需要查看此问题的答案
AWS Parameter Store 几乎不需要配置,因为它是 AWS 生态系统中的一个工具。
存储在 PS 中的机密在传输过程中和静态时均已加密。
基本上,您需要一个具有 ssm:GetParameter
和 kms: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)