security - Azure Blob 存储在 Microsoft 中时是否已加密?

标签 security azure azure-blob-storage azure-web-app-service

我正在开发一个在 Azure Blob 存储中存储文本的网站。文本可能很敏感(不一定是密码,而是个人信息)。我正在尝试决定是否应该在将文本存储到 Azure Blob 存储之前对其进行加密。我的理解是,如果 Azure key 和帐户名泄露并且恶意用户下载了 blob,这可以降低数据泄露的风险。我的问题是:

  • 当 Azure Blob 存储在 Microsoft 的磁盘上时,它们是否已被加密?帐户 key 是用作加密 key ,还是仅用作访问 token ?
  • 如果我要使用 .NET AES 算法在 Azure 网站中执行此操作,我应该在哪里存储用于生成 key 的加密 key 或密码/盐? (即 web.config 是一个合适的地方吗?)

最佳答案

Blob 内容未加密;这一步完全取决于你。 Blob 访问由访问键严格控制(有两个键:主键和辅助键,两者作用相同)。以下是我对此的看法:

  • 如果存储访问是您的应用层独有的(即 key 永远不会暴露在您的应用之外),则风险相当低(与将 key 嵌入到桌面或移动应用中,或将其与在线存储一起使用)浏览器服务)。有人需要以某种方式窃取您的 key (例如窃取源/配置文件)。您提到使用不提供 RDP 访问权限的网站,可以进一步保护您正在运行的代码。
  • 如果您的 key 因某种原因被泄露,您可以通过生成新 key 来使该 key 失效。这会立即切断任何持有旧 key 的人的访问权限。作为一般模式,当我使用外部工具(例如 Cerebrata 工具)时,我总是使用我的辅助 key ,为我的应用程序保留我的 key 。这样,我就可以随时使我的辅助 key 失效,从而防止这些工具访问我的存储空间,但不会干扰我正在运行的应用程序。
  • 如果您需要向客户公开特定的 blob,有两种方法可以实现。首先,您可以将 blob 下载到 Web 服务器,然后向下传输内容。第二:您可以为特定 blob 生成共享访问签名 (SAS),然后将生成的 URI 提供给用户(例如,作为 href 标记的 <a>)。通过使用 SAS,您可以允许在给定的时间内(例如 10-20 分钟)访问私有(private) blob。即使有人获取 SAS URL 并将其发布到 Internet,它也仅在您指定的时间窗口内有效(它经过哈希处理,防止修改)。
  • 考虑为多个应用(甚至每个应用)使用多个存储帐户。这样,如果存在安全漏洞,损害仅限于特定的受损存储帐户。

编辑 2016 年 4 月

刚刚宣布的静态数据 Azure 存储服务加密现已推出预览版,可用于通过 Azure 资源管理器 (ARM) 创建的任何存储帐户。它不适用于“经典”存储帐户(上面我的答案的其余部分仍然适用)。您可以通过门户为您的存储帐户启用/禁用加密:

storage encryption in portal

该服务适用于标准和高级存储帐户中的 blob。更多详情见this post .

关于security - Azure Blob 存储在 Microsoft 中时是否已加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069691/

相关文章:

ios - 我们如何确保第 3 方库不会在我的 iOS 应用程序中发送用户数据?

azure - 用于识别 Azure Log Analytics 可用 SKU 的编程方法

azure - 委托(delegate) token 无效。指定的国家云 ID (1) 无效

Azure - 1 'block blob' 是否被视为一个文件?

database - 交易如何保持安全

java - UDP停止等待: identifying false messages

security - 授权 RESTful 服务的实际示例?

azure - 负载中的属性文件夹具有与架构不匹配的值

azure - 新的 Azure SDK 1.7 和增强的发布是否允许自动将静态文件发布到 Blob 存储?

c# - 从 API 身份验证返回的 Azure Blob SAS Url 失败 .net core