未配置数据保护的单个 Azure 实例上的 6 .NET Core 8 应用程序中的无效负载 CryptographicException

问题描述 投票:0回答:1

我在单个 Azure Web App 实例下托管六个 .NET Core 8 Web 应用程序。没有一个应用程序使用

services.AddDataProtection()
显式配置数据保护 API,因此它们都默认使用
C:\home\ASP.NET\DataProtection-Keys
来存储数据保护密钥。

我通过检查

activationDate
expirationDate
元素识别了目录中的活动密钥文件。尽管进行了这种设置,所有应用程序大约每五分钟就会定期将
System.Security.Cryptography.CryptographicException
记录到 Azure Application Insights。

System.Security.Cryptography.CryptographicException:
   at Microsoft.AspNetCore.DataProtection.Cng.CbcAuthenticatedEncryptor.DecryptImpl (Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at Microsoft.AspNetCore.DataProtection.Cng.Internal.CngAuthenticatedEncryptorBase.Decrypt (Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore (Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect (Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at Microsoft.AspNetCore.Session.CookieProtection.Unprotect (Microsoft.AspNetCore.Session, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)

我有:

  • 确认所有应用程序访问相同的密钥文件。
  • 查找文件访问问题或权限问题。
  • 检查了 Azure 诊断是否有任何相关问题,但没有成功。

问题:

  1. 如何根据我当前的配置进一步诊断该异常的原因?
  2. 是否有建议的配置更改可以解决这些常见的异常?
azure .net-core cryptography data-protection system.security
1个回答
0
投票

与程序开发者确认,只有来自自己安全系统的应用程序才有权使用。通常,应用程序的代码或其单一存在有明确的授权,这往往会限制其位置。然而,不常见的或新的事物也与现有的事物有平等的机会。这很糟糕。

要查找并解决此问题:

  1. 检查日志:在 Debug 目录内的 appsettings 文件中提供完整路径,以便查看问题的等效日志。

  2. 更新密钥:每天以每 12 小时一次的频率完成转弯。如果没有,请调用 IkeyRingProvider。 GetKeRing() 来更新它们。

  3. 保护数据:将它们全部移至一个程序,在一个数据集上的数据保护方面具有相同的规则。有时,朋友和家人无法为那些出于绝望的人提供帮助,服务提供商是唯一的解决方案,因此可以依赖于此目的。

  4. 使用 Azure:与其备份密钥副本,不如探索 Azure Blob 存储并将密钥编码到 Azure Key Vault 中。专家认为,这些美国大型科技公司在数据共享方面肯定存在缺陷。

云应用程序对于这种方法是安全的,该方法还涉及 Azure Blob 存储和 Azure Key Vault;通过此,您可以清楚地了解如何保护您的数据。

services.AddDataProtection()
.PersistKeysToAzureBlobStorage(blobStorage, "keys.xml")
.ProtectKeysWithAzureKeyVault(keyVault, clientId, clientSecret);

ASP.NET Core 中的数据保护

© www.soinside.com 2019 - 2024. All rights reserved.