我有一个通过API网关配置的lambda函数,该函数应该通过Node(例如:Twilio)访问外部API。我不想在lambda函数中存储函数的凭据。有没有更好的地方设置它们?
答案 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函数中已经使用了什么?基于此,以及以下考虑因素:
在任何情况下,您都需要创建一些安全策略(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角色。