在过去的十几年里,随着信息技术的高速发展和企业信息化步伐的深入,企业在利用信息技术实现其商业目标的同时也变得越来越依赖于信息技术。以银行业为例,为了降低运营成本,提高用户满意度,今天的银行普遍利用信息技术支持的电话银行、ATM及网络银行系统为客户提供个性化、差异化的服务。另外,银行也在不断利用信息技术收集和分析大量的与客户有关的数据和信息,为新产品开发提供决策支持,从而达到提高盈利水平的目标。在今天的企业信息环境里,如何保证信息系统以及信息本身的安全性已然变得至关重要了。事实上,在今天具有一定规模的企业的IT环境里往往存在着少则几百个多则上千个大大小小的业务应用(Line of Business Applications),小到支持几个人的小规模团队的协同应用,大到贯穿于一个企业生产、经营、管理全过程的企业级应用。如何降低信息技术给企业带来的各种安全风险呢?无疑已成为当今所有企业面临的新挑战。
企业信息安全的涵盖面非常广,涉及到人员、流程和技术等诸多方面的因素。正因为如此,一方面信息安全越来越受到广泛的关注,并且企业在信息安全方面的投入不断增加,而另一方面各种给企业造成负面影响的安全事件却层出不穷。单纯的技术手段往往无法帮助企业彻底消除存在的诸多安全问题,只有建立起一整套安全策略和流程,通过合理地资源配置并且充分利用各种技术和非技术手段,企业才有可能更加有效地管理各类安全风险。
信息安全包括安全体系的构建和管理、物理和环境安全、数据中心和网络安全、系统开发和维护安全等多方面内容。今天我们在这里讨论的话题将主要围绕安全系统开发,即企业在业务应用的开发过程中应该如何应对各种可能对应用造成影响的安全性问题。微软看来,保证和提高应用安全性的最佳时机是在应用的开发阶段。微软信息安全部门的ACE团队通过多年来在应用安全领域的实践经验,创建了一整套安全开发流程,即信息技术安全开发生命周期流程(Secure Development Lifecycle for Information Technology,缩写为SDL-IT)。该流程包含有一系列的最佳实践和工具,多年以来不仅被用于微软内部业务应用的开发过程中,而且也被成功地应用在许多微软客户的开发项目中。
SDL-IT流程涵盖了软件开发生命周期的整个过程(如下图所示)。目的是通过在软件开发生命周期的每个阶段执行必要的安全控制或任务,保证应用安全最佳实践得以很好地应用。SDL-IT强调在业务应用的开发和部署过程中对应用安全给予充分的关注,通过预防、检测和监控措施相结合的方式,从而降低应用安全开发和维护的总成本。
SDL-IT流程的第一步首先是对所要开发的应用进行安全风险评估。根据应用的风险和影响程度确定在整个软件开发生命周期过程中需要采取的安全控制。在对应用进行安全风险评估时需要考虑的因素包括应用本身,应用存储和处理的数据类型(比如是否涉及高业务影响数据或个人身份信息等)以及应用的部署环境(比如Internet、Intranet或Extranet应用)等。评估通常是以问卷形式开展的,根据开发团队调查问卷的结果计算加权得分,确定应用的安全风险等级。微软的安全策略明确规定了不同安全风险等级的应用所需采取的安全控制(如下图所示)。
接下来SDL-IT流程要求为应用建立安全威胁模型。安全威胁建模的目的是帮助应用开发团队在应用的设计阶段充分了解应用中存在的各种安全威胁并指导应用开发团队选择适当的应对措施。应对措施的建议可能涉及技术层面,比如如何改进应用的设计或者如何在代码编写过程中避免某些代码安全漏洞的出现等,也可能涉及流程和人员培训等方面。安全威胁建模的目的是对应用可能带来的风险进行管理。因此,在确定处理安全威胁的优先级和选择适当的应对措施时既要考虑安全威胁可能造成影响的大小,同时也要考虑安全威胁发生的可能性(如下图所示)。
这里将大致介绍一下微软安全威胁建模的流程。首先是定义应用的安全目标和需要保护的信息资产。微软看来,一个安全威胁如果不能够被证明会对企业的信息资产造成损害,它就不构成一个真正的安全威胁。接下来需要了解应用的体系架构,包括子系统、信任边界和数据流,并且通过对应用体系架构的进一步细化,定义应用的角色、模块、数据和使用案例。在对应用的安全目标、体系架构、实现细节和技术应用有了清楚的了解以后,安全人员就可以帮助开发团队找出应用中可能存在的安全风险和漏洞,并且提出应对措施建议。同时,安全团队还会对所有的安全风险按照保密性、完整性和可用性(Confidentiality、Integrity﹠Availability,缩写为CIA)进行归类,以便更好地帮助开发团队了解安全漏洞可能造成的影响。最后,针对各种安全风险,开发团队综合考虑各方面因素确定是否接受、避免、降低或转移安全风险。
如果使用微软安全威胁建模工具(Threat Analysis & Modeling Tool),开发团队可以利用工具本身提供的报表功能生成面向应用开发以及测试人员的报告。开发团队可以利用报告中的有针对性的安全编程最佳实践和安全检查清单辅助进行安全开发和测试。从而实现从安全人员到应用开发人员的应用安全推动。此外,在应用的开发过程中,微软要求开发团队内部成员间应该进行代码安全审核。
在应用投产前,微软要求由独立的安全团队对应用的安全性进行综合评估。主要内容包括对应用进行代码安全审核(即白盒安全测试)以及对应用的部署及环境进行安全审核。投产前安全审核的主要目的是检验在前面阶段定义的安全措施是否在应用的开发过程中被正确实施。安全人员会利用代码分析工具(Code Analysis Tool)结合对关键应用模块的源代码进行人工逐行扫描的方式,找出应用中存在的安全漏洞并提出应对措施建议。开发团队根据严重性级别对安全漏洞进行修复。应用部署及环境审核的目的则是降低应用的受***面,确保不会因为部署环境特别是服务器的安全性而影响到整个应用的安全性。
在应用投产后对应用及其运行环境进行实时监控也是保障应用安全的必要措施。一方面应用本身及其部署环境可能会发生改变,使得以前的某些安全性方面的假设不再有效。另一方面,新的******手段和方法也会不断地出现,也可能给应用带来新的安全威胁。此外,某些行业的企业可能还会有合规性管理(比如ISO、PCI、SOX等)方面的需要,要求企业对其IT环境的技术标准遵从状况进行监控和管理。
以上关于SDL-IT流程的描述主要是针对正在或将要开发的应用。那么如何利用SDL-IT,特别是在有限的资源和预算条件下,提高企业IT环境中已投产应用的安全性呢?微软建议企业应遵循SEE(Secure、Enhance﹠Empower)框架:
  1. Secure:对关键应用进行安全设计审核和代码安全审核
  2. Enhance:对全部应用进行风险分析和威胁建模
  3. Empower:帮助所有开发人员了解最常见安全漏洞的成因和修复方法
