c# - 如何使用 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":[]})'
我怎样才能读懂我的秘密?
解决方案
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 路径。
推荐阅读
- c++ - -static -lxyz 和 -l:libxyz.a 之间的区别
- amazon-web-services - PEM PPK 文件访问删除
- installshield - uft 未捕获 installshield 或 msi 屏幕
- amazon-web-services - 通过 AWS Resource Access Manager 中的 terraform 与多个 aws 账户共享多个 DNS 域
- python - c++ 的 python 头文件给出了我无法解决的“无法打开源文件”错误
- apache-kafka - 在 MANUAL_IMMEDIATE 模式下根本不确认 kafka 消息
- php - PHP if else 在选择表单中
- javascript - StencilJS - Bottomsheet 不能按预期工作。如何向上滑动内容?
- docker - 使用 k8s kompose convert 会导致未知的东西
- c# - 以编程方式检查下载的 webdriver 的版本