Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施
那么,哪些安全威胁应由WindowsAzure环境缓解?哪些安全威胁必须由开发人员缓解?
开发 Windows Azure 应用程序的最佳安全做法一文说明了对于在
Windows Azure 中运行的应用程序而言,什么样的威胁应被视为主要威胁。它还专门说明了 Azure
能够缓解的威胁以及您需要调用 API的内容和您需要自己处理的内容。(它未涉及合规性问题。)
您应该处理的内容
我将选择一些威胁和您应该执行的操作,并提供一些参考,以便您可以了解有关如何在代码中进行实现的更多信息。该列表在Windows Azure 安全概述中提供。但是具体结果将取决于您。
这个列表并不全面。正如您从本系列文章的以前部分中了解的那样,您根据您自己的应用程序需求来调整您的安全做法。
篡改威胁
篡改/泄漏凭据或其他敏感应用程序数据。针对 SSL连接,使用
WindowsIdentity 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属性的范围设置为服务子域(例如 http://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 部分:提示、工具和编码最佳实践。
本文翻译自:
Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施的更多相关文章
- Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践
在撰写这一系列文章的过程中,我总结出了很多最佳实践.在这篇文章中,我介绍了在保护您的WindowsAzure应用程序时需要考虑的更多事项. 下面是一些工具和编码提示与最佳实践: · 在操作系统上运行 ...
- Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性
多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...
- Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录
基于Claim的身份标识是处理网站与 Web 服务的身份认证和访问一种简单而强大的方式,无论您是在本地工作还是面向云工作.您可以通过减少自定义实施和使用基于Claim的单一简化标识模型,创建更安全的应 ...
- Windows Azure 安全最佳实践 - 第 3 部分:确定安全框架
构建云应用程序时,安全始终是计划和执行Windows Azure的首要核心因素.第 1 部分提出安全是一项共同责任,Windows Azure为您的应用程序提供超出内部部署应用程序需求的强大安全功能. ...
- Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制
在WindowsAzure安全最佳实践 - 部分:深度解析挑战防御对策中,我介绍了威胁形势以及在您的应用程序中采用深度防御的计划. 在本部分中,我将说明 Windows Azure的安全是一项共同责任 ...
- Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策
我每次与开发人员讨论将应用程序迁移到云时都围绕着两个主要问题. 1. 首先是业务.将应用程序迁移到云可以带来怎样的规模经济? 2. 其次是安全问题."云的安全性如何,尤其是Windows A ...
- [转]Android开发最佳实践
——欢迎转载,请注明出处 http://blog.csdn.net/asce1885 ,未经本人同意请勿用于商业用途,谢谢—— 原文链接:https://github.com/futurice/and ...
- Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(上)
Windows Azure是微软的云平台,可以提供广泛服务.您可以通过它搭建.部署并管理解决方案,用于实现您可以想象的几乎任何目标.换言之,WindowsAzure是拥有无限可能的世界.无论您是需要运 ...
- (转)iOS 最佳实践
本文转自http://www.jianshu.com/p/b0bf2368fb95 感谢作者和译者 iOS最佳实践 iOS最佳实践 译者注 本文翻译自 futurice 公司的 iOS Good Pr ...
随机推荐
- 用typedef声明类型
定义: 可以用typedef声明一个新的类型名来代替已有的类型名. 用法: typedef int INTEGER;//指定用标识符INTEGER代表int类型 typedef float REAL; ...
- vijos 1115 火星人
说了那么多.事实上就是遍历全排列 #include<iostream> #include<cstdio> #include<algorithm> #include& ...
- 使用Intel编译器获得一致的浮点数值计算结果
使用Intel编译器获得一致的浮点数值计算结果大多数十进制的浮点数, 用二进制表示时不是完全一致的; 与此同时, 大多数与浮点数值相关的计算结果, 存在着固有的不确定性.通常, 编写浮点计算应用软件希 ...
- 随手记今天跟的几个iOS项目代码的问题
休了一阵子假期,今天刚回来上班,项目代码已经有挺大的变化了,我就先体验.发现.跟进问题. 第一个问题是点击某个cell就挂掉的现象,同事表示必现但挺神奇.由于挂掉的时候没有啥有意义的信息,所以先简单粗 ...
- POJ 2187 旋转卡壳 + 水平序 Graham 扫描算法 + 运算符重载
水平序 Graham 扫描算法: 计算二维凸包的时候可以用到,Graham 扫描算法有水平序和极角序两种. 极角序算法能一次确定整个凸包, 但是计算极角需要用到三角函数,速度较慢,精度较差,特殊情况较 ...
- 基于html5 localStorage , web SQL, websocket的简单聊天程序
new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var send ...
- 动态规划之一ones
n给一个整数n,要你找一个值为n的表达式,这个表达式只有1 + * ( ) 够成.并且1不能连续,比如11+1就不合法. n输入n,(1<=n<=10000) n输出最少需要多少个1才能构 ...
- 【C# -- OpenCV】Emgu CV 第一个实例
原文 [C# -- OpenCV]Emgu CV 第一个实例 Emgu CV下载地址 http://sourceforge.net/projects/emgucv/files/ 找最新的下就行了,傻瓜 ...
- cmake手册详解----转
参考链接:http://www.cnblogs.com/coderfenghc/tag/cmake/
- C++ vs.net设置UTF8字符
1.将main.cpp改成utf-8编码,方法是点击main.cpp,然后选择菜单文件->高级保存选项.[所有源码都要转换成uft-8] 2.在你的main函数里,设置如下代码,完美解决qt5的 ...