如何在Azure Key Vaults中创建分层数据结构

时间:2018-05-10 00:02:21

标签: azure azure-keyvault secret-key

我需要一种在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结构化数据。

欢迎任何其他建议

2 个答案:

答案 0 :(得分:2)

我建议不要在同一密钥库中混用不同的环境秘密。不能将访问限制为某些密钥,因为只能在“密钥保管库”级别上授予和拒绝访问。您可能不希望同一个人/应用程序能够访问所有不同的环境,而是只将访问生产环境的权限授予选定的一组用户和应用程序,反之亦然。

由于Key Vault服务本身并不花费任何费用,因此至少我们采用了在每个环境(即开发,测试和生产)中创建一个Key Vault的方法。在该密钥库中,秘密由前缀“ AppName-DataAppName2-Data“结构化”。这带来了额外的好处,即从开发人员转移到测试人员和生产人员时,无需更改对机密的引用,因为这些机密在所有环境中都具有相同的名称。只需更改对“密钥保管箱”的引用,就可以完成所有设置!

答案 1 :(得分:1)

Key Vault不支持机密的层次结构。

要模拟结构,您可以执行类似.NET Core对其Key Vault配置提供程序执行的操作。您可以指定一个名称为Settings--SomeCategory--SomeValue的机密,并且在加载时它对应于以下JSON:

{
  "Settings": {
    "SomeCategory": {
      "SomeValue": "value goes here"
    }
  }
}

基本上,您可以使用分隔符来模拟结构,类似于Azure Blob存储模拟文件夹的方式。