Windows Azure 安全最佳实践 - 第 3 部分:确定安全框架
构建云应用程序时,安全始终是计划和执行Windows Azure的首要核心因素。第 1 部分介绍了威胁形势并且建议您的应用程序使用深度防御。第 2部分提出安全是一项共同责任,Windows Azure为您的应用程序提供超出内部部署应用程序需求的强大安全功能。但另一方面,它也暴露了您应该考虑的其他漏洞。
此部分中将探索如何检查应用程序的体系结构。模式与实践团队提出通过安全框架来检查应用程序,以便您在开始编码之前即确定威胁和您的响应。
此部分还介绍了如何将Microsoft安全开发生命周期 (SDL)通过规定的方式应用于您的组织以解决应用程序生命周期中每个阶段的安全性问题。
安全框架
透过安全框架,您可以轻松了解应用程序的安全状况。
此概念在Windows Azure安全记要中有详细说明。该文档由模式与实践团队的首席项目经理 J.D. Meier和 Paul Enfield撰写。该文档还收集了客户、现场工程师、产品团队和业内专家的意见,提供了基于常见原则、模式和实践确保 Windows Azure上的常见应用程序方案的安全性的解决方案。
那篇文档概述了您可能遇到的威胁、攻击、漏洞和应对措施。它还详述了一组方案,其中包含许多常见的应用程序类型。那篇文档提供了一个安全框架,指导设计和构建 Windows Azure应用程序时的安全性考虑。
那篇文档开头介绍了一个常见的 ASP.NET应用程序,并确定了一组操作且为它们分类:
· 审计和日志记录
· 身份验证
· 授权
· 通信
· 配置管理
· 加密
· 异常管理
· 敏感数据
· 会话管理
· 验证
此方法可帮助您解决安全框架所识别的关键安全热点,以确保解决方案的安全。
对于内部部署应用程序,您需要分别处理各个主要问题。下图显示了一种十分典型的内部部署应用程序体系结构,然后标出了相应的热点。
借助托管基础结构,我们可以少费神一些问题,因为这些问题由托管基础结构进行处理。例如,Windows Azure应用程序没有权限创建用户帐户或者提升权限。
文档中建议您
使用基本图表示您的体系结构,然后将框架覆盖在基本图之上。应用框架之后,即可评估每一项的适用性并快速排除不需要关注的类别。
文档中还介绍了 28 种不同的攻击并提出可用于增强应用程序安全性的 71个建议。事实上,这些即为您可以应用于自己组织中的编码标准。(如需详细了解软件开发过程中应采用的标准,请参见第 18页的应对措施介绍)。
选择 Web 服务安全体系结构
文档中介绍了多个应用程序方案,它们代表一组涉及基于 Web的服务的 Windows Azure平台上的常见应用程序实现方案。
· ASP.NET 连接到 WCF。此方案演示了 Windows Azure托管和 ASP.NET应用程序、WCF 服务以及如何连接这两者。此方案使用传输安全性,并且以单一身份进行服务调用。
· 本地部署的 ASP.NET连接到 Windows Azure上的 WCF。在此方案中,本地部署的 ASP.NET应用程序通过使用消息安全性并传递原始调用方的标识来调用托管在 Windows Azure上的 WCF 服务。
· ASP.NET 通过Claims连接到 WCF。此方案使用 Windows Identity Framework 将 ASP.NET应用程序连接到 WCF服务,同时使用身份验证token中的claim进行身份验证并保留已通过身份验证的用户的标识。
· 使用 AppFabricAccess Control的 REST服务。在此方案中,使用RESTful接口实现 Web 服务。要对 REST 服务访问进行身份验证,使用 AppFabricAccess Control获取SimpleWebToken (SWT)。Access Control与 ADFS等身份提供程序之间具有信任关系,以颁发SimpleWeb Token。
其中描述了每种体系结构的权衡,然后提供了每个方案的用例。
它还提供了为您的应用程序选择适当方案的标准。
选择数据安全体系结构
以下应用程序方案代表 Windows Azure平台上一组涉及数据存储安全性的常见应用程序实现方案。
· ASP.NET 连接到 Azure 存储:此方案演示了如何确保访问Windows Azure存储时的安全。它使用 ASP.NET成员身份和角色,同时将用户映射到单个连接。
· ASP.NET 连接到 SQL Azure:在此方案中,SQL Azure访问为用户提供不同数据权限级别,方法是映射这些级别到预设的角色。
· 内部部署的 ASP.NET通过 WCF 连接到 Azure 上的数据。此方案演示了通过使用 WCF将内部部署应用程序连接到托管在云中的数据来实现“数据即服务”。
· Windows Azure上的 ASP.NET 连接到内部部署的 SQL Server:在此方案中,您已将 ASP.NET应用程序部署到 Windows Azure,但是数据仍在内部部署储存。WCF服务用于展示数据,Windows Azure Service Bus 用于通过企业防火墙向 Windows Azure应用程序暴露服务。
其中针对每种数据安全体系结构描述了每种数据存储方式的优势和考虑因素。
核对清单
文档中提供了用于确保 Windows Azure应用程序安全的核对清单。每个要点都有一个核对清单:
· 体系结构和设计
· 部署注意事项
· 审计和日志记录
· 身份验证
· 授权
· 通信
· 配置管理
· 加密
· 异常管理
· 输入和数据验证
· 敏感数据
下面列出了针对体系结构和设计的核对清单示例,其中定义了您需要在应用程序体系结构中执行的操作,同时强调了基于角色的安全性:
□ 应用程序身份验证代码已从应用程序代码中移除,并且单独实现。
□ 不通过应用程序决定用户身份,而是通过用户提供的claim来确定身份。
□ 该设计确定了应用程序所需的权限。
□ 该设计验证了所需的权限不超过 Windows Azure信任策略。
□ 该设计确定了对存储选项功能的存储要求。
□ 应用程序不使用显式 IP地址,而是使用友好的 DNS名称。
您可以使用针对特定威胁的应对措施来设计和实现每种类别的软件。
· 备忘单 - Web应用程序安全性威胁和应对措施概览
· 备忘单 - Web服务 (SOAP) 安全性威胁和应对措施概览
· 备忘单 - Web服务 (REST) 安全性威胁和应对措施概览
· 备忘单 -数据安全性威胁和应对措施概览
Windows Azure安全记要中的表单和其他信息可以帮助您顺利地开始工作。
在开发生命周期中设置安全性
经常有用户问我,Microsoft是如何保证我们自己的应用程序以及Windows Azure本身的安全的。
Microsoft 要求任何由 Microsoft开发、部署在 Windows Azure上的软件均遵循Microsoft安全开发生命周期 (SDL)。
安全开发生命周期 (SDL) 是一个软件开发安全性确保过程,由分为七个阶段的安全实践组成:培训、需求、设计、实现、验证、发布和响应。
从需求阶段开始,SDL 过程包括在开发托管在 Microsoft云中的应用程序时需要考虑的多个特定活动:
需求 – 此阶段的主要目标是确定关键安全目标并最大限度地提高软件安全性,同时最大限度地减少对客户可用性、计划和调度的干扰。此活动可以包括在处理托管应用程序时的操作性讨论,主要关注定义服务如何使用网络连接和消息传输。
设计 – 此阶段中的关键安全性步骤包括记录潜在的攻击面和对威胁进行建模。与需求阶段一样,在对托管应用程序执行此过程时可以确定相应的环境标准。
实现 – 此阶段中将进行编码和测试。在实现过程中,关键做法是避免创建具有安全漏洞的代码并采取措施解决此类问题(如有)。
验证 – 当新应用程序视为功能完备时,即开始测试阶段。在此阶段中,应密切注意确定在真实场景中部署应用程序时存在哪些安全风险以及可以采取哪些措施来消除或缓和这些安全风险。
发布 – 在此阶段进行最终安全性审查 (FSR)。如果需要,还可以在将新应用程序发布到 Microsoft云环境之前进行操作安全性审查 (OSR)。
响应 – 对于 Microsoft的云环境而言,SIM 团队主要负责对安全事件做出响应并与产品团队、服务交付团队和 Microsoft安全响应中心成员密切合作,以便对所报告的事件进行分类、研究和更正。
工具和流程
SDL 包括各种免费工具和流程。例如,您可以使用:
· SDL 威胁建模工具 v3.1.8是一款帮助工程师发现和解决系统安全问题的工具。
· MiniFuzz 基本文件模糊测试工具是一款用于简化模糊测试部署的简单模糊测试工具。
· 正则表达式文件模糊测试工具是一款用于测试潜在拒绝服务漏洞的工具。
SDL 同样适用于构建在 Windows Azure平台和其他任何平台上的应用程序。大多数 Windows Azure应用程序已使用或者即将使用敏捷方法构建。因此,相对于基于经典阶段的 SDL而言,适用于敏捷过程的SDL可能更适用于托管在 Windows Azure上的应用程序。Microsoft SDL网站还详细介绍了 SDL for Agile。
参考
Windows Azure 安全记要非常感谢模式与实践团队的J.D. Meier和 Paul Enfield。
有关 SDL 的详细信息,请参见Microsoft 安全开发生命周期 (SDL)页面。
视频
· 在 Windows Azure 内应用 Microsoft SDL 设计实践
· 在 Windows Azure 内应用 Microsoft SDL 实现阶段
· 在 Windows Azure 内应用 Microsoft SDL 发布实践
下一篇文章
Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施。除了保护应用程序免受威胁之外,您还需要在部署应用程序时采取其他措施。我们提供了在开发和部署应用程序时应使用的一系列缓解方法。
以下是本系列中的文章的链接:
· Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策。
· Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制。
· Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施。
· Windows Azure 安全最佳实践 - 第 5 部分:基于Claims的标识,单点登录。
· Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性。
· Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践。
本文翻译自: