首页 > 解决方案 > Spring Cloud Config Server - 服务器端占位符扩展替代方案

问题描述

我有以下情况:

  1. 带有 Git 后端的 Spring Cloud 配置服务器
  2. 客户端使用各自的标签/配置文件查询配置服务器,在客户端扩展相关占位符(即some.property=${spring.application.name}

这按预期工作。但是,由于 Git 后端的性质,存在一个额外的运行时(或至少启动)依赖项,其形式为可访问的 Git 存储库,其中必须包含敏感信息(加密或未加密)。

我想将其切换为在构建时复制到配置服务器旁边的文件后端。最后,我希望在 Config Server Jar 文件旁边有一个配置已经存在的 Docker 映像,并为它运行的环境提供占位符。

这个想法是这些占位符将通过环境变量进行扩展。所以,像:

config/application.yaml

spring.datasource.username=${environment.db.user}
spring.datasource.password=${environment.db.password}

secrets.env

ENVIRONMENT_DB_USER="..."
ENVIRONMENT_DB_PASSWORD="..."
docker run --env-file=secrets.env ...

这没有按预期工作。一方面,似乎正是这个用例被认为是一个安全漏洞,后来被修补了

我现在有点不确定最好的下一步是什么。我可以理解其中的原因,-不管安全隐患如何,即使有效,我也意识到我在服务器端有其他占位符(例如上面提到的some.property=${spring.application.name}),它们肯定应该在客户端解决,因为它们是客户端-具体的。但是,我不希望为所有客户端多次输入共享凭证(即外部 AWS 服务等)。

可以说不同的客户不应该共享的凭证,但这完全是一个单独的讨论。

在这种情况下,基于文件后端的配置服务器方法的最佳方法是什么?没有 - 或者我应该更喜欢替代方法,如 JDBC 后端?

标签: spring-cloudspring-cloud-config

解决方案


推荐阅读