軟體測試實務:業界成功案例與高效實踐 II《Chapter 7

安全軟體開發實踐

郭信志

趨勢科技

" 一個好的程式開發工程師在跨越單向道時,永遠會慎查兩邊的來車。

A good programmer is someone who always looks both ways before crossing a one-way street. "

- By Doug Linder

在這硬體性能速度不斷提升,高性能計算、高速網路、海量數據充斥的時代中,團隊合作的速度成為軟體開發迭代最弱的瓶頸,隨著企業貫徹「敏捷」(Agile)思維和行動,來打破早期角色責任分明,從專案經理、需求分析師、程式開發人員到測試人員間分工縝密但緩慢的工作流程。

敏捷(Agile)思維要求團隊不同的角色,需具備多重能力與角色,促使了所謂「測試左移」及「人人都需具備一定的程式能力」來加速流程,但這改善卻漏掉了IT部署團隊,隨著DevOps的推廣,聚焦在改善軟體開發團隊和IT維運人員溝通合作,藉由「自動化交付流程」(CD)、「任務共享」(Shared Ownership)來讓軟體的發布更頻繁、快速和可靠

但這演化流程並未就此打住,在縮減流程,讓軟體達成快速迭代部署後,隨著產業幾次重大的資安事件,上億的客戶資料流失,大家才發現「任務共享」(Shared Ownership)的範疇,不能只包含產品功能與維運,應該要進一步涵蓋「安全」(Security),讓安全成為開發團隊、IT 團隊、和安全專家,必須共同承擔的責任,進而演化為「責任共享」(Shared Responsibility )。

當資安責任只是落在團隊中幾位資安專家或資產所有人時,DevSecOps 的目標永遠不能達成,因為當程式撰寫人員因缺乏訓練,持續導入漏洞、IT 維運人員持續不當地分享帳密,或專案經理未將資安工作列入時程,相關責任人未參與改善流程。DevSecOps 需要團隊中,開發人員、IT 團隊、安全專家以及參與軟體交付的所有人員,都必須認同與遵守,所以自動化工具與流程、持續訓練、與持續稽核成為DevSecOps 成功關鍵。

落實DevSecOps 的做法,是將資安的考量,落實到完整的軟體開發生命週期各個階段,並整合到CI/CD 開發管道中,如下圖。以後章節會對安全軟體開發流程所需關注的事項做說明,但請注意這些關注事項,會隨著科技發展而不斷地調整演進。

本章介紹十五個常見安全開發實踐原則,提供給大家做參考。

章節大綱

CH7 安全軟體開發實踐

7.1 DevSecOps簡介

7.2 資安認知訓練(Security Awareness Training)

7.3 確保資訊安全的工作環境(Secure Working Environment)

7.4 威脅建模分析(Treat Modeling)

7.5 程式碼與知識產權的資安管控(Source Code Control)

7.6 保護客戶個人資料(Protect Personal and Customer Data Security)

7.7 開源碼與第三方套件的資安管控(Monitor 3rd party Vulnerabilities)

7.8 靜態程式碼安全分析(Static Code Scan)

7.9 編譯環境的資安防護(Protect Build / CICD Servers)

7.10 使用安全的程式語言及啟動編譯資安設定(Use Memory-Safe Programming Languages and Secure Build Conguration)

7.11 動態程式碼安全分析(Dynamic Application Security Testing)

7.12 安全性測試(Security Testing)

7.13 機密掃描(Secrets Scan)

7.14 不同工作環境的資安分離(Separate Development & Testing Environment from Production)

7.15 數位簽章(Digital Signatures)

7.16 公共雲的資安防護(Cloud Security Policy)

7.17 結語

內容預覽

作者簡介

郭信志

RD Security Team 趨勢科技

10年洋西、15年洋東的資訊業老兵。

不論緩行疾行,重要的是持續前行。

作者所屬機構

專章引用

郭信志,〈安全軟體開發實踐〉。《軟體測試實務:業界成功案例與高效實踐 II》,博碩文化,2023年5月,ISBN 978-626-333-486-1。