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

Spring 云服务器未从 Vault 后端访问所有配置文件

蓝宜
2023-03-14

我是HashiCorp Vault的新手,并设置了Spring云配置服务器,将Vault作为存储机密,密钥等的后端。

问题是我能够访问默认级别存储的机密,例如:

curl -X "GET" "http://localhost:8888/myapp/default" -H "X-Config-Token: XXX"

但是,我无法访问我存储在Vault中的配置文件特定机密。无论我将机密存储在哪个配置文件中,API始终返回默认值而不是配置文件特定值。

例如:

curl -X "GET" "http://localhost:8888/myapp/prod" -H "X-Config-Token: XXX"

以下是存储在Vault开发实例(1.1.3版)上的秘密:

1. vault kv put secret/myapp foo=myappsdefault
2. vault kv put secret/myapp/prod foo=myappsprod

Spring云配置服务器application.yml:

spring:
  profiles:
    active: vault
  cloud.config.server.vault.kvVersion: 2
server:
  port: 8888

Spring云服务器pom.xml:

            <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.0.6.RELEASE</version>
                <relativePath/>
            </parent>

            <properties>
                <spring-cloud.version>Finchley.SR2</spring-cloud.version>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-config-server</artifactId>
                </dependency>

                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                </dependency>
            </dependencies>    

预期:

curl -X "GET" "http://localhost:8888/myapp/prod" -H "X-Config-Token: XXX"

{
"name": "myapp",
"profiles": [
  "prod"
],
"label": null,
"version": null,
"state": null,
"propertySources": [
  {
"name": "vault:myapp",
"source": {
"foo": "myappsprod"
}
}
],
}

实际:

{
"name": "myapp",
"profiles": [
  "prod"
],
"label": null,
"version": null,
"state": null,
"propertySources": [
  {
"name": "vault:myapp",
"source": {
"foo": "myappsdefault"
}
}
],
}

以下是保险库输出:

vault kv get secret/myapp/prod


=== Data ===
Key    Value
---    -----
foo    myappsprod


vault kv get secret/myapp

=== Data ===
Key    Value
---    -----
foo    myappsdefault

所以问题就变成了为什么spring云服务器只查询默认的配置文件机密,而不是特定于环境的?

顺便说一句,配置文件正在应用于我存储在回购中的GIT文件,同时将Spring云服务器与GIT集成为后端,我期待与Vault类似的东西。

共有1个答案

子车睿
2023-03-14

在配置上苦苦挣扎之后。我尝试在我的 application.yml 中添加其他属性,这对我的情况有所帮助。

application.yml的快照:

server:
  port: 8888

spring:
  profiles:
    active: vault
  cloud:
    config:
      server:
        vault:
          port: 8200
          host: 127.0.0.1
          kvVersion: 1
          backend: kv
          profileSeparator: /
          #skipSslValidation: true
          #defaultKey: signing

management:
  endpoints:
    web:
      exposure:
        include: '*'

附加的事情是:1.我将后端从机密更改为kv(我的自定义机密引擎)2.配置文件分隔符为/(在. yml中使用/)

在我的情况下,“profileSeparator”key成功了

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

  • 我是Spring Cloud的新手,我正在尝试使用存储在github上的属性文件连接服务器和客户端。 我的服务器应用程序。yml文件的配置如下: github回购协议链接在这里,主要属性和替代属性 我的客户端应用程序具有以下设置 Rest控制器是: 所有${变量}van都可以在位于git存储库中的属性文件中找到。 服务器运行正常,但是客户端给了我以下错误 创建名为“rateController”的

  • 我正在使用Spring Cloud Config Server为我的客户端应用程序提供配置。为了方便机密配置,我使用HashiCorp Vault作为后端。对于其余的配置,我使用GIT repo。因此,我在复合模式下配置了配置服务器。请参阅我的配置服务器引导。yml如下:- 这一切都按预期工作。但是,我使用的代币使用Vault auth策略进行保护。见下文:- 我的问题是,我没有在所有这些范围内存

  • 我试图修改我们目前的Spring云配置服务器,它只有一个JDBC后端,以包括一个保险库后端,以使JDBC连接证书保密。 库: bootstrap.yml 应用程序. yml 没有从vault中检索spring.datasource用户名和密码。

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

  • 我有一个使用SpringCloud配置的Spring Boot应用程序,我正在尝试从Bitbucket获取应用程序的配置文件。前一段时间我可以获取配置文件,但现在我在尝试通过配置服务器url访问时出错。 应用yml: 当我试图访问网址的应用程序显示一个错误-未授权: 有人知道发生了什么吗?我已经检查了bitbucket上的所有凭据和url。