我需要一种在Azure Key Vault中存储分层数据的方法,这样我的结构类似于:
AppName
/Prod
/Data
/Test
/Data
AppName2
/Prod
/Data
...
据我所知,我只能存储平面数据结构。我希望能够存储类似于HashiCorp的Vault的数据,它允许层次结构。
例如,在HashiCorp的Vault中,我可以使用'路径" app / test / TestConnection"来获取数据。我在路径的端点获取值:TestConnection。
任何关于替代方案的建议都可以,或者说明如何使用Key Vault做我需要做的事情。
由于
我尝试了一些建议:MySettings - SomeSection - SecretThing,Multiple Vaults,并且都不能按照我上面描述的方式工作。 没有错误输入,但我想要做的只是在Key Vault中无法使用。
@juunas 原来你的建议可能是最好的解决方案。我刚刚在另一篇文章中发现MySettings - SomeSection - Secret在.NET Core中转化为类似的东西:
MySettings: {
SomeSection: "Secret"
}
由于我的客户想要使用Key Vault,我们可能会按照每个应用程序的单个秘密来存储json结构化数据。
欢迎任何其他建议
答案 0 :(得分:2)
我建议不要在同一密钥库中混用不同的环境秘密。不能将访问限制为某些密钥,因为只能在“密钥保管库”级别上授予和拒绝访问。您可能不希望同一个人/应用程序能够访问所有不同的环境,而是只将访问生产环境的权限授予选定的一组用户和应用程序,反之亦然。
由于Key Vault服务本身并不花费任何费用,因此至少我们采用了在每个环境(即开发,测试和生产)中创建一个Key Vault的方法。在该密钥库中,秘密由前缀“ AppName-Data
和AppName2-Data
“结构化”。这带来了额外的好处,即从开发人员转移到测试人员和生产人员时,无需更改对机密的引用,因为这些机密在所有环境中都具有相同的名称。只需更改对“密钥保管箱”的引用,就可以完成所有设置!
答案 1 :(得分:1)
Key Vault不支持机密的层次结构。
要模拟结构,您可以执行类似.NET Core对其Key Vault配置提供程序执行的操作。您可以指定一个名称为Settings--SomeCategory--SomeValue
的机密,并且在加载时它对应于以下JSON:
{
"Settings": {
"SomeCategory": {
"SomeValue": "value goes here"
}
}
}
基本上,您可以使用分隔符来模拟结构,类似于Azure Blob存储模拟文件夹的方式。