azure-web-app-service - 在 .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 Key Vault 中的博客。
推荐阅读
- c# - 调用方法包含UI交互时如何等待所有任务?
- xamarin - Xamarin Forms - 从 URL 获取的图像未在 Android 中显示
- java - @Repository 类中的自引用导致循环引用
- javascript - 无法在 Commerce JS 上“捕获订单”
- python - 在python中解析以下文本的最佳方法是什么
- python - 如何在 PuLP (Python) 约束中调用函数?
- flutter - Flutter 桌面后台作业
- sql - 使用 Draw.io 生成 SQL/DDL 脚本?
- reactjs - reactJS 路由,错误 500 和 .htaccess:重写规则不适用于子路由
- database - 在每次提交时使用带有部署的数据库