首页 > 解决方案 > Spring Cloud Vault 不适用于自定义挂载

问题描述

在本地机器上,我使用默认策略运行 Vault 服务器并编写了以下键值。

vault write secret/my-application username=Test

bootstrap.yml(工作)

spring:
  application:
    name: my-application
  cloud:
    vault:
      authentication: TOKEN
      token: sometoken
      host: localhost
      port: 8200
      scheme: http
      #uri: http://localhost:8200
      connection-timeout: 5000
      read-timeout: 15000
      config:
        order: -10

我能够使用 Spring Cloud Vault 获取值,即当我使用默认挂载(秘密)时。但是,如果我使用自定义 mount(group) 访问 QA 服务器,则会收到以下错误。

org.springframework.vault.VaultException:状态 403 机密/组/组类型/组名/数据库:权限被拒绝

(不知道为什么以 secret 为前缀)

bootstrap.yml(不工作)

spring:
  application:
    name: group/grouptype/groupname/DB
  cloud:
    vault:
      authentication: TOKEN
      token: sometoken
      host: 10.20.30.40
      port: 8200
      scheme: http
      #uri: http://10.20.30.40:8200
      connection-timeout: 5000
      read-timeout: 15000
      config:
        order: -10

但是,如果我从 POSTMAN 访问 API,它会按预期工作。

GET
http://10.20.30.40:8200/v1/group/grouptype/groupname/DB
Header:  
X-Vault-Token:sometoken

如何使自定义代理与 Spring Boot 应用程序一起工作。如何从上下文中排除秘密

标签: springspring-boothashicorp-vaultspring-cloud-vault-config

解决方案


对于自定义安装,我们必须添加 通用

spring:
  application:
    name: grouptype/groupname/DB
  cloud:
    vault:
      authentication: TOKEN
      token: sometoken
      generic:
        enabled: true
        backend: group
        default-conext: grouptype/groupname/DB 
      host: 10.20.30.40
      port: 8200
      scheme: http
      #uri: http://10.20.30.40:8200
      connection-timeout: 5000
      read-timeout: 15000
      config:
        order: -10

这里的“组”是挂载名称


推荐阅读