设置:我有一个应用程序,我目前在服务器上手动部署。它需要多个凭据(外部服务的客户端机密、令牌以及 AES 密钥和 IV 等),我目前已将这些凭据存储在使用gpg. 每当我重新启动应用程序时,我都会gpg在控制台中解锁-key,然后服务将从应用程序脚本中再次解密文件(因为gpg-agent密码在内存中保留有限的时间)并通过管道解析它们。
这种方法的优点是,gpg访问它们所需的凭据和-passphrase 都不会持久化到磁盘,只保存在内存中。因此,即使具有完全的 root 访问权限,也无法恢复凭据。唯一的机会是在gpg-key 保持解锁状态的短时间内获得访问权限。
缺点是 (a) 其他用户无法启动该服务(除非我们共享我的帐户)和 (b) 应用程序无法通过任何自动方式启动。
github 上的creds项目与我正在做的类似,但仍然存在上述缺点。可以使用多个gpg密钥对文件进行加密,然后尝试使用所有密钥对其进行解密,直到成功为止。
问题:有什么更好的方法来处理 (a) 多个用户无需共享密钥或帐户即可访问的凭据,(b) 可通过 CI/CD 系统访问(每次部署发生时我都没有控制台), (c) 只在内存中保存密码数据?使用多个gpg键的“解决方法”看起来像一个复杂的黑客,并且不适用于 CI/CD 系统。