如何使用 vaultsharp 读取机密

How to read secret using 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}");
}

我得到一个权限异常

我尝试将代码更改为:

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

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

如何读取我的秘密?

KV2 != 小房间

在努力寻找正确的 API 使用路径时,请记住 vault 二进制文件具有“-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路径。