速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Bryan Sullivan 探讨安全开发生命周期

  • 2011-02-14
  • 本文字数:3780 字

    阅读完需:约 12 分钟

安全开发生命周期 Security Development Lifecycle( SDL ),起源于微软,是一种专注于软件开发的安全保障流程。为实现保护最终用户为目标,它在软件开发流程的各个阶段引入安全和隐私问题。此框架还包括了一系列的强制性的安全活动,并且依据传统软件开发流程阶段进行分类。

SDL 流程中,包括了以下七个阶段:

安全训练:这是安全开发生命周期(SDL)的前置要求,一个成熟的安全训练课程会让软件开发团队学会安全和隐私的基础知识,了解专业的技术问题并且对近期安全和隐私问题的趋势了如指掌。

需求:在需求阶段,开发团队会考虑如何更好地让安全和隐私问题整合到日常的开发过程当中,识别关键安全对象,同时尽可能地降低对可用性、项目计划和日程造成的影响。

设计:在设计阶段识别出软件产品的总体需求和结构,并设计最佳实践。在 SDL 设计阶段中关键点是可以使用 SDL 工具 Threat Modeling Tool 进行建模工作。此工具可被安全 / 非安全专家用于创建并分析安全威胁模型,如:

  • 进行系统安全设计的交流
  • 分析设计中可能出现的安全隐患
  • 就完全问题提出建议和管理缓解措施

实现:在实现阶段,开发团队应该按照最佳实践的标准来严格执行并贯穿整个开发过程。

验证:到了验证阶段,软件在功能上已经完成了,而且已经对需求与设计阶段列出的安全和隐私要求测试过了。

发布:发布阶段是当一个开发团队完成了附加的响应计划,进行了最后的安全检查,并且对发布后服务的数据进行了归档。

响应:这是安全开发生命周期 (SDL) 的后置需求。是指在软件项目发布后,产品开发团队必须保证对任何可能的安全隐患和隐私问题作出响应。微软安全响应中心( MSRC )对管理安全响应提供了指导。

安全开发生命周期 (SDL) 包括了多个安全分析,开发和测试工具来开发的各个阶段帮助开发人员。这些工具包括:

  • SDL Process Template for Visual Studio Team System
  • MSF-Agile+SDL Process Template
  • Banned.h
  • SiteLock ATL Template
  • FxCop
  • Code Analysis for C/C++
  • Anti-XSS Library
  • CAT.NET
  • BinScope
  • MiniFuzz
  • SDL Regex Fuzzer

InfoQ 采访了 SDL 团队的 Bryan Sullivan,探讨了如何帮助架构师和开发人员来开发安全的代码,还讨论了 SDL 框架的未来。Bryan 谈论了 RSA 2010 大会以及 BlackHat 2010 大会上的 Cryptographic Agility 话题中提到的 SDL 框架和工具。

InfoQ:您能否跟我们多谈一点安全开发生命周期(SDL)项目以及你目前在该项目中所扮演的角色?

Bryan Sullivan:微软安全开发生命周期是微软公司发明的开发流程,并且在微软内部使用以开发出更安全的软件。从本质上来说,它是在整个开发过程中,开发团队需要使用的一系列的必须完成的安全和隐私方面的工作。这里给出一些例子:每个团队针对他们的应用程序制作一个威胁模型(threat Model);每个团队必须对自己开发的应用程序进行安全攻击分析(attack surface analysis,译注:Attack Surface Analyzer 是由微软安全工程师和安全科学团队开发的 Windows 攻击分析工具软件)。

我想强调一下这些工作在整个软件开发生命周期中是极为重要的。我们经常看到其他的公司尝试在产品发布前做很多安全测试工作并以此来确保产品的安全性。但是这个方法行不通。验证测试的确是重要的(这是微软安全开发生命周期的一部分),但是系统设计阶段的安全考虑同样重要,这是在安全开发标准中提到的,即便在应用需求中已经考虑了安全。该方法系统性地保证了安全开发过程,让安全开发生命周期(SDL)更加有效。

我在 SDL 团队中的角色是一个特殊的双重角色,我负责保证基于网页的应用安全问题在 SDL 要求的任务中被正确的记录下来。这不仅意味着需要开发团队完成更多相关的工作,还要确保尽一切可能让工具去自动完成这些工作,以此来减少开发团队的工作量。这意味着有些时候我们要开发这些工具,或者由微软其他团队开发,有时我们也使用一些第三方工具。工具从哪里来不重要,重要的是它们能够出色地完成其工作。

