我正在致力于将 Java Web 应用程序从开发转移到预生产。作为该过程的一部分,tomcat“application.properties”文件中的一些字段(例如数据库密码和 API 令牌)需要加密。我正在努力寻找一种安全的方法来做到这一点。我最初计划使用 Jasypt,但据我所知,该库已经好几年没有看到实质性更新了。我不确定替代方案是什么。我能想到的最好办法是从 gitlab 查询存储的私钥变量,但我仍然需要弄清楚如何实际进行加密/解密。
如有任何帮助或建议,我们将不胜感激。
关于我正在使用的限制的一些注释:
详细说明一下,Richard 给出的答案是 100% 有效的,我们不仅可以使用 AWS Secret Manager 来保护敏感数据,还可以使用像 HashiCorp 这样的保险库,或者如果预算/要求允许,我们可以使用基于 HSM 的解决方案(硬件安全模块)这可能有点过分了。
您给出的限制不是问题,因为这是部署应用程序 WAR 的标准过程。
但是,如果您决定要加密敏感数据,您可以做的是。
使用某种加密算法加密敏感数据,并将实际密钥保存在AWS秘密管理器本身中。应用程序部署后,当您可以从代码访问 AWS 密钥管理器时,您始终可以从密钥管理器请求加密密钥并动态解密您的数据。
这又存在一个问题,在上述操作中,我们首先假设我们的 AWS 秘密凭证是安全的。 (标准的先有鸡还是先有蛋的问题)
如您所见,没有一种解决方案适合所有场景。我们需要确保我们遵循与维护各个级别的敏感数据相关的所有标准。 (密钥轮换、监控、服务授权、审计……这样的例子不胜枚举)
希望这有帮助。谢谢。