首页 > 解决方案 > 在 .NET Core 数据保护中,如何让 ProtectKeysWithAzureKeyVault() 加密现有密钥?

问题描述

我们有一个应用服务应用程序,它需要一个集中式密钥,我们希望将其存储在一个 blob 中并通过加密进行保护。

如何让 ProtectKeysWithAzureKeyVault() 加密现有密钥?

我的 Startup.cs 中有以下代码:

services.AddDataProtection()
    .SetApplicationName("myAppName")
    .PersistKeysToAzureBlobStorage(new Uri("https://mystorage.blob.core.windows.net/secrets/keys.xml?<SAS>"))
    .ProtectKeysWithAzureKeyVault(new Uri("https://myvault.vault.azure.net/keys/dp-key/"), new DefaultAzureCredential());

..但是如果我查看 blob 存储区域中的 XML 密钥文件,它会以纯文本形式显示密钥以及它们未加密的警告。为什么 .ProtectKeysWithAzureKeyVault() 调用似乎没有效果?如果我将密钥持久保存到本地文件系统,它会起作用,但如果我使用 Blob 存储则不会。

标签: azure-web-app-serviceasp.net-core-3.1azure-keyvault

解决方案


我猜密钥是不可变的,这意味着它们一旦创建就不会改变?另一种方法是创建您自己的提供程序并加密整个密钥环(而不是单个密钥)。

我之前写过关于如何编写自己的密钥环存储并将其存储在 Azure Key Vault 中的博客。


推荐阅读