在AWS Lambda中,我可以在哪里安全地存储API凭据?

时间:2016-02-09 17:35:52

标签: amazon-web-services aws-lambda aws-api-gateway

我有一个通过API网关配置的lambda函数,该函数应该通过Node(例如:Twilio)访问外部API。我不想在lambda函数中存储函数的凭据。有没有更好的地方设置它们?

4 个答案:

答案 0 :(得分:13)

在发布此问题后,可能会将此功能添加到Lambda。

AWS文档建议使用环境变量来存储敏感信息。使用AWS Lambda控制台创建Lambda函数时,使用AWS确定的密钥(aws / lambda)对它们进行加密(默认情况下)。

它利用AWS KMS并允许您:使用AWS确定的密钥,或选择您自己的KMS密钥(通过选择启用加密帮助程序);你需要提前创建密钥。

来自AWS DOC 1 ...

“当您创建或更新使用环境变量的Lambda函数时,AWS Lambda会使用AWS Key Management Service对它们进行加密。调用Lambda函数时,这些值将被解密并可用于Lambda代码。

首次创建或更新在区域中使用环境变量的Lambda函数时,会在AWS KMS中自动为您创建默认服务密钥。此密钥用于加密环境变量。但是,如果您希望在创建Lambda函数后使用加密助手并使用KMS加密环境变量,则必须创建自己的AWS KMS密钥并选择它而不是默认密钥。选择时,默认密钥会出错。“

默认密钥肯定会“在选择时出错” - 这让我想知道为什么他们会把它放入下拉列表中。

来源:

答案 1 :(得分:7)

虽然我还没有完成,但您应该能够利用AWS KMS从函数内加密/解密API密钥,授予Lambda角色访问KMS密钥的权限。

答案 2 :(得分:4)

AWS上的任何存储服务或数据库服务都可以在此处解决您的问题。问题是您目前在AWS Lambda函数中已经使用了什么?基于此,以及以下考虑因素:

  • 如果您需要快速且成本不是问题,请使用Amazon DynamoDB
  • 如果您需要快速并且注意成本,请使用Amazon ElastiCache(Redis或Memcache)
  • 如果您已在使用某个关系数据库,请使用Amazon RDS
  • 如果您没有使用任何内容且不需要快速使用,请使用Amazon S3

在任何情况下,您都需要创建一些安全策略(IAM角色或S3存储桶策略),以允许Lambda与您选择的存储/数据库之间的独占访问。

注意:对{简历} {Lambin}的Amazon VPC支持即将到来,因此您选择的任何解决方案都要确保它与您的Lambda函数位于同一个VPC中(了解更多信息,请访问https://connect.awswebcasts.com/vpclambdafeb2016/event/event_info.html

答案 3 :(得分:0)

我假设您没有引用AWS凭据,而是引用外部API凭据?

我不知道它是一个很棒的地方,但我在AWS论坛上找到了人们在S3上放置凭据的帖子。

这不是您的具体用例,请查看此论坛主题。

https://forums.aws.amazon.com/thread.jspa?messageID=686261

如果您将凭据放在S3上,请确保正确保护它。请考虑使其仅适用于仅分配给该Lambda函数的特定IAM角色。