写点什么

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:002968

评论

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

在线图片坐标拾取工具

入门小站

深入浅出 LVS 负载均衡(三)实操 NAT、DR 模型

UCloud技术

BoCloud博云稳居中国容器软件市场份额TOP 5

BoCloud博云

容器

16倍效率提升体验,博睿数据APM成企业运维超级加速器

博睿数据

APM 博睿数据 数据链DNA

搭建Prometheus+Grafana的云平台监控系统

学神来啦

云计算 Linux 运维 开发日志

2021年版,拼多多/阿里/今日头条/京东 Java面经大合集(含答案)

Java架构师迁哥

百度智能云NIRO MAX机器人,打造智慧党建新体验!

百度大脑

人工智能 百度 机器人

C#开发之基于NPOI的操作Excel开发体验

吴脑的键客

C# Excel

星环科技TDH8.0使用必读2: 10种数据模型全支持 未来属于多模型大数据平台

星环科技

大数据 边缘计算 知识图谱 数据管理平台 多模型数据

专科小伙豪取三杀,斩获阿里、京东和蚂蚁Java岗offer的原因找到了!

北游学Java

Java 面试

🌏【架构师指南】分布式技术知识点总结(下)

码界西柚

分布式 架构设计 6月日更

WebRTC学习—WebRTC详解

Linux服务器开发

音视频 WebRTC ffmpeg SRS流媒体服务器

80后自立门户,90后异军突起,中国投资新势力加速崛起 | 创业邦2021年40位40岁以下投资人重磅发布

创业邦

创业

iOS开发21年6月面试总结(未完待续~)

iOSer

ios 面试 ios开发 iOS 知识体系

关于Redis分布式锁的那些事

Hex

redis 后端

阿里云中间件首席架构师李小平:企业为什么需要云原生?

阿里巴巴中间件

必须加强对电商促销节的监管:保障普通消费者合法权益

石头IT视角

2021年5月云主机性能评测报告出炉,华为云跃居榜首

博睿数据

云主机 博睿数据 博睿指数

互联网推送服务原理

hasWhere

第六课作业

杰语

网易有道开源EMLL:高性能端侧机器学习计算库,大幅提高计算性能

有道技术团队

人工智能 机器学习 高性能计算 端侧AI

阿里云边缘容器服务ACK@Edge 通过33项测评,拿到“2021云边协同能力认证”

阿里巴巴中间件

《转》HttpURLConnection自动重试机制

hasWhere

细细阅读,3张图带你理解,零拷贝,mmap和sendFile

奔着腾讯去

c++ Linux Mmap C++后台开发 网络io

WWDC21 给开发者最重要的7条新信息

阿里巴巴大淘宝技术

开发者 WWDC21

一体化、标准化、可视化数据平台,博睿数据领跑智能运维新典范

博睿数据

博睿数据 数据链DNA dataview

移动开发iOS,薪资如何?待遇怎样!

ios开发 iOS 知识体系

数据库设计的 10 个最佳实践

xcbeyond

数据库 数据库设计 6月日更

终端架构深研,CodeDay 成都站等你

蚂蚁集团移动开发平台 mPaaS

flutter mPaaS Codeday Meetup

WebRTC 传输安全机制第二话:深入显出 SRTP 协议

阿里云CloudImagine

音视频 WebRTC 通信 流媒体开发 SRS流媒体服务器

Flink User-Defined Source

Alex🐒

flink 翻译 Flink扩展 flink1.13

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