我正在将hashicorp Vault与springboot maven一起使用来存储我的数据库凭证尝试访问Vault时获得403权限被拒绝

问题描述

注意:保险柜由我项目中的其他团队管理。 下面是我的boorstrap.yml配置

spring:
    application:
       name: MongoSecrets

profiles:
   active: dev
cloud:
   vault:
      enabled: true
      uri: https://vaulturl:443
      scheme: https
       token: "LDAP token"
       kv:
          enaled: true
           backend: MySecrets
       ssl:
           trust-store: cacerts

使用的依赖项-spring-cloud-starter-vault-config,spring-cloud-dependencies

已从Vault团队接收对MySecrets文件夹的访问。以下是为文件夹设置的策略

path "MySecrets/*" {capabilities= ["create","read","update","delete","list"]}

以下是我得到的例外情况:

org.springframework.vault.authentication.LifecycleAwareSessionManager : Scheduling Token renewal
  org.springframework.vault.core.lease.SecretLeaseEventPublisher$LoggingErrorListener : [RequestedSecret [path='secret/MySecrets/dev',mode=ROTATE]] Lease [leaseId='null',leaseDuration=PT0S,renewable=false] Status 403 FORBIDDEN secrets/MySecrets/dev: 1 error occurred:
  | * permission denied
  |  
  |  
  | org.springframework.vault.VaultException: Status 403 FORBIDDEN secret/MySecrets/dev: 1 error occurred:
  | * permission denied

解决方法

您的bootstrap.yml错误,存在缩进问题,并且您拼错了一个属性。

   kv:
      enaled: true
       backend: MySecrets

应该是:

   kv:
      enabled: true
      backend: MySecrets

但是spring仍然会记录一些错误,因为它会在启动过程中尝试使用配置文件,应用程序和后端的不同组合。

,
generic:  
  enabled: false    
kv:  
 enabled: true

将引导程序更改为以上对我有用。我的客户设置保险柜策略的方式似乎存在一些问题。默认启用通用后端。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...