我一直在阅读有关Spring Cloud Config服务器的信息,以帮助我们迁移到云上的集中式配置服务器。当前,我们将配置和密码都存储在一个文件中,在生产中,只有有限的人可以访问该文件。对于在实际生产中使用它支持的各种后端实现它,我有一些疑问:
文件系统:如果我们使用文件系统作为云上配置的存储介质,则将需要一个持久卷。在这种情况下,PV对于不同的环境将有所不同。当我们需要在Prod中使用新配置更新PV时,该怎么做? (我只能想到让容器安装PV并通过bash和add / update config登录到容器)。有其他方法吗?
Git :如果我们使用git作为存储介质,并且假设针对不同环境有不同的分支,则开发人员将能够查看Prod分支以及Prod分支中的密码。 Googling建议无法限制Git中某些分支的查看。那么Git在这里有什么帮助?另外,与Git的连接需要密码/ SSH密钥,这需要存储在PV中(然后#1的问题再次适用)
JDBC :如果我们有一个数据库作为存储介质,则需要在SCCS配置文件中指定用于连接数据库的密码-这又是不安全的。我们可以从文件系统中的文件中加载它,但这意味着我们需要PV来存储密码(然后#1的问题再次适用)。另外,如何为生产完成对配置的添加/更新? (如果使用RDBMS,我们需要连接客户端并运行SQL插入吗?)
保险柜:如果要使用保险库,它也将需要一个密钥/密码存储在PV中(再次是#1的问题)
总体而言,我不确定如何在实际生产环境中使用SCCS。如果某人已经实现了SCCS for Production的配置,并且其配置中带有密码,您能否分享一些见解?
谢谢
Midhun
答案 0 :(得分:0)
请查看文档的这一部分:Encryption and Decryption。这样,只有配置服务器才能加密/解密存储在外部化配置文件中的值。使用TLS和基本身份验证,因此只有应用程序才能访问解密端点,并且在客户端和服务器之间安全地发送解密端点。
如果您在Kubernetes上运行(因为提到了PV),则可以使用secret并将secret中的值用作容器中的环境变量。
为集中式配置服务器创建一个单独的名称空间,并使用RBAC限制对管理此名称的团队的访问。如果您遵循基本身份验证设置,这也适用于需要具有凭据才能访问服务器的客户端。只需在bootstrap.properties
文件中为配置服务器的URL,用户名和密码添加占位符,就可以了。
要考虑的另一件事是拥有多个git存储库,配置服务器和各个团队都可以访问。这样,团队A无法访问团队B的配置存储库。
希望有帮助! :)