在云端的生产中实际使用 Spring Cloud Config?

Using Spring Cloud Config practically in Production on cloud?

我一直在阅读有关 Spring 云配置服务器的信息,以帮助我们迁移到云上的集中式配置服务器。目前,我们将配置和密码都存储在一个文件中,在生产环境中,有限的人可以查看该文件。我有几个关于在实际生产中使用它支持的各种后端实现它的问题:

  1. FileSystem :如果我们使用文件系统作为云端配置的存储介质,我们将需要一个持久卷。在这种情况下,不同环境的 PV 会有所不同。当我们需要在 Prod 中使用新配​​置更新 PV 时,如何完成? (我只能想到让容器挂载 PV 并通过 bash 和 add/update 配置登录到容器)。有不同的方法吗?

  2. Git :如果我们有 git 作为存储介质,假设我们有针对不同环境的不同分支,则开发人员将能够查看 Prod 分支以及 Prod 分支中的密码。谷歌搜索表明没有办法限制查看 Git 中的某些分支。那么 Git 在这里有什么帮助呢?此外,连接到 Git 需要密码/SSH 密钥,这将需要存储在 PV 中(然后#1 的问题再次适用)

  3. JDBC :如果我们有数据库作为存储介质,需要在SCCS中指定连接数据库的密码配置文件——这又是不安全的。我们可以从文件系统中的文件加载它,但这意味着我们需要 PV 来存储密码(然后#1 的问题再次适用)。此外,additions/updates 如何为生产完成配置? (如果使用RDBMS,我们需要连接一个客户端,然后运行 SQL插入?)

  4. Vault :如果要使用 vault,它也需要一个密钥/密码才能存储在 PV 中(同样是#1 的问题)

总的来说,我不确定在实际生产环境中如何使用 SCCS。如果有人实施了 SCCS for Production,其中他们的配置有密码,您能否分享一些见解?

谢谢,

米敦

请查看文档的这一部分:Encryption and Decryption。这样只有配置服务器可以 encrypt/decrypt 存储在外部化配置文件中的值。使用 TLS 和基本身份验证,因此只有应用程序才能访问解密端点,并在客户端和服务器之间安全发送。

如果您 运行 在 Kubernetes 上(因为您提到了 PV),您可以使用秘密并将秘密中的值用作容器中的环境变量。 为集中式配置服务器创建一个单独的命名空间,并使用 RBAC 限制对管理它的团队的访问。如果您遵循基本身份验证设置,这也适用于需要具有凭据才能访问服务器的客户端。只需在 bootstrap.properties 文件中为 URL 添加占位符,为配置服务器添加用户名和密码,就可以了。

另一件需要考虑的事情是拥有多个 git 配置服务器和各自团队都可以访问的存储库。这样A队就无法访问B队的配置仓库了。

希望对您有所帮助! :)