使用 Spring Cloud Vault 在 Spring Boot 应用程序中自动更新 AWS 凭证
Posted
技术标签:
【中文标题】使用 Spring Cloud Vault 在 Spring Boot 应用程序中自动更新 AWS 凭证【英文标题】:Automatically renew AWS credentials in a Spring Boot application using Spring Cloud Vault 【发布时间】:2019-03-27 18:05:54 【问题描述】:我正在尝试创建一个定期从 AWS S3 获取数据的 Spring Boot 应用程序。
AWS S3 凭证在应用程序启动时使用 Spring Cloud Vault 从 Vault 中获取。
我的问题是由于 Vault 政策,AWS S3 凭证的使用寿命有限,因此我必须不时重新启动我的应用程序才能从 Vault 获取新凭证
有没有办法使用这些凭据自动重启 bean?
【问题讨论】:
【参考方案1】:TL;DR
不,没有自动化,但你可以自己做。
更长的阅读时间
Spring Boot 和 Spring Cloud 并不是真正用于不间断地对配置应用持续更新。 Spring Cloud Config 附带Refresh Scope 支持,允许使用@RefreshScope
注释bean 并触发重新初始化的bean 的刷新。这种方法需要与消息总线集成或触发刷新端点。
另一种仅限于 AWS 功能的替代方案是提供自己的 AWSCredentialsProvider
实施,该实施由 Vault PropertySource
支持,该 Vault PropertySource
将轮换应用于您的凭证。这需要您提供一些与VaultConfigurer
集成的代码,甚至直接通过SecretLeaseContainer
来获取秘密生命周期事件回调。见here for an integration example。
有一个ticket asking for the same question 包含为什么这种模式不能广泛适用的背景。
【讨论】:
以上是关于使用 Spring Cloud Vault 在 Spring Boot 应用程序中自动更新 AWS 凭证的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Vault 和带有 Vault 后端的 Spring Cloud Config 之间的区别
使用Spring Cloud Config进行分布式配置:Vault 后端
使用 Spring Cloud Vault 在 Spring Boot 应用程序中自动更新 AWS 凭证
引起:java.lang.IllegalArgumentException:令牌(spring.cloud.vault.token)不能为空 - Hashicorp Vault