所以,我在 SDL 团队的第二个角色就产生了——管理我们内部开发的 SDL 工具对外的发布。我们不认为 SDL 是一个“秘密配方”而需要对外保密——事实上截然相反,我们希望更多的企业能够使用 SDL 框架。这意味着如果我们开发出能够简化流程的工具,我们会和整个(SDL)社区共享。至今,我们已免费发布了许多我们已经在内部使用的工具,例如 SDL Threat Modeling Tool、Binscope Binary Analyzer、Minifuzz File Fuzzer 和 SDL-Agile Process Template。

InfoQ:那么,你们开发 SDL 框架的动力是什么呢?

Bryan:回到 2001 年,微软的产品被两种非常具有攻击力和危险性的蠕虫病毒攻击了,它们是:CodeRed 和 Nimda。业界分析师开始建议企业用户从我们的 IIS 服务器迁移到竞争对手的产品上去。在那时微软的安全开发团队,包括 Steve Lipner,他目前是安全工程战略部门(Security Engineering Strategy)和微软 SDL 团队的高级总管,都认识到制止这些恶意攻击的唯一途径是在代码中解决这些潜在问题。所以他们开始开发 SDL,也就是通过一系列事件来保证系统减少容易受攻击的脆弱点,并且即使系统被侵入也不会受到很大影响。

InfoQ:那么 SDL 是如何对付安全问题的两个子领域:安全的架构和运维安全?

Bryan:就如它的名字,SDL 更加专注于设计和开发阶段的安全问题,而不是运维阶段的安全性。我同意运维阶段的安全问题是非常重要的,但是这个领域是由微软的另一个团队来管理的。我们和这个团队合作很密切,但是对 SDL 本身来它是不包括运维安全需求的。

InfoQ:SDL 能否被应用到一些使用敏捷或者精益开发框架的企业中?

Bryan:当然,我们最初开发的“经典”SDL 框架是用在瀑布(waterfall)模式的开发方法中,就像是那些被 Windows,Office 和 SQLServer 开发团队使用(SDL 框))。不过,我们很快认识到很多网上服务团队(同样受 SDL 需求影响的)和增长中的 xbox 产品团队遵从敏捷开发规范。这些团队发现,在一周这样的发布周期内是很难完成 SDL 所要求的工作的。更大的问题是,基于敏捷的项目是没有计划中的“结束点”来执行最后的安全检测和审计。

为了解决这问题,SDL 团队的一个小组开发了我们称之为 SDL-Agile 或者简称 SDL-A。SDL 包括了所有经典 SDL 所含有事件——毕竟攻击者不关心你用哪种开发模式,所以你使用敏捷模式开发出来的应用必须和瀑布模式开发出来的应用一样安全——但是所有 SDL 所包含的事件会存在一个更适合敏捷开发模式的结构中。微软内部团队自从 2009 年 10 月开始使用 SDL-A,而且我们在今年 2 月份对外发布了 SDL-A,这样外面使用敏捷开发模式的企业可以同样遵循 SDL 框架。

InfoQ:SDL 能在运维安全领域中使用吗,例如,在实施阶段之后?

Bryan:就像我之前提到的,SDL 更适合运用在开发过程中。不过它也有一个明显的例外,SDL 策略会考虑对突发安全事件的响应。

InfoQ:应用安全验证和策略执行的最佳实践是什么?SDL 能否帮助进行架构安全评估?

Bryan:我们确实没有策略执行方面的问题:在微软,SDL 是一个必须遵从的策略,并且它是直接从 Bill Gates 的“可信赖计算机备忘录”里下达的命令,当 Bill Gates 发布了一个必须遵从的策略,所有的微软员工都会执行。一个很重要的点是,如果你希望在公司实施 SDL 策略,得到执行官的同意是非常重要的。如果你有困难,那么我建议你看一下优化的 SDL 模型,你可以在 SDL 网站上找到它: www.microsoft.com/sdl 。优化的模型定义了 SDL 的四个成熟度,以能够提供最高投资回报率(ROI)的事件开始。以 SDL 标准的程度开始,为你的执行团队采集一些 SDL 能够发挥作用的事实,并且说明这能为你的公司节约开支,接着回过头来获得你团队的支持。 对于架构安全评估,我们有 SDL 威胁建模工具(ThreatModelingTool,可以免费从 www.microsoft.com/sdl 下载),它就是为了架构安全评估而设计的。我们听说过很多悲哀的事情,例如开发人员必须把自己想象成为一个“黑客”,这样他的代码才会足够安全。不幸的是,如果你没有受过安全的培训,你很难把自己想象成一个黑客,就像你把自己想象成一个飞机驾驶员,但是你却从未开过飞机。所以我们开发了“威胁建模工具”,它能被安全专家使用,也能被一个非专家使用。你只需把你的应用在 Data Flow Diagram 里建模,“威胁建模工具”就会提醒你需要在有可能出现漏洞的地方加以完善。

