我正在构建基于AWS Lambda的监视工具。给定一组指标,Lambda应当能够使用Twilio API 发送SMS 。为了能够使用API,Twilio提供了一个帐户SID和一个身份验证令牌。
我应该如何以及在哪里存储这些秘密?
我目前正在考虑使用AWS KMS,但可能还有其他更好的解决方案。
这是我想出的。我正在使用AWS KMS将我的机密加密到一个文件中,该文件与代码一起上传到AWS Lambda。然后在需要使用它们时将其解密。
这是要遵循的步骤。
首先创建一个KMS密钥。您可以在这里找到文档:http : //docs.aws.amazon.com/kms/latest/developerguide/create- keys.html
然后加密您的秘密,并将结果放入文件中。可以使用以下命令从CLI实现:
aws kms encrypt --key-id some_key_id --plaintext "This is the scret you want to encrypt" --query CiphertextBlob --output text | base64 -D > ./encrypted-secret
然后,您需要将此文件作为Lambda的一部分上传。您可以按以下步骤解密和使用Lambda中的机密。
var fs = require('fs'); var AWS = require('aws-sdk'); var kms = new AWS.KMS({region:'eu-west-1'}); var secretPath = './encrypted-secret'; var encryptedSecret = fs.readFileSync(secretPath); var params = { CiphertextBlob: encryptedSecret }; kms.decrypt(params, function(err, data) { if (err) console.log(err, err.stack); else { var decryptedSecret = data['Plaintext'].toString(); console.log(decryptedSecret); } });
希望您会觉得有用。