然后在用戶故事的啟動階段,業務分析師、QA和開發人員會一起針對用戶故事模板中我們自己的TOP 10進行篩選,將和用戶故事相關的內容標識出來作為安全驗收標準。如果在故事分析階段,業務分析師已經遵循一些原則細化了安全驗收標準,在這個階段,也可以多個角色針對這些安全驗收標準進行探討,確保大家理解一致。
到了用戶故事的開發階段,通常開發人員都會按照驗收標準來編寫代碼和測試,基于我們已經有了足夠的安全驗收標準,相應地,開發人員也會編碼來實現這些安全條件并且添加相應的自動化測試保障,當然,除了滿足安全驗收標準之外,我們也會做一些靜態代碼的掃描和第三方依賴的掃描,雙重保障。
用戶故事的驗收階段非常重要,因為如果在這個階段發現缺陷可以快速修復,我們一般是QA、開發人員和業務分析師一起,逐個驗收我們之前制定的安全驗收標準。當然,除了簡單地從前端進行驗證,針對安全驗收我們需要借助一些工具(如Burp Suite),繞過前端修改請求,檢查是否后端接口也作了相應的防范,如果發現安全問題,會在這個階段及時修復并且增加相關的測試保障。
到了用戶故事的測試階段,QA會做跟安全相關的探索性測試,在這個階段,需要QA從一個全新的視角來做測試,之前我們的模式是從正常用戶的角度來測試功能,而針對安全的探索性測試則截然不同,我們要用攻擊者的角度來思考問題,嘗試各種看似不可能的手段,尋找安全漏洞。另外,在這個階段,我們也會借助一些自動掃描工具(比如ZAP),來檢測是否有一些通用的安全問題。
安全的演示階段比較有挑戰性,前面提到過,它不像功能需求那么可見,所以我們采用了一種全新的方式去展示,通常功能演示我們是給客戶展示用戶界面,如何使用系統等,而對于安全,我們嘗試了展示安全缺陷以及我們的缺陷分布分析。比如在這一個月里,我們發現了六個安全問題,其中兩個是通過ZAP掃描出來的共通的安全問題,另外四個是和業務強相關的安全問題(比如賬戶A可以通過特殊手段修改其本來沒有權限的數據,屬于我們自己的TOP 10的Authentication那一類)。
回顧整個過程,其實我們在用戶故事的每個階段都增加了和安全相關的實踐,并且讓團隊所有人員都參與了進去,將安全融入到日常的工作中,不斷改進,持續關注,而這些正是BSI所傳達的理念。
客戶看到我們的安全成果展示后非常滿意,進而在我們整個團隊開展了這樣的安全實踐。
在維持這樣的安全模式幾個發布周期之后,我驚喜地發現我們的開發人員開始有了安全的意識,比如前不久我們有一個用戶故事需要實現一個郵件模板,系統要求能夠接受用戶定制化的html,功能實現非常簡單,可是開發人員一籌莫展,接到用戶故事后馬上找到我,探討如何讓我們的系統允許接受html后還可以避免script攻擊,這讓我深刻感受到,BSI(Build Security in our DNA)這個理念的精確含義,我們不是為了讓大家遵循實踐而去實踐,而是讓每個人都有安全的意識,每當我們接觸到一個新的功能,馬上會想到可能有哪些安全問題,而不是急于實現功能,長此以往,安全就真的進入了團隊的DNA。
原文轉自:http://www.infoq.com/cn/articles/let-safe-practices-land-in-the-agile-team