InfoQ:SDL 能在非微软的开发环境中使用吗,例如 Java 和 Ruby?

Bryan:当然,SDL 是完全和操作系统,编程语言无关的。经常有这样的误解,SDL 是只能为 Windows 操作系统,或者像微软这样的企业而服务的。SDL 是为了开发出更安全的软件,但是开发的细节或者使用的工具可以是根据操作系统而变化的,只要其核心的原则不发生改变。我们把这些核心原则整理了出来并且把它放到了一个名为“MicrosoftSDL 简化实现”的白皮书里,也发布在 www.microsoft.com/sdl 中。无论你是在 1000 人的 C++ 开发团队中,或者 2 个人在捣鼓 PHP 代码,你都可以简化的 SDL 文档中找到你需要的帮助。

InfoQ:SDL 项目的未来会是怎样?

Bryan:在 2010 接下来的日子里以及 2011 年,我们会注重于初始的开发生命周期;特别是在设计和需求整理阶段。我们会带来一些新工具来帮助开发人员和架构师设计更安全的应用。

InfoQ:谢谢你。


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-02-14 00:002594

评论

发布
暂无评论
发现更多内容

DApp质押挖矿系统开发详细案例及源码部署指南

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 代币阿凯

iZotope RX 11 专业音频修复软件

理理

有php转go项目经验者优先?

王中阳Go

php Go 面试

如何激发下属的工作积极性

老张

团队管理 绩效管理

在昇腾Ascend 910B上运行Qwen2.5推理

SEAL安全

DNS解析常见问题有哪些?DNS解析出现问题怎么解决?

国科云

软件测试学习笔记丨Flask操作数据库-数据CRUD(增删改查)

测试人

软件测试 测试开发

Autodesk Maya 2025 for Mac综合性的三维动画创作软件

Mac相关知识分享

dubbo3.0 服务导入导出原理

京东科技开发者

CAD迷你看图 for Mac

Mac相关知识分享

数据安全再添保障!TapData 顺利通过 SOC2 Type 2 权威认证

tapdata

数据安全 实时数据平台 数据合规 数据集成工具 soc2type2认证

华为云开源时序数据库openGemini:使用列存引擎解决时序高基数问题

华为云开发者联盟

Clickhouse 时序数据库 高基数 openGemini

项目经理把控项目质量真的很难吗?

Hi-CodeCaptain

代码质量 测试覆盖率 精准测试 软件开发、 质量内建

如何应对频繁变更的需求以防项目范围蔓延

爱吃小舅的鱼

需求管理 需求变更 项目范围

一张网支撑AI端到端应用,哔哩哔哩与华为联袂演绎高维度算网融合

新消费日报

ULTIMATE VOCAL REMOVER V5 for mac(UVR5终极人声去除器)v5.6激活版

理理

珂芝双十一AI体验月福利来袭,更有众多新品上新!

科技热闻

测试开发岗位就业与内推指导公开课

测吧(北京)科技有限公司

测试

KeyShot 2024.3 for mac专业实时渲染和动画软件

Mac相关知识分享

测试开发岗位就业与内推指导公开课

测试人

软件测试

东芝音画双芯MiniLED电视Z750NF上市,打造真实影院级视听盛宴

Geek_2d6073

Java并发编程知识图谱,掌握并发业务所需的技能点(收藏篇)

肖哥弹架构

Java 并发编程 高并发

为何大多数程序员不选择个人独立开发?

Geek_2305a8

2024年游戏市场买量潜力如何?

Geek_2305a8

专业级的音乐制谱软件 Steinberg Dorico Pro for Mac 中文版

理理

Set A Light 3D Studio for Mac开创性的摄影工作室模拟软件

Mac相关知识分享

AI 产品系统的数据指标

采芑

指标中台; 数据分析 AI 基础设施

前端技术探秘-Nodejs的CommonJS规范实现原理

京东科技开发者

TapData 发布官方性能测试报告,针对各流行数据源,在多项指标中表现拔群

tapdata

数据复制 Tapdata 实时数据集成 tapdata性能测试 性能测试报告

百度沧海·存储统一技术底座架构演进

Baidu AICLOUD

对象存储 分布式存储 云存储 存储架构

加锁失效,非锁之过,加之错也

京东科技开发者

Bryan Sullivan探讨安全开发生命周期_安全_Srini Penchikala_InfoQ精选文章