2

我有一个 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-configmaven 依赖项。使用 VaultTemplate 时,它​​可以使用以下方法毫无问题地写入和读取机密:

VaultKeyValueOperations keyValue = vaultOperations
                    .opsForKeyValue("secret", VaultKeyValueOperationsSupport.KeyValueBackend.versioned());
            keyValue.put("myPath", mySecretsObject);

VaultResponse response = vaultOperations
                    .opsForKeyValue("secret", VaultKeyValueOperationsSupport.KeyValueBackend.KV_2).get("myPath");

但是,如果我使用writeandread方法,它会引发错误:

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 环境中应用该解决方案。

4

1 回答 1

0

Spring Cloud Vault 在挂载路径和实际上下文路径之间添加数据/上下文,请看: How to read Vault kv with java/spring boot

尝试:“secret/data/myPath”,其中 secrets 是您的 Secret 引擎类型 kv

于 2019-11-20T09:20:13.703 回答