当前位置: 首页 > 面试题库 >

AWS Lambda:如何将密钥存储到外部API?

杨轶
2023-03-14
问题内容

我正在构建基于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);
  }
});

希望您会觉得有用。



 类似资料:
  • 我按照web上一些教程使用redis设置Spring缓存,

  • 是的。这是这个问题的重复。然而,答案是错误的和误导性的。答案建议将密钥写入一个其他应用程序可以访问该文件的文件。如果我没看错的话,keystore的目的是生成并存储只能被你的app看到的私钥,所以我甚至不确定为什么答案在那个问题中被接受了。 另一个问题是关于加密和解密的,但并不是真正关于将数据保存到密钥存储区的问题。 好的,所以我发现一旦您调用就可以自动生成密钥,就像这个应用程序中演示的那样。但我

  • 问题内容: 如何复制到外部存储保持,以便以后可以共享首选项。 试图读取并另存为一个文件,创建了类型,但我需要一个。想过遍历应用程序的内部存储和复制文件,然后将其放入外部存储,但这可能太复杂了。 真的很想知道是否存在一种简单而明智的方式来传递`sharedpreferences。 问题答案: 使用此代码, 并取回它, 注意 使用此代码只能处理字符串类型首选项,

  • 问题内容: 我需要将2个密钥存储到KeyStore中,这是相关代码: 尽管我得到了执行,但“私钥必须带有证书链” 那到底是什么?以及我将如何生成它? 问题答案: 您还需要提供私钥条目的证书(公钥)。对于由CA签名的证书,链是CA的证书和最终证书。对于自签名证书,您只有自签名证书。 示例: 要生成证书,请点击以下链接: 示例:

  • 对于PGP想要使用的签名和加密密钥,我是否可以使用2个JCE、RSA或DSA keypairs?把它们保存在密钥库中,当我想使用这些密钥时,只需按需重建PGP基础结构?

  • 我在工作中被要求保护保存在Mysql数据库中的敏感数据。这个数据库包含几个表,其中一个表中的关键数据只能使用Django中的API来访问。对于这个API,只有一定数量的人可以访问它,因此他们将是唯一能够访问这个表中的数据的人。 因此,目前的问题是每个人都可以访问数据库和该表,因此我们决定使用AES在AES_ENCRYPT()和AES_DECRYPT()函数的帮助下加密该表中的所有数据(根据http