隨著安全得到越來越多的關注,一些跟安全相關的理論(比如BSI)脫穎而出,盡管這些理論提出來已經有一段時間,卻很少看到其在開發團隊被成功地應用。我們知道微軟曾在十多年前就提出了SDL,卻沒能在業界推廣開來,并不是人們不認可微軟這種“從軟件生命周期保障安全”的理念,而是考慮到其落地實施的難度,很多企業知難而退,那么這些安全理論對我們的軟件安全真的有幫助嗎?安全實踐能落地嗎?
很幸運地,我有機會在一個成熟的敏捷開發交付小組中經歷了“從完全沒有安全實踐到BSI”的過程,我們也曾遇到過很多困難,但最終得到了客戶的認可,并成功把安全實踐推廣到了整個團隊,所以想跟大家分享一下我們是如何將安全在敏捷團隊落地的,希望能給大家一些幫助。文中會拿Web系統舉例,但一些落地的實踐同樣適用于非Web系統。
為什么安全理論很難落地?
結合對一些團隊的了解,原因大多來自以下三個方面:
1.認為安全不重要
2.認為安全太難,需要很廣很深的領域知識,只有專業人員才能做到
3.不知道應該用什么樣的流程來做安全
那么針對第一點,因為我本身也是交付團隊的一員,我觀察到的大多數軟件開發團隊,不管是業務分析師、開發人員、測試人員、體驗設計師還是項目經理,都很少有人真正把“安全”作為非常重要的一件事情,尤其是在交付壓力比較大的情況下,我們都會舍棄對于安全的投入,而花時間在更容易可視化出來的用戶功能上。安全,很多時候就像滅火器,如果不發生火災,我們甚至都感覺不到它的存在。那么,安全,真的重要嗎?
換位思考一下,如果我們是用戶,面對以下兩種選擇,我們會選擇哪一種?
系統A:設計非常完美,功能缺陷幾乎沒有,性能也很棒,但是沒有做任何跟安全相關的防護,用戶的敏感信息很容易泄露;
系統B:設計比較差,有一些功能缺陷,性能也差一點點,但是采取了特別多的安全措施,能夠保障用戶的數據安全性;
相信幾乎所有人都會毫不猶豫選擇B系統,除非這是一個完全沒有用戶敏感數據、完全不需要安全保障的系統(那這樣的系統又有什么用?),所以只要我們把自己放在產品使用者的角度,而不是產品制造者的角度,就能很容易地理解和認可安全對于軟件系統來說是比功能更重要的一個因素,安全是軟件的靈魂。
那么對于很多已經深刻認識到安全重要性的團隊,為什么依然很難將安全理論落地呢?原因大多來自前面提到的第二點和第三點,一是從技術上認為安全是一個很難的領域,需要專業的安全人士;二是從流程上不知道該如何開展;從這兩個角度出發,“安全”需要巨大的投入,所以很多團隊望而卻步。那么安全真的這么難落地嗎? 接下來我會簡單介紹一些Web安全知識,然后通過我所在團隊的落地過程給大家一個答案。
如何讓安全在敏捷團隊落地
什么是Web安全?
所謂Web安全問題,就是攻擊者可以通過非正常的手段,獲得Web系統訪問權限,從而破壞網站行為,盜取甚至修改用戶數據的一系列問題。
原文轉自:http://www.infoq.com/cn/articles/let-safe-practices-land-in-the-agile-team