Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施
那么,哪些安全威胁应由 WindowsAzure 环境缓解?哪些安全威胁必须由开发人员缓解?
开发 Windows Azure 应用程序的最佳安全做法一文说明了对于在 Windows Azure 中运行的应用程序而言,什么样的威胁应被视为主要威胁。它还专门说明了 Azure 能够缓解的威胁以及您需要调用 API 的内容和您需要自己处理的内容。(它未涉及合规性问题。)
您应该处理的内容
我将选择一些威胁和您应该执行的操作,并提供一些参考,以便您可以了解有关如何在代码中进行实现的更多信息。该列表在 Windows Azure 安全概述中提供。但是具体结果将取决于您。
这个列表并不全面。正如您从本系列文章的以前部分中了解的那样,您根据您自己的应用程序需求来调整您的安全做法。
篡改威胁
篡改 / 泄漏凭据或其他敏感应用程序数据。 针对 SSL 连接,使用 Windows
Identity Foundation 和 HTTPS 相互身份验证。
- 请参见如何管理服务证书,了解有关将证书添加到存储、将证书与服务关联以及更新证书的信息。在这些情况下,我们假设 IT 管理人员和服务开发者是两个不同的人,但是他们也可能是同一个人。
- 请参见 Windows Identity Foundation,帮助开发者简化用户访问,方法是通过claim将用户访问从应用程序外部化,以及使用预先构建好的安全逻辑和集成 .NET 工具减少开发工作量。
否认威胁
审计日志收集、存储和分析。根据需要使用监控和诊断 API,将日志通过 HTTPS 传输到私有 Blob 存储/表存储。请参见:
- 在 Windows Azure 中控制日志记录和跟踪(来源于 MSDN 杂志)。
- Azure Monitor(可获得用于实时监控 Azure 托管的应用程序的代码)。它包含用于将运行时进程信息捕获到云表存储的库,还包含用于实时查看捕获的信息的桌面应用程序。
- 使用 Windows Azure Diagnostics(大约从该网页页面的三分之一开始)。Windows Azure 提供集成的功能,用于在部署的环境中进行监控、记录和跟踪,这通常称为诊断。虽然这些功能也可以用于调试目的,但是它们最适合于监控应用程序性能随时间的变化。
信息泄漏威胁
泄漏 Blob/ 表 / 队列存储中的任意机密。 在上传之前预加密机密数据。不要在 Windows Azure 存储中存储解密密钥。
泄漏共享访问签名。 使用 HTTPS 将共享访问签名安全地传输给期望的接收方并针对容器设置适当的权限。请参见管理 Blob 和容器的访问权限了解如何使用共享访问签名。
拒绝服务威胁
客户代码 / 应用程序级别的超大量请求。 如有必要,实施应用程序级别请求限制。请参见自动伸缩和 Windows Azure。
权限提升
服务 / 应用程序设置配置错误。 必须将所有 Cookie 和 document.domain 属性的范围设置为服务子域(例如 https://contoso.cloudapp.net),而不是 *.cloudapp.net
针对 Web role 的跨站点请求伪造攻击。 使用 ASP.NET 防御。请参见利用 ASP.NET 的内置功能抵御 Web 攻击。
针对 Web role 的跨站点脚本攻击。 使用 Anti-XSS 库。
针对 Web role 所暴露的接口进行 API 模糊攻击。 对暴露给 Web(或任何其他服务)的、对于代码唯一的所有接口和端点进行模糊测试
使用安全测试工具,包括模糊测试工具。“模糊”给软件应用程序编程接口 (API) 和网络接口提供结构化但无效的输入,从而最大程度地提高检测可能导致软件漏洞的错误的可能性。
针对应用程序提供的自定义文件解析器进行文件模糊攻击。 对所有专有网络协议或文件格式解析器进行模糊测试。
在 Web Role/ 客户代码级修补安全漏洞。 制定安全响应和更新计划。
可以从 Microsoft 安全开发生命周期 (SDL) 网站获取用于协助进行模糊测试的工具。SDL 包括各种免费工具和流程。例如,您可以使用:
- MiniFuzz 基本文件模糊测试工具是一款用于简化模糊测试部署的简单模糊测试工具。
- 正则表达式文件模糊测试工具是一款用于测试潜在拒绝服务漏洞的工具。
SQL Azure
我增加了这一节有关 SQL Azure 的内容,因为该平台提供您应该知道的用于缓解威胁的其他方法。
SQL Azure 安全管理。 SQL Azure 数据库中的安全管理与 SQL Server 的内部部署实例的安全管理类似。管理数据库级别的安全性基本相同,唯一不同的是可用的参数。由于 SQL Azure 数据库可以扩展到一个或多个物理计算机,因此 SQL Azure 数据库对服务器级别管理使用不同的策略。
SQL Azure 防火墙。 您可以锁定数据库以仅向获得授权的用户或计算机提供访问权限。为了帮助保护您的数据,在您指定哪些计算机具有权限之前,SQL Azure 防火墙会阻止对您的 SQL Azure 服务器的所有访问。防火墙会基于每个请求的起源 IP 地址授予访问权限。
资源
下一篇文章
Windows Azure 安全最佳实践 - 第 5 部分:基于Claims的标识,单点登录。用户标识是在您的应用程序中访问数据和业务流程的关键。在这一部分中,我将介绍如何将您的用户标识和用户角色从您的应用程序中分离出来,如何更轻松地创建单一登录应用程序。
以下是本系列中的文章的链接:
- Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策 。
- Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制。
- Windows Azure 安全最佳实践 - 第 3 部分:确定安全框架。
- Windows Azure 安全最佳实践 - 第 5 部分:基于Claims的标识,单点登录。
- Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性。
- Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践。
本文翻译自: