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

时间:2013-06-12 15:39:58

标签: security azure azure-storage-blobs azure-web-sites

我正在开发一个在Azure Blob存储中存储文本的站点。文本可能是敏感的(不一定是密码,而是个人信息)。我试图决定在将文本存储在Azure Blob存储之前是否应加密文本。我的理解是,如果Azure密钥和帐户名出来并且恶意用户下载blob,这可以降低暴露数据的风险。我的问题是:

  • 当Azure Blob 已经加载到Microsoft的磁盘上时,它们是否已加密?帐户密钥是用作加密密钥还是仅用作访问令牌?
  • 如果我是通过使用.NET AES算法在Azure网站中执行此操作,我应该在哪里存储用于生成密钥的加密密钥或密码/ salt? (即web.config是一个好的地方吗?)

2 个答案:

答案 0 :(得分:15)

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

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

2016年4月编辑

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

storage encryption in portal

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

答案 1 :(得分:6)

大卫的答案很明确,但是对于那些希望实际实施海报问题的加密的人,我已经在Azure Encryption Extensions汇总了一些样本和库。