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进行身份验证并保留已通过身份验证的用户的标识。
  • 使用 AppFabric Access Control的 REST 服务。在此方案中,使用
    RESTful 接口实现 Web 服务。要对 REST 服务访问进行身份验证,使用 AppFabricAccess Control获取SimpleWeb Token (SWT)。Access Control与 ADFS 等身份提供程序之间具有信任关系,以颁发Simple Web 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 同样适用于构建在 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 安全最佳实践 - 第 4 部分:需要采取的其他措施。除了保护应用程序免受威胁之外,您还需要在部署应用程序时采取其他措施。我们提供了在开发和部署应用程序时应使用的一系列缓解方法。

以下是本系列中的文章的链接:

 本文翻译自:

https://blogs.msdn.com/b/usisvde/archive/2012/03/09/windows-azure-security-best-practices-part-3-identifying-your-security-frame.aspx