当前位置: 首页 > 知识库问答 >
问题:

使用微服务AppRole实现Spring云配置服务器和Vault的集成

纪翰
2023-03-14

如何将具有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 cloud config服务器,相反,每个服务都将定义app角色,该角色应该能够连接spring cloud config,spring cloud config反过来连接到Vault并获得数据。

共有1个答案

王高邈
2023-03-14

我在使用Spring Cloud Config服务器作为中央配置代理时也遇到了同样的问题。

我发现以下GitHub问题提供了一个解决方案。简而言之,您必须将spring-vault-core依赖项添加到您的依赖项中,以便为AppRole身份验证添加有效的令牌解析器:

Maven:

<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信息53327---[nio-8888-exec-2]O.S.V.A.LifecyCleAwareSessionManager:计划令牌续订

这样就不再需要x-config-token标头了。

    null
 类似资料:
  • 我正在设置一个Spring启动云配置服务器,它使用VAULT来存储秘密。 保管库身份验证机制设置为AWS_IAM。我的类路径中也有aws-java-sdk。aws cli也被配置。 当我向配置服务器发出请求时,我能够从VAULT中获取机密,但第一次请求除外 对配置服务器的第一个请求失败,因为它试图安排任务在到期后续订vault令牌(来自vault响应) 应用程序中的配置。性质 错误日志是

  • 我正在使用Spring Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 这里我的疑问是,当我们将这个应用程序部署到云中时,我们需要在application.properties中做什么更改?,因为我们不知道server.port和cloud中的“eureka.client.serviceurl.defaultzone”,这里我只使用localhost运行。 那么我们需要如何在配置中遵循云部署过程呢?我是Spring Cloud初学者,对这些配置有很多困惑。

  • 我们的项目中使用的是Spring Cloud config server,它有多个微服务。配置服务器就绪后,我们现在将所有微服务的所有属性存储在一个中央git存储库中。每个微服务能够根据应用程序名称和配置文件提取自己的属性文件。我们试图将资源包存储在中央存储库中,并让config-server将这些资源包提供给微服务。我们的资源包包括属性文件,如messages_en.properties、mes

  • 我正在尝试创建SpringCloudConfigServer,以便使用SSHURI连接到git存储库(bitbucket)。我正在关注Spring云配置 我使用ssh-keygen实用工具生成了密钥对,并粘贴了。发布文件内容在我的bitbucket帐户的ssh部分,但当我运行作为spring启动应用程序的服务器时,我得到无效的privateKey异常。 我也使用了这个堆栈溢出帖子中提供的建议,但是

  • 我正在使用Spring Cloud配置服务器,我需要为每个阶段的产品测试和开发创建一个配置文件,我已经为默认配置文件创建了4个yml文件application.yml,为每个配置文件创建了应用程序-{配置文件},所以我的问题是如何通过环境变量加载特定的配置,并在每个配置文件配置和端口上运行配置服务器,我已经创建了一个bootstrap.yml但我不能解决这个问题。如果有人能指导我完成这些步骤来满足