Elastic Beanstalk的环境variables是否存储秘密值的适当位置?

我已经将我的Django应用程序部署到了Elastic Beanstalk,目的是使用其环境variablesconfiguration接口来存储我的API密钥,而不是将它们存储在我的源代码中(如以下https://stackoverflow.com/a/17878600所述 )。

这样做后,我发现Beanstalk调用环境variables实际上并不是shell环境variables(如这里提到的https://stackoverflow.com/a/24564832/378638 ),并在实例中存储在一个configuration文件(如这里描述https://stackoverflow.com/a/24566283/378638 )。

这对我来说似乎是一个安全问题。 这难道不会破坏保密密钥的目的吗? 我知道他们不再在回购,但他们仍然可以访问的实例。

我误解了风险? 我是inheritance的系统pipe理员,请原谅我的无知。 我是否应该通过configuration文件加载Beanstalkvariables作为shell环境variables,并继续前进,因为文件只能通过root访问,或者我关心的是否有效? 谢谢。

保持源代码秘密的一点是,它们不会进入源代码pipe理 。 这在开源项目中特别有用。

部署时,秘密在文件或envvar中无关紧要。 重要的是,只有你的程序正在运行的操作系统用户可以读取它。 这是envvars的默认值,这很方便。

Root可以随时读取所有内容。 所以亚马逊可以知道你的秘密价值,因为它们是根源。

他们确实支持昂贵的硬件安全模块(HSM),这将使您的密钥不可读。 当然,他们仍然可以使用 HSM解密你的东西,只是从来没有得到实际的密钥。

所以要么你需要信任亚马逊,要么自己托pipe东西,要么共处。