【发布时间】:2020-03-15 09:15:07
【问题描述】:
我有一个 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 和 read 方法,它会抛出错误:
vaultOperations.write("secret/myPath", mySecretsObject);
返回
{ "时间戳": "2019-11-19T18:22:52.156+0000", “状态”:500, "error": "内部服务器错误", “消息”:“找不到状态 404 [secret/myPath]:{\“request_id\”:\“23062c09-f9cf-f170-930c-e6d60f98dd62\”,\“lease_id\”:\“\”,\“可再生\":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 未找到”, “路径”:“/vault/secrets/mySecrets”}
对于
VaultResponse response= vaultOperations.read("secret/" + environment);
String stringResp = response.getData().toString();
response 为空。读取没有错误,但我在尝试读取response 时得到NullPointerException,因为它是空的。
我发现了一个与写入错误有关的问题 -Vault error while writing - 但它是在 Vault CLI 的上下文中。找不到如何在 Spring 环境中应用该解决方案。
【问题讨论】:
标签: java spring hashicorp-vault spring-cloud-vault-config