使用 Spring 云连接器解密密码的钩子
Hook for Decrypting Passwords with Spring Cloud Connectors
我们有一个部署到 CloudFoundry/Bluemix 的应用程序。应用程序从 VCAP_SERVICES
环境变量中读取其数据库连接。存储在环境变量中的db密码是加密的,我们在应用启动的时候解密。
我们正在查看 Spring Cloud Service Connectors。云连接器是否提供任何挂钩,以便我们可以在创建 DataSource 实例之前从 VCAP_SERVICES 解密密码?
你为什么要这样做?应用程序从哪里获得解密密钥?如果它在应用程序中进行了硬编码,则这是一种反模式,会使密钥轮换变得困难。如果它是通过一个环境变量,那么它并不比将未加密的数据库凭证作为服务存储在 Cloud Foundry 中更安全——CF 中的服务只不过是特定于域的环境变量组。我看不出对它们进行加密会增加任何安全性。
回答这个问题:不是开箱即用的,但您可能会拦截 Spring 组件的流,这些组件作用于 Cloud Foundry 提供给您的应用程序的环境变量。
创建 ServiceInfo
个实例的抽象 class 也是 CloudFoundryServiceInfoCreator. You could look at maybe providing a custom implementation of this? There is a blog post describing how Spring Cloud Connectors works. You might be able to extend CloudFoundryConnector。
我们有一个部署到 CloudFoundry/Bluemix 的应用程序。应用程序从 VCAP_SERVICES
环境变量中读取其数据库连接。存储在环境变量中的db密码是加密的,我们在应用启动的时候解密。
我们正在查看 Spring Cloud Service Connectors。云连接器是否提供任何挂钩,以便我们可以在创建 DataSource 实例之前从 VCAP_SERVICES 解密密码?
你为什么要这样做?应用程序从哪里获得解密密钥?如果它在应用程序中进行了硬编码,则这是一种反模式,会使密钥轮换变得困难。如果它是通过一个环境变量,那么它并不比将未加密的数据库凭证作为服务存储在 Cloud Foundry 中更安全——CF 中的服务只不过是特定于域的环境变量组。我看不出对它们进行加密会增加任何安全性。
回答这个问题:不是开箱即用的,但您可能会拦截 Spring 组件的流,这些组件作用于 Cloud Foundry 提供给您的应用程序的环境变量。
创建 ServiceInfo
个实例的抽象 class 也是 CloudFoundryServiceInfoCreator. You could look at maybe providing a custom implementation of this? There is a blog post describing how Spring Cloud Connectors works. You might be able to extend CloudFoundryConnector。