c# - 在 C# 应用程序中安全存储 Azure Blob 存储访问 key 的正确方法

标签 c# azure security azure-blob-storage

我正在构建一个 C# 应用程序 (WPF),它将日志文件上传到 azure blob 存储。我将 StorageConnectionString 存储在 App.config 文件中,如下所示:

<appSettings>
    <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=<my account name>;AccountKey=<my account key>;EndpointSuffix=core.windows.net" />
</appSettings>

在我的代码中,我检索 StorageConnectionString,如下所示:

string connectionString = ConfigurationManager.AppSettings.Get("StorageConnectionString");

到目前为止,一切正常,但我担心 App.config 文件中的清晰可见 StorageConnectionString

如何确保我的应用程序无法通过逆向工程获取 StorageConnectionString

最佳答案

您的应用程序不应使用共享 key 。存储帐户 key 授予对存储帐户的完全访问权限。更好的方法是在应用程序中通过 Azure AD 使用共享访问签名。

完整概述可在此处找到:

https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview

虽然 Microsoft 建议使用 Azure AD 和 SAS 来授权对 Azure 存储的请求。如果必须使用共享 key 授权,请使用 Azure Key Vault 保护您的帐户 key 。您可以在运行时从 key 保管库检索 key ,而不是将它们保存在应用程序中。有关 Azure Key Vault 的详细信息,请参阅 Azure Key Vault overview .

我们所有的安全建议都可以在这里找到:

https://learn.microsoft.com/en-us/azure/storage/blobs/security-recommendations

关于c# - 在 C# 应用程序中安全存储 Azure Blob 存储访问 key 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70891836/

相关文章:

c# - 如何在 ASP.Net 中设计公共(public) API?

php - 上传文件最安全的方法是什么?

security - 为什么 OAuth v2 同时具有访问 token 和刷新 token ?

c# - NGR正则表达式匹配

c# - 使用 DateTimeOffset

sqlite - 在 Azure 存储上托管 SQLite DB?

azure - 如何解决X2go客户端中的 "unable to execute xfce4 session"错误?

asp.net - 在 Azure 计算模拟器外部使用 DiagnosticMonitorTraceListener 运行

c# - 如何比较证书指纹

c# - 等到 BlockingCollection 队列被后台线程清除,如果时间太长则超时?