使用Git / Vault实现Spring Cloud Config的生产环境

时间:2017-10-11 04:04:18

标签: spring-cloud spring-cloud-config spring-cloud-vault-config spring-vault

Spring Boot - 2.0.0.M3 春云 - Finchley.M1

我想知道是否有人在使用数据库存储后端的生产设置中使用具有Vault和git支持的Spring Cloud配置服务器。 我已经使用Vault评估了Spring云配置,并考虑是否要使用Oracle JCE加密用户名/密码或Vault,并就此寻求建议。我们正在开发Springboot /微服务。

以下是我的发现 -

  1. Vault将引入一个额外的层,因此将在与Vault通信时引入额外的安全性审计用例。

  2. Spring云配置执行器端点在此时针对里程碑版本而被破坏以生成加密值,如果我们获得Oracle JCE支持,则加密/解密可能无效,因此我们通过稳定版本生成加密值。 / p>

  3. 我们不希望使用consul服务器,并且正在尝试使用Cassandra作为存储后端。

  4. 我使用AppRole使用了Vault身份验证后端,并使用读取权限生成了令牌(与根令牌不同,因为它使用相同的不安全)。但是,Spring Cloud配置目前仅支持来自客户端的基于令牌的身份验证。这意味着我们首先从Vault生成令牌,然后将其作为命令行/ env变量传递。 一些额外的关注点是令牌的到期(尽管我们可能有非过期令牌不确定利弊),重启,安全问题,实例化新的微服务。云配置端没有提供动态令牌/身份验证。

  5. 对于里程碑版本,我发现客户端加密/解密现在没有使用,建议使用RSA jar。这是我打开的门票。 https://github.com/spring-cloud/spring-cloud-config/issues/805#issuecomment-332491536

  6. 这些是我的一些观察,请分享您的想法,如果有任何案例研究/白皮书解决弹簧云配置库使用情况,设置和生产微服务环境的挑战。

    由于

2 个答案:

答案 0 :(得分:0)

感谢您与我联系。有人认为我要说的是App Role后端使用了两个不同的令牌,而spring-cloud-config-vault确实支持这个功能,请参阅:http://cloud.spring.io/spring-cloud-vault/single/spring-cloud-vault.html#_approle_authentication。根据文档,我以与利用配置服务器相同的方式利用保险库。我没有加密配置中的任何值,我只是不把它们放在那里。我把秘密值放在保险库中,让它服务配置。只要按键不碰撞,您就不必乱用任何东西,否则您可能需要调整优先级以使保险箱获胜,再次查看我上面提到的文档。我不会在spring-cloud-config中亲自加密/解密。因为您必须检查SCM中的密钥或将它们分发给您的团队以进行本地开发,否则您将失去使用这些密钥IMO的价值。

答案 1 :(得分:0)

感谢Spring Cloud Vault支持Vault,但不支持带有Vault的Spring云配置。唯一的方法似乎是将X-Config-token从Microservice传递给Config Server。我们对手动或通过脚本生成令牌的这一部分持怀疑态度。特别是在容器化和新的MS实例产生时。不确定这种方法,特别是在生产设置中。