我正在开发一个在 Azure Blob 存储中存储文本的网站。文本可能很敏感(不一定是密码,而是个人信息)。我正在尝试决定是否应该在将文本存储到 Azure Blob 存储之前对其进行加密。我的理解是,如果 Azure 密钥和帐户名泄露并且恶意用户下载了 blob,这可以降低数据泄露的风险。我的问题是:
- 是蔚蓝的斑点吗already当它们登陆微软的磁盘时是否被加密?帐户密钥是用作加密密钥,还是仅用作访问令牌?
- 如果我要使用 .NET AES 算法在 Azure 网站中执行此操作,我应该在哪里存储用于生成密钥的加密密钥或密码/盐? (即 web.config 是一个合适的地方吗?)
Blob 内容未加密;这一步完全取决于你。 Blob 访问由访问键严格控制(有两个键:主键和辅助键,两者作用相同)。以下是我对此的想法:
- 如果存储访问是您的应用程序层独有的(也就是说,密钥永远不会暴露在您的应用程序之外),则风险相当低(与将密钥嵌入到桌面或移动应用程序中,或将其与在线存储浏览器服务一起使用) 。有人需要以某种方式从你那里窃取密钥(例如窃取源/配置文件)。您提到使用网站,它不提供 RDP 访问权限,从而进一步保护您正在运行的代码。
- 如果您的密钥因某种原因被泄露,您可以通过生成新密钥来使该密钥失效。这会立即切断任何持有旧密钥的人的访问权限。作为一般模式,当我使用外部工具(例如 Cerebrata 工具)时,我总是使用我的中学钥匙,保留我的primary我的应用程序的密钥。这样,我就可以随时使我的辅助密钥失效,防止这些工具访问我的存储,但不会干扰我正在运行的应用程序。
- 如果您需要向客户公开特定的 blob,有两种方法可以实现。首先,您可以将 blob 下载到 Web 服务器,然后向下传输内容。第二:您可以为特定 blob 生成共享访问签名 (SAS),然后将该结果 URI 提供给用户(例如,作为
href
的一个的<a>
标签)。通过使用 SAS,您可以允许在给定的时间内(例如 10-20 分钟)访问私有 blob。即使有人获取 SAS URL 并将其发布到 Internet,它也仅在您指定的时间窗口内有效(它经过哈希处理,防止修改)。
- 考虑多个应用程序(甚至每个应用程序)的多个存储帐户。这样一来,如果有were安全漏洞,损害仅限于特定的受损存储帐户。
2016 年 4 月编辑
刚刚宣布的针对静态数据的 Azure 存储服务加密现已推出预览版,可用于通过 Azure 资源管理器 (ARM) 创建的任何存储帐户。它不适用于“经典”存储帐户(上面我的答案的其余部分仍然适用)。您可以通过门户为您的存储帐户启用/禁用加密:
该服务适用于标准和高级存储帐户中的 blob。更多详细信息请参见这个帖子 https://azure.microsoft.com/en-us/documentation/articles/storage-service-encryption/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)