写入时保险库错误

时间:2018-04-17 07:43:46

标签: spring spring-cloud hashicorp-vault spring-cloud-vault-config

我想测试Spring Cloud Vault配置。

我在本地安装了Vault服务器,当我尝试write某些键值失败并要求我使用vault kv put命令时。

虽然Spring Cloud Config in this link的示例显示了Vault写命令的使用

这是我得到的错误

$ vault write secret/my-app foo=bar
Error writing data to secret/my-app: Error making API request.

URL: PUT http://127.0.0.1:8200/v1/secret/my-app
Code: 404. Errors:


WARNING! The following warnings were returned from Vault:

  * Invalid path for a versioned K/V secrets engine. See the API docs for the
  appropriate API endpoints to use. If using the Vault CLI, use 'vault kv put'
  for this operation.

4 个答案:

答案 0 :(得分:19)

尝试以下方法..

./vault kv put secret/my-app password=123

我将补充说这是0.10.0中的新内容。

似乎0.10.0有一些重大的API更改...所以解决方案#2是使用早期版本的Vault(v0.9.6)。这包括默认为版本化的KV秘密引擎的v2。

解决方案#3是使用KV的v1重新创建/ secret引擎。运行以下内容:

./vault secrets disable secret 
./vault secrets enable -version=1 -path=secret kv

答案 1 :(得分:6)

在使用以下命令

启用单独路径后,我能够写入
vault secrets enable -path=my-app kv
vault write my-app/my-app password=123

在Spring Cloud Config中,我不得不在bootstrap.yml文件中提到文件夹名称作为后端

spring:
  cloud:
    vault:
      token: bc53d1a4-2551-4869-9574-7a9e60501ec1
      scheme: http
      generic:
        backend: my-app

答案 2 :(得分:1)

在使用python,hvac,vault和kv作为引擎期间,我遇到了相同的错误。并且kv-engine已版本化。我用了hvac client

client.write("secret/taras", data=dict(python='is secret'))

所以我得到了

  

InvalidPath:“ request_id”:“ d5c0f889-2c42-4141-1cc6-31ed1336c768”,“ lease_id”:“”,“ renewable”:false,“ lease_duration”:0,“ data”:null,“ wrap_info”: null,“警告”:[“版本化的K / V秘密引擎的无效路径。有关要使用的适当API端点,请参阅API文档。如果使用Vault CLI,请对该操作使用'vault kv put'。”], “ auth”:null}

我解决此问题的方法是更改​​存储秘密的路径

client.write("secret/data/taras", data=dict(python='is secret'))

PS:如您所知,我的秘密名称为“ taras”。

答案 3 :(得分:0)

在Windows中,在命令提示符下尝试以下操作,

SET VAULT_TOKEN = 00000000-0000-0000-0000-000000000000

SET VAULT_ADDR = http://127.0.0.1:8200

vault kv放置秘密/ gs-vault-config example.username = demouser example.password = demopassword

(现在在Hashicorp Vault中创建键值有所变化。使用kv put而不是write。)