使用serverless.com,向AWS Lambda函数公开机密的最简单方法是将其存储在serverless.yml文件中(例如,用KMS加密)。

但是,将加密的机密提交给Git并非如此世界上最好的东西。一方面,需要更改机密时需要对代码进行更改。例如机密可以存储在S3中(加密),并且Lambda可以访问该位置和KMS密钥,但是实际上以任何有意义的方式都更好吗?

评论

这种意见恐惧症语义体操对我不感兴趣。

#1 楼

这里有几个要考虑的因素:


能够以独立于所配置代码的发布节奏维护配置的能力很有价值。这样做会鼓励以自动方式旋转凭据,定期进行此过程会轻松无事。
从“基础架构即代码”的角度来看,将所有配置存储在Git中是完全合理的,尽管可能将其存储在不同的存储库中,因为配置范围可能跨越多个服务。
以上两种陈述都与您的情况有关,我倾向于使用KMS加密数据并将其存储在S3或DynamoDB中。我什至可以说,在非常简单的情况下,可能适合在KMS本身中加密和存储数据。

有几个开源库将支持此操作:


Python:CredS3

转到:运动鞋



#2 楼

我通常将机密视为作用域中的配置数据。因此,它不能与代码一起使用,因为它们是由不同的发布计划和流程处理的。单独的git repo,KMS,dynamo,s3或配置管理系统(chef-vault / chefworld中的加密数据库)内部都是不错的地方。基本上,您不需要构建和部署软件的新版本来更新机密。

如果您的机密管理需求更加复杂,则可以使用Hasicorp Vault(https:/ /github.com/hashicorp/vault)是一个不错的选择。