0

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

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

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

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

  4. 保险柜:如果要使用保险柜,它也需要一个密钥/密码来存储在 PV 中(以及 #1 的问题)

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

谢谢,

米顿

4

1 回答 1

0

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

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

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

希望有帮助!:)

于 2019-07-12T10:19:44.460 回答