使用AWS Lambda存储敏感环境变量的最佳实践是什么?

时间:2016-12-01 10:04:51

标签: amazon-web-services encryption aws-lambda aws-kms

我的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 密钥加密笔记本电脑上的值是不一样的?

0 个答案:

没有答案