首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >名称空间、路径、挂载点等之间的区别

名称空间、路径、挂载点等之间的区别
EN

Stack Overflow用户
提问于 2022-07-19 17:02:15
回答 1查看 204关注 0票数 0

当涉及到使用.Net实现解决方案时,Hashicorp文档还有很多需要改进的地方,而且VaultSharp文档不够全面,不足以涵盖多种场景。

我们有一个名称空间"egw“的Vault设置。我们有一个KV秘密引擎启用名称为"Expr“。我们在三个不同的路径上列出了秘密:“跨”、“设定”和“服务”。

我们不确定如何真正读取这些秘密,因为还不清楚名称空间、路径、挂载点等之间的区别。

这些文档到处都是,我们不清楚这些条款中的任何一个,因为错误的auth方法,示例应用程序对我们毫无用处。

我们正在使用LDAP Auth方法,这样我们就可以毫无问题地登录到我们的服务器上,这仅仅是获取我们遇到问题的秘密而已。

请有人向我们解释一下如何用VaultSharp阅读这些秘密?

更新:我们目前没有创建或分配角色。

有人能帮我理解一下为什么这段代码不能列出路径或获取秘密吗?我是做错了什么,还是不明白该怎么做?

代码语言:javascript
复制
IAuthMethodInfo authMethod = new LDAPAuthMethodInfo(_settings.LDAPUserName, _settings.LDAPPassword);
var vaultClientSettings = new VaultClientSettings(_settings.Address, authMethod);

IVaultClient vaultClient = new VaultClient(vaultClientSettings);

Secret<ListInfo> secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync("egw/Expr/data/");
ListInfo paths = secret.Data;

Secret<SecretData>? kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(path: "Expr/data/Trans", mountPoint:"egw/");
Dictionary<string, object> dataDictionary = kv2Secret.Data.Data;

这是我得到的错误消息和StackTrace:

代码语言:javascript
复制
Message: 
    Newtonsoft.Json.JsonReaderException : Unexpected character encountered while parsing value: <. Path '', line 0, position 0.

  Stack Trace: 
    JsonTextReader.ParseValue()
    JsonReader.ReadAndMoveToContent()
    JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
    JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
    JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
    JsonSerializer.Deserialize(JsonReader reader, Type objectType)
    JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
    JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
    JsonConvert.DeserializeObject[T](String value)
    Polymath.MakeRequestAsync[TResponse](String resourcePath, HttpMethod httpMethod, Object requestData, IDictionary`2 headers, Boolean rawResponse, Action`1 postResponseAction)
    Polymath.MakeVaultApiRequest[TResponse](String resourcePath, HttpMethod httpMethod, Object requestData, Boolean rawResponse, Action`1 postResponseAction, String wrapTimeToLive, Boolean unauthenticated)
    LDAPAuthMethodLoginProvider.GetVaultTokenAsync()
    Polymath.MakeVaultApiRequest[TResponse](String resourcePath, HttpMethod httpMethod, Object requestData, Boolean rawResponse, Action`1 postResponseAction, String wrapTimeToLive, Boolean unauthenticated)
    Polymath.MakeVaultApiRequest[TResponse](String mountPoint, String path, HttpMethod httpMethod, Object requestData, Boolean rawResponse, Action`1 postResponseAction, String wrapTimeToLive, Boolean unauthenticated)
    KeyValueSecretsEngineV2Provider.ReadSecretAsync(String path, Nullable`1 version, String mountPoint, String wrapTimeToLive)

Update2:发现使用LDAP AuthMethod不能正常工作,不确定它是在Vault上设置的方式还是什么的。开始使用令牌,并能够读取秘密,但当我试图列出它们时,我被拒绝许可。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-19 17:12:15

名称空间为您的Vault服务提供了一种完全自我管理的方法。。这更多地是一个管理细节,而不是编程细节,您可以在很大程度上忽略这一点。最终,您只需要知道名称空间的名称空间是什么。

您的秘密引擎是秘密的实际所在,以及它们是如何存储的。。在大多数情况下,您使用的是KV (键值)机密引擎,版本2。

您列出的路径只描述您的秘密驻留在您的机密引擎中的位置。

所以根据你提供的信息:

  • 命名空间为egw
  • 秘密引擎是名为Expr的KV
  • 路径存在于TransSetServ

.你可能会从这些路径上引用它.请注意,KV秘密引擎将其值存储在数据/路径中。,所以您必须在从机密引擎请求之后包含它。

  • egw/Expr/data/Trans
  • egw/Expr/data/Set
  • egw/Expr/data/Serv

请注意:如果您正在进行机器对机器的通信,那么您将真正想要考虑使用AppRole来访问这些秘密。使用LDAP完成所有这些都将是非常复杂的,它依赖于LDAP和Vault是活着的,而使用AppRoles则只需要Vault还活着,并且允许非常细粒度地访问机密。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73040905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档