运行Java应用程序时在何处保存AWS API密钥的最佳实践

运行Java应用程序时在何处保存AWS API密钥的最佳实践,java,security,amazon-web-services,Java,Security,Amazon Web Services,我有一个连接到AWS的Java应用程序,可以用EC2和S3做各种事情,当部署到生产环境中时,我显然希望将密钥保留在代码库之外。建议将密钥作为环境变量保存在服务器上,还是在启动时读取并设置访问密钥值或其他文件 谢谢 我也写过类似的代码。最初,我把pem文件和所有东西都放在应用程序的资源文件夹中。很快,我们意识到把它作为源代码控制的一部分是不好的 因为这是一次性的事情,所以我们最终将文件保存到安装了deployer应用程序的服务器的文件夹中,该文件夹仅对运行deployer应用程序的用户具有读取权限

我有一个连接到AWS的Java应用程序,可以用EC2和S3做各种事情,当部署到生产环境中时,我显然希望将密钥保留在代码库之外。建议将密钥作为环境变量保存在服务器上,还是在启动时读取并设置访问密钥值或其他文件


谢谢

我也写过类似的代码。最初,我把pem文件和所有东西都放在应用程序的资源文件夹中。很快,我们意识到把它作为源代码控制的一部分是不好的

因为这是一次性的事情,所以我们最终将文件保存到安装了deployer应用程序的服务器的文件夹中,该文件夹仅对运行deployer应用程序的用户具有读取权限


因此,我的建议是将文件保存在远离源代码管理的安全位置。

我建议将此文件保存在源代码管理中。只有那些具有特定于服务器属性的文件才应该保存在服务器上,这里的情况似乎不是这样。@SanjeevKumarDangi-私钥对永远不应该易手。应该只有一份,而且应该是具体的。当您放入SCM时,每个开发人员都会有一个副本。离开一个愤怒的前雇员吹掉你的刺针的后果,你的机器有可能被黑客入侵,你的密钥对在pastebin上共享。此外,如果许多人使用共享密钥进行更改,则很难区分任务是由应用程序完成还是由用户完成。即使是OP也拒绝将这些道具保存在代码库中,这是显而易见的。