构建云应用程序时,安全始终是计划和执行Windows Azure的首要核心因素。第
1 部分提出安全是一项共同责任,Windows Azure为您的应用程序提供超出内部部署应用程序需求的强大安全功能。但另一方面,它也暴露了您应该考虑的其他漏洞。

此部分中将探索如何检查应用程序的体系结构。模式与实践团队提出通过安全框架来检查应用程序,以便您在开始编码之前即确定威胁和您的响应。

此部分还介绍了如何将Microsoft安全开发生命周期 (SDL)通过规定的方式应用于您的组织以解决应用程序生命周期中每个阶段的安全性问题。

安全框架

透过安全框架,您可以轻松了解应用程序的安全状况。

此概念在Windows Azure安全记要中有详细说明。该文档由模式与实践团队的首席项目经理
J.D. Meier和 Paul Enfield撰写。该文档还收集了客户、现场工程师、产品团队和业内专家的意见,提供了基于常见原则、模式和实践确保 Windows Azure上的常见应用程序方案的安全性的解决方案。

那篇文档概述了您可能遇到的威胁、攻击、漏洞和应对措施。它还详述了一组方案,其中包含许多常见的应用程序类型。那篇文档提供了一个安全框架,指导设计和构建 Windows Azure应用程序时的安全性考虑。

那篇文档开头介绍了一个常见的 ASP.NET应用程序,并确定了一组操作且为它们分类:

·  审计和日志记录

·  身份验证

·  授权

·  通信

·  配置管理

·  加密

·  异常管理

·  敏感数据

·  会话管理

·  验证

此方法可帮助您解决安全框架所识别的关键安全热点,以确保解决方案的安全。

对于内部部署应用程序,您需要分别处理各个主要问题。下图显示了一种十分典型的内部部署应用程序体系结构,然后标出了相应的热点。

借助托管基础结构,我们可以少费神一些问题,因为这些问题由托管基础结构进行处理。例如,Windows Azure应用程序没有权限创建用户帐户或者提升权限。

文档中建议您

使用基本图表示您的体系结构,然后将框架覆盖在基本图之上。应用框架之后,即可评估每一项的适用性并快速排除不需要关注的类别。

文档中还介绍了 28
页的应对措施介绍)。

选择 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 部分:提示、工具和编码最佳实践

本文翻译自:

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

Windows Azure 安全最佳实践 - 第 3 部分:确定安全框架的更多相关文章

  1. Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践

    在撰写这一系列文章的过程中,我总结出了很多最佳实践.在这篇文章中,我介绍了在保护您的WindowsAzure应用程序时需要考虑的更多事项. 下面是一些工具和编码提示与最佳实践: · 在操作系统上运行 ...

  2. Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性

    多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...

  3. Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录

    基于Claim的身份标识是处理网站与 Web 服务的身份认证和访问一种简单而强大的方式,无论您是在本地工作还是面向云工作.您可以通过减少自定义实施和使用基于Claim的单一简化标识模型,创建更安全的应 ...

  4. Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施

    那么,哪些安全威胁应由WindowsAzure环境缓解?哪些安全威胁必须由开发人员缓解? 开发 Windows Azure 应用程序的最佳安全做法一文说明了对于在 Windows Azure 中运行的 ...

  5. Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制

    在WindowsAzure安全最佳实践 - 部分:深度解析挑战防御对策中,我介绍了威胁形势以及在您的应用程序中采用深度防御的计划. 在本部分中,我将说明 Windows Azure的安全是一项共同责任 ...

  6. Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策

    我每次与开发人员讨论将应用程序迁移到云时都围绕着两个主要问题. 1. 首先是业务.将应用程序迁移到云可以带来怎样的规模经济? 2. 其次是安全问题."云的安全性如何,尤其是Windows A ...

  7. 《深入理解Android:Telephon原理剖析与最佳实践》学习笔记(系统框架)

        Android智能手机的系统结构: 智能手机的硬件基本结构大多采用双处理器架构:主处理器和从处理器,主处理器主要运行开放式操作系统以及操作系统之上的应用,负责整个系统的控制,称之为AP,从处理 ...

  8. [转]Android开发最佳实践

    ——欢迎转载,请注明出处 http://blog.csdn.net/asce1885 ,未经本人同意请勿用于商业用途,谢谢—— 原文链接:https://github.com/futurice/and ...

  9. Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(上)

    Windows Azure是微软的云平台,可以提供广泛服务.您可以通过它搭建.部署并管理解决方案,用于实现您可以想象的几乎任何目标.换言之,WindowsAzure是拥有无限可能的世界.无论您是需要运 ...

随机推荐

  1. 2013 ACM/ICPC Asia Regional Chengdu Online---1003

    哈哈哈 #include <iostream> #include <cstring> #include <string> #include <cstdio&g ...

  2. MYSQL - php 使用 localhost 无法连接数据库

    php 使用 localhost 无法连接数据库,而使用127.0.0.1却能连接成功. 可能原因: 系统hosts文件未提供127.0.0.1到localhost的解析.解决方法(以win7系统为例 ...

  3. 通过SecureCRT和PuTTY连接臻云CentOS版云主机

    原文地址:http://jingyan.baidu.com/article/fa4125acb6648128ac7092dc.html 如何通过SecureCRT和PuTTY工具远程连接臻云CentO ...

  4. 分享,iOS国家手机区号代码.plist

    APP注册需要手机号码的时候,如果有在其他国家的时候需要填写手机区号 一份有国家名字和区号的plist 参照微信注册的时候 格式是 <Array> <Array> <Ar ...

  5. 设置QPushButton的平面与突出(遍历控件)

    #include "ui_maindialog.h" #include "maindialog.h" #include <QState> #incl ...

  6. php unset 数组陷阱

    我们删除一个array, unset($arr); 想删除某个元素 unsert($arr[i]) 一个陷阱是: unset() 函数允许删除数组中的某个键.但要注意数组将不会重建索引.如果需要删除后 ...

  7. k路归并(败者树,记录败者)

          败者树在外排序中用到,每加入一个数字时,调整树需要o(lgk),比较快.外排序过程主要分为两个阶段:(1)初始化各归并段写入硬盘,初识化的方法,可利用内排序方法还可以一种叫置换选择排序的方 ...

  8. HDU 4740 模拟题意

    九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11711743 题意:驴和老虎在方格中跑,跑的方式:径直跑,若遇到边界或之前走过的 ...

  9. 一步一步重写 CodeIgniter 框架 (7) —— Controller执行时将 Model获得的数据传入View中,实现MVC

    1. 实现过程 1) 上一节讲述了 View 视图的加载过程,它是在 Loader 类中加载的,并通过 Include 语句进行包含.那么为了在 View 中传递变量,只需要在 include 语句所 ...

  10. 设置Ubuntu 10.10版本的软件源

    设置Ubuntu 10.10版本的软件源 http://blog.csdn.net/xie1xiao1jun/article/details/49911189   网上有很多关于软件源信息的更新,每次 ...