代码之家  ›  专栏  ›  技术社区  ›  Tab

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

  •  4
  • Tab  · 技术社区  · 8 年前

    我需要一种在Azure Key Vault中存储分层数据的方法,这样我的结构类似于:

    AppName
      /Prod
        /Data
      /Test
        /Data
    AppName2
      /Prod
        /Data
    

    。。。

    据我所知,我只能存储一个平面数据结构。我希望能够通过HashiCorp存储类似于Vault的数据,它允许层次结构。

    例如,在HashiCorp的Vault中,我可以使用“路径”获取数据:“app/test/TestConnection”,并在路径的端点获取值:TestConnection。

    任何关于备选方案的建议都可以,或者关于如何使用Key Vault的说明也可以。

    谢谢


    使现代化

    我尝试了一些建议:MySettings——SomeSection——SecretThing,多个保险库,这两个都不能像上面描述的那样工作。 不影响输入 但我想做的只是在Key Vault中不可用。

    @尤纳斯 事实证明,你的建议可能是最好的解决方案。我只是在另一篇文章中才发现,MySettings——SomeSection——Secret在中被翻译成了类似的东西。净核心:

    MySettings: {
        SomeSection: "Secret"
    }
    

    由于我的客户希望使用Key Vault,我们可能会按照每个应用程序的单个机密存储json结构化数据。

    欢迎提出任何其他建议

    2 回复  |  直到 8 年前
        1
  •  9
  •   juunas    8 年前

    密钥保管库不支持机密的层次结构。

    要模拟结构,可以执行类似的操作。NET Core使用其关键Vault配置提供程序。您可以使用以下名称指定机密 Settings--SomeCategory--SomeValue ,加载时将对应于以下JSON:

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

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

        2
  •  2
  •   Tuukka Haapaniemi    7 年前

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

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