java - 使用微服务 AppRole 到 Spring Cloud Config Server 和 Vault 集成
问题描述
如何将带有 AppRole [in Vault] 的微服务连接到带有 Vault 后端的 Spring Cloud Config Server。
我可以看到使用诸如 curl -X GET http://localhost:8888/my-service/default -H "X-Config-Token: s.TmqaRA2lASdNhJZqqZy7y8pX" 之类的根令牌的示例。但是我找不到任何使用approle连接spring cloud config服务的例子。
但我不想将根令牌从微服务传递到 spring 云配置服务器,而是每个服务都定义了应用角色,它应该能够连接 spring 云配置,然后连接到 Vault 并获取数据。
解决方案
使用 Spring Cloud Config Server 作为中央配置代理时,我遇到了同样的问题。
我发现了以下提供解决方案的GitHub 问题。简而言之,您必须将 spring-vault-core 依赖项添加到您的依赖项中,以便为 AppRole 身份验证添加有效的令牌解析器:
马文:
<dependency>
<groupId>org.springframework.vault</groupId>
<artifactId>spring-vault-core</artifactId>
</dependency>
摇篮:
implementation "org.springframework.vault:spring-vault-core"
这应该可以直接解决问题。当然,下面的配置必须下注设置:
spring:
cloud:
config:
server:
vault:
port: 443
host: myvault.domain.com
scheme: https
backend: mybackend
kv-version: 2 #required if secrets engine version is v2 (default: v1/1)
timeout: 5 #seconds
authentication: APPROLE
app-role:
secret-id: 1234567-234567-23456-12341
role-id: 987654-3456-9865-1235
role: my-role-name #optional
app-role-path: approle #optional if non default (default: approle)
添加依赖、配置并启动服务后,出现以下日志消息:
2021-04-30 12:40:31.211 INFO 53327 --- [nio-8888-exec-2] osvaLifecycleAwareSessionManager:调度令牌更新
然后X-Config-Token
不再需要标题。
有关 Vault 设置的更多信息,请访问:
推荐阅读
- .net - 使用 Azure 托管服务标识连接到 Cosmos DB 帐户
- java - 有没有办法播放不同的音频文件而不用自己的函数调用它们?
- amazon-web-services - 最新的 Lambda 层 ARN
- javascript - 以函数式编程风格存储值
- javascript - 如何使用 sinon 模拟非类成员函数
- angular - Angular7 的 HTML 编辑器
- windows - 导入支持 GPU 的 TensorFlow 时,DLL 加载失败
- python - Pandas Date Groupby & Apply - 性能改进
- reactjs - React redux 更新 flatlist 项目,但将项目转换为数组
- php - PhpWord - TemplateProcessor:错误复制模板