使用 node-vault 访问 HashiCorp Vault KV 密钥

6
我正在尝试使用 "node-vault" 访问 HashiCorp Vault KV,但一直遇到 "statusCode: 404" 的问题。
我正在按照 node-vault 的示例进行操作: https://github.com/kr1sp1n/node-vault 步骤如下: 1)在 Windows 10 上运行 vault_1.1.3_windows_amd64,并在 PowerShell 上输入命令“vault server -dev”。 2)然后在另一个 PowerShell 窗口中运行以下命令:
$env:VAULT_ADDR="http://127.0.0.1:8200"
vault secrets enable -version=1 kv
vault status
Key             Value
---             -----
Seal Type       shamir
Initialized     true
Sealed          false
Total Shares    1
Threshold       1
Version         1.1.3
Cluster Name    vault-cluster-28a041c6
Cluster ID      0ec85d70-8e87-dff6-347f-b1959fad8b44
HA Enabled      false

3) 然后使用以下代码运行

const rootKey = //whatever;
const unsealKey = //whatever;

var options = {
    apiVersion: 'v1',
    endpoint: 'http://127.0.0.1:8200',
    token: rootKey
};

var vault = require("node-vault")(options);
vault.unseal({ key: unsealKey })
    .then(() => {
        vault.write('secret/hello', { value: 'world' })
            .then((res) => console.log(res))
            .catch((err) => console.error(err));
    });

vault.write('secret/hello', { value: 'world', lease: '1s' })
    .then( () => vault.read('secret/hello'))
    .then( () => vault.delete('secret/hello'))
    .catch(console.error);

这表示返回了404状态码,需要做哪些额外的工作才能避免出现404?
{ Error: Status 404
    at handleVaultResponse (XX\TestCodes\Node-VaultTest\node_modules\node-vault\src\index.js:49:21)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  response:
   { statusCode: 404,
     body:
      { request_id: '2992e6c2-5146-6569-1f48-55f75da88993',
        lease_id: '',
        renewable: false,
        lease_duration: 0,
        data: null,
        wrap_info: null,
        warnings: [Array],
        auth: null } } }
{ Error: Status 404
    at handleVaultResponse (XX\TestCodes\Node-VaultTest\node_modules\node-vault\src\index.js:49:21)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  response:
   { statusCode: 404,
     body:
      { request_id: '2f280fa4-6596-c06f-2168-091246e0a2a1',
        lease_id: '',
        renewable: false,
        lease_duration: 0,
        data: null,
        wrap_info: null,
        warnings: [Array],
        auth: null } } }
2个回答

2

您将kv存储装载为版本1。从版本2的kv存储中读取秘密时,node-vault实际使用的路径与Vault的v1 kv存储不兼容。

请使用-version 2挂载您的kv存储。如果未指定,则默认为v1。


0

此外还要记住,您需要将 "data" 添加到路径中才能使其正常工作。例如,我有 kv/mySecret,因为 "mySecret" 在根目录下的“文件夹”中。即使需要添加 kv/data/mySecret。然后它对我起作用了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接