首页 > 解决方案 > 如何使用 Vaultsharp 读取机密

问题描述

我在cubbyhole名为 的默认秘密引擎中创建了一个秘密secret1

现在我想阅读这个秘密,它在 Vault Online CLI 中运行良好:

vault read cubbyhole/secret1

但是使用以下代码:

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");
    ReadSecret().Wait();
}

public static async Task ReadSecret()
{
    IAuthMethodInfo authMethod = new TokenAuthMethodInfo("My Token");
    var vaultClientSettings = new VaultClientSettings("My Url", authMethod);
    IVaultClient vaultClient = new VaultClient(vaultClientSettings);
    Secret<SecretData> kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(path: "secret1");
    Console.WriteLine($"Secret data : {kv2Secret.Data}");
}

我得到一个Permission Exception

我试图将代码更改为:

Secret<SecretData> kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(path: "secret1", mountPoint: "cubbyhole");

我得到了错误: System.AggregateException : 'One or more errors occurred. ({"errors":[]})'

我怎样才能读懂我的秘密?

标签: c#vaultvaultsharp

解决方案


KV2 != 小房间

在努力使用正确的 API 路径时,请记住保管库二进制文件具有“-output-curl-string”,它会告诉您请求所需路径的正确方法。

# vault kv put cubbyhole/foo a=1
Success! Data written to: cubbyhole/foo

# vault kv get -output-curl-string cubbyhole/foo
curl -H "X-Vault-Token: $(vault print token)" -H "X-Vault-Request: true" http://127.0.0.1:8200/v1/cubbyhole/foo

所以你要找的路径不是 KV 也不是 KV2 路径。


推荐阅读