保护对spring cloud configserver的访问

时间:2015-10-01 13:26:21

标签: spring configuration spring-cloud

我想知道人们在使用Spring Cloud Config时如何处理安全问题。 我计划将Spring Cloud Config Server和Client与Spring Boot一起使用。从实现的角度来看,这是非常直接的,但是如何处理向每个开发人员泄露密码/访问权限的风险。 例如您运行一个包含所有环境配置的中央配置服务器。在配置客户端应用的bootstrap.yml中,您必须配置username / password才能访问配置服务器。到目前为止一切都很好,但是当我知道在相应的yml文件中提交用户名/密码时,每个开发人员都可以通过仅从例如切换配置文件来访问所有环境。 developmentproduction(请不要开始讨论为什么不是每个开发人员都需要访问制作)。

我知道我可以对配置中的所有密码进行加密,我们这样做,但这不是我想要的。加密只是没有密码在文件中存储明文的功能,但如果用户首先可以访问配置服务器,则不需要知道普通密码才能获得访问权。

这也是为了避免在开发过程中出现错误......只需轻松切换本地环境即可连接到生产环境或任何其他环境。

那么人们如何处理这个?您是否在其他环境中为开发中注入了不同的bootstrap.yml?如果是这样,你如何管理/传播这些?

您是否在comandline上设置配置用户的密码? ...?

2 个答案:

答案 0 :(得分:0)

我们使用配置服务器URL,用户和密码的变量和默认值

$ {config_username:用户}:$ {config_password:密码} @ $ {config_server:conf.mydomain.com}

默认值可以是开发环境的有效凭据,这样您只需在开发时运行它。部署到生产环境时,只需设置这些环境变量,您的应用程序将连接到不同的配置服务器

答案 1 :(得分:0)

我自己在考虑这个问题,提出了3个选择。在所有情况下,请在仓库中为敏感数据使用{cipher}值,并禁用各种执行器端点,以允许解密或属性值列表。

  1. 具有两台配置服务器,一台用于开发人员,一台用于生产产品,没有开发人员对生产服务器的访问,由运行时提供给生产客户端的凭据控制。
  2. 使用在运行时提供给产品客户端的密钥来执行解密客户端。
  3. 明确定义产品概要文件,并阻止从非产品服务器访问包含该概要文件的URL。