You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Azure App Service中DataProtection现有密钥迁移至Azure Blob存储?

如何将Azure App Service上的DataProtection密钥迁移到Azure Blob存储

当然可以把现有密钥迁移到Azure Blob存储!下面是一步步的操作指南,帮你顺利完成迁移:

第一步:迁移现有密钥文件到Blob存储

  • 首先获取App Service里的密钥文件:打开App Service的高级工具(Kudu),进入%HOME%\ASP.NET\DataProtection-Keys目录,把里面所有的XML密钥文件下载到本地。
  • 在Azure存储账户中创建一个私有Blob容器(安全性优先),然后将下载的所有XML文件上传到这个容器里。

第二步:配置应用程序使用Blob存储作为密钥存储

接下来需要修改应用配置,让它指向Blob存储作为DataProtection的密钥存储位置——这样后续新生成的密钥会自动存在Blob里,同时也能读取你刚迁移的旧密钥。

针对ASP.NET Core 2.1+项目:

  1. 先安装必要的NuGet包:
    Install-Package Microsoft.AspNetCore.DataProtection.AzureStorage
    
    如果你用的是.NET CLI:
    dotnet add package Microsoft.AspNetCore.DataProtection.AzureStorage
    
  2. 在应用的配置代码中添加DataProtection的Blob存储配置:
    • 如果你用的是传统的Startup.cs:
      public void ConfigureServices(IServiceCollection services)
      {
          // 配置Blob存储客户端
          var blobServiceClient = new BlobServiceClient("你的Azure存储账户连接字符串");
          var containerClient = blobServiceClient.GetBlobContainerClient("你的密钥容器名称");
      
          // 配置DataProtection使用Blob存储
          services.AddDataProtection()
              .PersistKeysToAzureBlobStorage(containerClient);
          
          // 其他服务配置代码...
      }
      
    • 如果你用的是.NET 6+的顶级语句(Program.cs):
      var builder = WebApplication.CreateBuilder(args);
      
      var blobServiceClient = new BlobServiceClient(builder.Configuration.GetConnectionString("AzureStorage"));
      var containerClient = blobServiceClient.GetBlobContainerClient("data-protection-keys");
      
      builder.Services.AddDataProtection()
          .PersistKeysToAzureBlobStorage(containerClient);
      
      // 其他配置...
      

    小贴士:推荐使用托管身份给App Service授予Blob存储的读写权限,比直接用连接字符串更安全,避免密钥泄露风险。

第三步:验证迁移效果

  • 把修改后的应用部署到Azure App Service。
  • 检查Blob存储容器,确认后续新生成的密钥会自动上传到这里。
  • 测试应用的加密解密功能(比如用户会话、加密的配置项等),确保旧密钥能被正常读取,业务完全不受影响。

额外注意事项

  • 在确认迁移完全成功前,不要删除App Service原目录%HOME%\ASP.NET\DataProtection-Keys里的文件,留作备份以防万一。
  • 如果是多实例部署的App Service,配置Blob存储后所有实例会自动共享密钥池,完美解决分布式场景下的密钥同步问题。

内容的提问来源于stack exchange,提问作者Guido Neele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:57:05