如何在serverless.com项目的代码中存储加密的机密?


12

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

但是,将加密的机密提交给Git并不是世界上最好的事情。一方面,需要更改机密时需要更改代码。

但是仅就安全性而言,还有什么更好的选择?例如,机密可以存储在S3中(加密),并且Lambda可以访问该位置和KMS密钥,但是实际上这在任何有意义的方式上都更好吗?


这种意见恐惧症的语义体操使我不感兴趣。
阿萨夫·拉维

Answers:


7

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

  1. 具有与正在配置的代码分开的发布节奏来维护配置的能力很有价值。这样做鼓励以自动方式轮换凭证,并定期进行,使之轻松自如。

  2. 从“基础架构即代码”的角度来看,将所有配置存储在Git中是完全合理的,尽管可能将其存储在其他存储库中,因为配置范围可能跨越多个服务。

  3. 假设以上两种情况都与您的情况有关,我倾向于使用KMS加密数据并将其存储在S3或DynamoDB中。我什至可以说,在非常简单的情况下,将数据加密和存储在KMS本身中可能是合适的

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


1

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

如果您的秘密管理需求更加复杂,那么像Hasicorp Vault(https://github.com/hashicorp/vault)这样的东西将是一个不错的选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.