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

Tol*_*oli 29 amazon-web-services aws-lambda aws-api-gateway

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

Nig*_*gel 17

在发布此问题后,可能会将此功能添加到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密钥并选择它而不是默认密钥.选择时,默认密钥会出错."

默认键肯定会"在选择时给出错误" - 这让我想知道为什么他们将它放入下拉列表中.

资料来源:


Mic*_*kis 7

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


eis*_*ati 5

AWS上的任何存储服务或数据库服务都可以在这里解决您的问题。问题是您当前的AWS Lambda函数中已经在使用什么?基于此,以及以下注意事项:

  • 如果您需要快速且成本不是问题,请使用Amazon DynamoDB
  • 如果您快速需要它并且考虑成本,请使用Amazon ElastiCache(Redis或Memcache)
  • 如果您已经在使用某些关系数据库,请使用Amazon RDS
  • 如果您不使用任何东西并且不需要快速使用,请使用Amazon S3

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

注意:Amazon VPC对AWS Lambda的支持迫在眉睫,因此您选择的任何解决方案都请确保与Lambda函数位于同一VPC中(有关详细信息,请访问https://connect.awswebcasts.com/vpclambdafeb2016/event/event_info。 html)


Bro*_*oks 0

我假设您指的不是 AWS 凭证,而是外部 API 凭证?

我不知道这是一个好地方,但我在 AWS 论坛上找到了人们将凭证放在 S3 上的帖子。

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

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

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