在企业越来越注重投资回报的今天,SDL-IT的成本是企业最关注的问题。另外,如何处理好应用安全性和易用性的矛盾并实现两者之间的平衡也是企业需要面对的实际问题。SDL-IT会在一定程度和一定阶段增加应用开发的成本,但是却可以有效地帮助企业提高开发、部署和投产的应用的安全性和质量。通过对SDLC前期的必要投入(比如安全威胁建模和设计审核等),SDL-IT可以有效地帮助企业降低在应用投产后发现和修复安全漏洞的成本以及可能带来的其它损失,比如生产力损失或者对企业声誉、法规遵从造成影响等。关于应用安全方面投资回报的讨论是一个复杂的话题,在这里就不做更深入地讨论了。需要强调的是:应用的安全性和其它需求一样,是应用的一部分。从前“寻找安全漏洞”的做法并不能真正保证应用的安全性。企业有必要改进软件开发流程,做到在应用开发的整个过程中自始至终地关注应用安全。最后借用Bill Malick的一句话“Security is like the brakes on your car. Their function is to slow you down. But their purpose is to allow you to go fast.
浏览更多精彩文章>>
订阅软件安全电子期刊>>

转载于:https://blog.51cto.com/broadviewsec/132512

应用安全与微软SDL-IT流程相关推荐

  1. 微软SDL流程终极整理总结

    目录 微软软件安全开发流程(SDL) 一.微软SDL(Security Development Lifecycle)流程框架 二.主要步骤 1.安全培训Training 1.1 Core Securi ...

  2. 武汉微软认证考点及考试流程 与 微软认证考试流程

    微软认证武汉考试中心: 1.武汉瑞琪信息技术有限公司 地址:武汉市武昌珞瑜路1号珞珈山饭店六楼 电话:(027)87653191,87883101-1638,1398653345 传真:(027)87 ...

  3. 安全开发流程(SDL)

    目录 0x01 SDL介绍 0x02 SDL流程框架 0x03 SDL实战经验 0x04 总结 0x01 SDL介绍 安全开发生命周期(SDL)即Security Development Lifecy ...

  4. 【应用安全】微软的安全开发生命周期(SDL)

    [应用安全]微软的安全开发生命周期(SDL) 0x01 SDL介绍 安全开发生命周期(SDL)即Security Development Lifecycle,是一个帮助开发人员构建更安全的软件和解决安 ...

  5. 论企业如何快速建立SDL流程

    https://www.freebuf.com/articles/es/220410.html 前言 今年很多比较大的互联网公司开始试行SDL落地,但是由于相关资料文档有限,导致落地困难,今天这篇文章 ...

  6. [名人观点--刘振飞] 微软研发流程

    刘振飞:   微软项目经理   开源缺陷管理工具bugfree创始人 ----------------------------------------------------------------- ...

  7. SDL介绍----4、S-SDLC安全开发生命周期

    文章目录 一.S-SDLC 二. S-SDLC流程 三.S-SDLC项目流程 一.S-SDLC OWASP Secure Software Development Lifecycle Project( ...

  8. 中小企业怎样搭建软件安全开发流程和规范

    文章目录 微软SDL相关内容学习记录 微软SDL介绍 SDL核心概念 SDL优化模型 SDL适用性 SDL角色分工 简化的SDL安全活动 必需的安全活动 培训 要求 设计 实施 验证(对应的是测试阶段 ...

  9. 互联网企业如何有效落地SDL

    *本文作者:hackeryeah,转载请注明来自FreeBuf.COM 前言 笔者在实施SDL方面有多年的经验,实施过微软厚重的SDL,实施过互联网企业粗糙的SDL,目前在落地标准化自动化的SDL,在 ...

  10. 微软软件测试的可借鉴之处

    开头语:         做测试很久了,一直为一些问题所困扰,也一直对微软有一种顶礼膜拜的向往,终于有一天,近距离的接触了微软的测试,感觉不是以前想象中那么遥不可及,却又难以企及.于是把个人觉得微软值 ...

最新文章

  1. 已知服务器ftp的账号密码,求解数据库表的内容
  2. Android之开源框架NineOldAndroids动画库
  3. jQuery 判断是否包含某个属性
  4. 图像的缩放,旋转,转置和镜像
  5. 牡丹-曹州牡丹:曹州牡丹
  6. 《maven的学习》 尚硅谷Maven视频(maven零基础入门)B站
  7. FPGA入门到精通系列1:数字电路基础知识
  8. 演讲的思路锻炼,逆向思维需要刻意练习吗?
  9. 停车还能360全方位影像_什么是360全景?
  10. 牵线搭桥!让用户更高效地完成表单填写
  11. 【python数据分析(24)】Matplotlib库基本图形绘制(1)(线形图、柱状图、堆叠图、面积图、填图、饼图)
  12. 上网日志留存_互联网用户日志留存技术标准
  13. python openpyxl删除excel特定行数据遇到的问题
  14. Mybatis核心配置文件
  15. Echart柱状图中数据显示在图上方
  16. 谷歌地图地理翻遍码,谷歌地图地点搜索
  17. python html做界面_用Html来写Python桌面软件的UI界面-htmlPy
  18. linux mint安装中文包_Linux Mint 安装中文后菜单字体变成楷体的解决办法
  19. iOS 在 Xcode 中重命名项目名称
  20. 如何使用支付宝支付接口

热门文章

  1. C#调用C++ DLL的方式
  2. linux几个常用的环境变量配置文件
  3. WinAPI: GetLogicalDrives - 判断系统中存在的逻辑驱动器
  4. 产品经理跳槽面试大揭秘……
  5. 基于senparc实现的微信AccessToken接口全局统一获取
  6. Redis添加密码认证Cacti监控读取Redis状态值为 -1 的最快速解决方案
  7. 页面左边导航固定,右边自适应宽度
  8. segment fault
  9. 关于[UITableView setEditing:YES animated:YES] 没有animation
  10. 淘宝技术发展(Java时代:脱胎换骨)