我有一个 Vault 服务器正在运行:
$ vault server --dev --dev-root-token-id="00000000-0000-0000-0000-000000000000"
$ export VAULT_ADDR=http://127.0.0.1:8200
Spring 工件具有spring-cloud-starter-vault-config
maven 依赖项。使用 VaultTemplate 时,它可以使用以下方法毫无问题地写入和读取机密:
VaultKeyValueOperations keyValue = vaultOperations
.opsForKeyValue("secret", VaultKeyValueOperationsSupport.KeyValueBackend.versioned());
keyValue.put("myPath", mySecretsObject);
和
VaultResponse response = vaultOperations
.opsForKeyValue("secret", VaultKeyValueOperationsSupport.KeyValueBackend.KV_2).get("myPath");
但是,如果我使用write
andread
方法,它会引发错误:
vaultOperations.write("secret/myPath", mySecretsObject);
返回
{ "timestamp": "2019-11-19T18:22:52.156+0000", "status": 500, "error": "Internal Server Error", "message": "Status 404 Not Found [secret/myPath]: {\"request_id\":\"23062c09-f9cf-f170-930c-e6d60f98dd62\",\"lease_id\":\"\",\"renewable\":false,\"lease_duration\":0,\" data\":null,\"wrap_info\":null,\"warnings\":[\"版本化 K/V 机密引擎的路径无效。有关要使用的适当 API 端点,请参阅 API 文档。如果使用 Vault CLI,请使用 'vault kv put' 进行此操作。\"],\"auth\":null};嵌套异常是 org.springframework.web.client.HttpClientErrorException$NotFound: 404 Not Found", "小路”: ”
而对于
VaultResponse response= vaultOperations.read("secret/" + environment);
String stringResp = response.getData().toString();
response
一片空白。读取没有错误,但是NullPointerException
在尝试读取时我得到了response
,因为它是空的。
我发现了一个与写入错误相关的问题 - 写入时出现Vault 错误- 但它是在 Vault CLI 的上下文中。找不到如何在 Spring 环境中应用该解决方案。