我的AWS Lambda函数需要使用包含敏感值的env变量填充,例如主数据库密码。
Lambda的新env vars功能使这个超级简单。但是对于最佳实践是什么,或者如何实现它,它有点模糊。
在Lambda FAQ中,他们说明了以下内容:
问:我可以将敏感信息存储在环境变量中吗? For 敏感信息,如数据库密码,我们建议您 使用AWS Key Management Service和store进行客户端加密 结果值在您的环境变量中为
/// Encrypt your password var myDbPassword = '122345'; var encryptedDbPassword = aws.kms.encrypt(myDbPassword, 'my-lambda-env-key'); /// Store it 'on' your Lambda function aws.lambda.env.save('DB_PASS', encryptedDbPassword);
。您 将需要在您的AWS Lambda函数代码中包含逻辑以进行解密 这些价值观。
所以他们基本上说你需要自己加密这些值,然后将加密的值输入你的Lambda函数env vars。然后,您需要在函数中包含将在实例化时解密值的逻辑。在伪代码中,它看起来像这样:
在您的笔记本电脑上
var myDbPassword = aws.kms.decrypt(process.env.DB_PASS, 'my-lambda-env-key');
db.connect('someURL', myDbPassword);
在您的Lambda函数中
然后在你的函数中,你将有逻辑在实例化时解密它:
my-lambda-env-key
很简单,但您输入的任何值在输入时都已加密,并且它们允许您选择要用于加密值的KMS密钥,并且您可以创建自己的KMS密钥并使用它而不是“默认” “关键。
那么,在输入之前加密值有什么意义呢?如果您可以告诉Lambda使用您的my-lambda-env-key
密钥进行加密,那么在将它们发送到Lambda之前使用PEOPLE:
ID NAME
1 Peter
PHONE_NUMBERS
ID NUMBER
1 1736736
1 67358467
1 553463563
密钥加密笔记本电脑上的值是不一样的?