如何在 Azure Key Vaults 中创建分层数据结构
How do I create hierarchical data structures in Azure Key Vaults
我需要一种在 Azure Key Vaults 中存储分层数据的方法,这样我的结构类似于:
AppName
/Prod
/Data
/Test
/Data
AppName2
/Prod
/Data
...
据我所知,我只能存储平面数据结构。我希望能够存储类似于 HashiCorp 的 Vault 的数据,它允许层次结构。
例如,在 HashiCorp 的 Vault 中,我可以使用 'path' 获取数据:"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 结构化数据。
欢迎提出任何其他建议
Key Vault 不支持机密的层次结构。
要模拟结构,您可以执行类似于 .NET Core 对其 Key Vault 配置提供程序执行的操作。您可以指定一个名为 Settings--SomeCategory--SomeValue
的秘密,加载时它将对应以下 JSON:
{
"Settings": {
"SomeCategory": {
"SomeValue": "value goes here"
}
}
}
所以基本上您可以使用分隔符来模拟结构,这也类似于 Azure Blob 存储模拟文件夹的方式。
我建议不要在同一个密钥库中混合不同的环境机密。不能将访问限制为某些密钥,因为仅在 Key Vault 级别授予和拒绝访问。您可能不希望相同的 persons/applications 能够访问所有不同的环境,而是仅向选定的一组用户和应用程序授予对生产环境的访问权限,反之亦然。
由于 Key Vault 服务本身并不真正花费任何费用,因此我们至少采用了为每个环境(即开发、测试和生产)创建一个 Key Vault 的方法。在该密钥库中,机密是 "structured" 前缀,即 AppName-Data
和 AppName2-Data
。这带来了额外的好处,即当从开发转移到测试和生产时,不需要更改对秘密的引用,因为它们在所有环境中都具有相同的名称。只需更改对 Key Vault 的引用,一切就绪!
我需要一种在 Azure Key Vaults 中存储分层数据的方法,这样我的结构类似于:
AppName
/Prod
/Data
/Test
/Data
AppName2
/Prod
/Data
...
据我所知,我只能存储平面数据结构。我希望能够存储类似于 HashiCorp 的 Vault 的数据,它允许层次结构。
例如,在 HashiCorp 的 Vault 中,我可以使用 'path' 获取数据:"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 结构化数据。
欢迎提出任何其他建议
Key Vault 不支持机密的层次结构。
要模拟结构,您可以执行类似于 .NET Core 对其 Key Vault 配置提供程序执行的操作。您可以指定一个名为 Settings--SomeCategory--SomeValue
的秘密,加载时它将对应以下 JSON:
{
"Settings": {
"SomeCategory": {
"SomeValue": "value goes here"
}
}
}
所以基本上您可以使用分隔符来模拟结构,这也类似于 Azure Blob 存储模拟文件夹的方式。
我建议不要在同一个密钥库中混合不同的环境机密。不能将访问限制为某些密钥,因为仅在 Key Vault 级别授予和拒绝访问。您可能不希望相同的 persons/applications 能够访问所有不同的环境,而是仅向选定的一组用户和应用程序授予对生产环境的访问权限,反之亦然。
由于 Key Vault 服务本身并不真正花费任何费用,因此我们至少采用了为每个环境(即开发、测试和生产)创建一个 Key Vault 的方法。在该密钥库中,机密是 "structured" 前缀,即 AppName-Data
和 AppName2-Data
。这带来了额外的好处,即当从开发转移到测试和生产时,不需要更改对秘密的引用,因为它们在所有环境中都具有相同的名称。只需更改对 Key Vault 的引用,一切就绪!