Elastic Beanstalk的环境变量是否适合存储秘密值?


15

我已将Django应用程序部署到Elastic Beanstalk,目的是使用其环境变量配置界面来存储我的API密钥,而不是将其存储在我的源代码中(如此处/programming//a/17878600所述)。

完成此操作后,我发现Beanstalk所谓的环境变量实际上并不是shell环境变量(如此处/programming//a/24564832/378638所述),并存储在实例中的配置文件中(如在此处描述/programming//a/24566283/378638)。

对我来说,这似乎是一个安全问题。这是否违反了将秘密密钥保留在源头之外的目的?我了解它们已不在存储库中,但仍可在实例上访问。

我会误会风险吗?我是继承人,所以是sysadmin,所以请在这里原谅我的无知。我是否应该仅通过配置文件将Beanstalk变量作为外壳环境变量加载并继续运行,因为该文件只能通过root用户访问,还是我的关注点有效?谢谢。

Answers:


12

将秘密保密于源代码的目的是使其不受源代码控制。这在开源项目中特别有用。

部署后,密钥位于文件还是envvar中都没有关系。重要的是,只有程序正在运行的OS用户才能读取它。这是envvars的默认设置,这很方便。

根始终可以读取所有内容。因此,Amazon可以知道您的秘密值,因为它们是根。

它们确实支持昂贵的硬件安全模块(HSM),这会使您的密钥不可读。当然,他们仍然可以使用 HSM来解密您的资料,只是永远不会获得实际的密钥。

因此,您要么需要信任亚马逊,要么自己托管东西,或者托管。

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.