項目概述
1.1 文檔目的
本文檔爲xx安全團隊針對xx項目生命週期給出的安全評估系統方案,意義在於SDL使項目在設計,代碼開發,測試中與安全相關的漏洞減到最少和後續安全工作的進行。
1.2 覆蓋範圍
本文檔內容僅覆蓋項目生命週期安全控制的實現方式,不包括項目生命週期安全控制平臺實現後的具體運營。
1.3 術語定義
SDL:安全開發生命週期(SDL)即SecurityDevelopment Lifecycle,是安全軟件開發生命週期,是一套完整的,面向Web和APP開發廠商的安全工程方法。幫助軟件企業降低安全問些,提升軟件安全質量;
3 風險梳理
常規的項目開發流程,如下:
項目開發中存在的風險點,如下:
風險 |
風險描述 |
項目收集和分析,設計階段未經過安全需求評審 |
由於未經過安全需求評審,項目在設計初期採用舊框架、流程設計不合理,未做任何防護機制導致項目上線後被惡意攻擊者攻擊,刪除,資料或者代碼被盜等危害 |
項目編碼階段未按照代碼安全規範進行編寫 |
由於未按照代碼安全規範進行編寫,項目在開發中使用高危函數,並對輸入和輸出語句未作任何處理和檢測等導致項目上線後被惡意攻擊者攻擊,刪除,資料或者代碼被盜等危害 |
項目測試階段未經過安全測試直接發佈 |
由於未經過安全測試直接發佈,項目中一些設計不合理或者配置不合理的地方被惡意攻擊者攻擊;導致項目刪除,資料或者代碼被盜等危害 |
項目線上階段發佈後對一些關鍵位置,框架等不進行維護和更新 |
由於項目發佈後對一些關鍵位置,框架等不進行維護和更新,導致攻擊者利用最新的漏洞攻擊;導致項目刪除,資料或者代碼被盜等危害 |
4 安全需求
項目生命週期階段 |
安全需求 |
項目收集和分析,設計階段未經過安全需求評審 |
安全培訓,需求分析 |
項目編碼階段未按照代碼安全規範進行編寫 |
安全編碼規範, 代碼審計 |
項目測試階段未經過安全測試直接發佈 |
黑白盒測試 |
項目線上階段發佈後對一些關鍵位置,框架等不進行維護和更新 |
黑白盒測試檢查確認 應急響應,BUG跟蹤 |
5 安全控制
控制手段 |
描述 |
推廣安全編程意識 |
|
安全需求評審 |
如何對軟件產品的風險進行評估,建立基本的安全需求;提供安全方案設計及威脅建模 |
代碼安全審計 |
提供主流編程語言的安全編碼規範,安全函數庫以及代碼審計方法 |
安全測試 |
基於威脅建模的測試設計,Fuzzing測試,滲透測試 |
應急響應 |
建立漏洞管理體系 |
安全接口 |
提供安全API接口進行防護 |
安全工單 |
建立安全工單管理體系 |
6 安全評估系統實現方案
6.1整體設計
6.1.1 設計原則
安全評估系統設計核心原則:
l 攻擊面最小化
l 基本隱私
l 權限最小化
l 默認安全
l 縱深防禦
l 威脅建模
6.1.2 主要目標
安全評估系統主要目標:在項目開發中每個階段提供全方位的安全服務保證項目整體安全質量,同時在安全評估系統上可直觀、清晰的瞭解到每個項目的進度和安全狀況, 並進行安全動態跟蹤。
6.2 整體架構
6.2.1 系統架構
安全評估系統架構圖
系統採用五層架構設計:
一、展現層
Web前端:基於HTML/HTML5/Vue/CSS3開發web前端頁面,兼容主流瀏覽器。展現層和數據層完全分離,通過跨域實現前後端數據通信。
Restful接口:基於特定業務,採用Restful標準接口,對外提供數據服務。
二、通訊層
基於HTTP/HTTPS 兩種通信方式,實現前後端數據通信。
三、服務層
核心業務基於flask框架實現微服務化可以獨立部署、水平擴展、獨立訪問(或者有獨立的數據庫)的服務單元。
四、數據層
postgresql:存儲app安全掃描信息和結果信息。
mysql:存儲事務性數據,以及關聯性將強的數據。如,安全工單信息、項目安全流程信息等;
redis:做消息中間件,存儲任務隊列信息,任務結果信息。
五、執行層
主要對數據進行加工、處理,根據數據的內容執行各類事件或者任務。
6.2.2 業務架構
安全評估系統業務架構
系統業務依賴關係:
安全評估系統主要根據項目的工作流程進行設計,主要由安全評審,代碼安全審計,WEB掃描,漏洞管理,安全工單,報表等模塊構成;通過從需求階段到上線運營進行安全監管,讓項目每個環節的安全狀態都可以達到360度的可視化,並可以動態跟蹤。詳細描述見工作流程和實現方案。
6.3工作流程
安全評估系統整體工作流程
安全評估系統工作流程是基於項目開發週期的每個階段進行劃分, 每個階段存在對應的安全服務可便捷式的嵌入到流程中,從而保證安全貫穿於整個項目生命週期的每一個環節,消除上線前的安全問題,解決99%的高危漏洞。
6.4 實現方案
在安全評估系統設計之初已有代碼安全審計系統,web掃描系統和漏洞管理系統,所以只需要對代碼安全審計和web掃描系統稍微進行修改即可接入到安全評估系統。
整體的安全評估系統分階段進行實現,大致分爲以下九個階段:
第一階段:完成賬戶管理和安全評審模塊,測試
第二階段:接入代碼安全審計,完成代碼安全審計模塊,測試
第三階段:接入web掃描,完成安全測試模塊初期,測試
第四階段:接入漏洞管理,完成漏洞管理模塊,測試
第五階段:完成報告管理模塊,測試
第六階段:完成工單管理模塊,測試
第七階段:完成安全規範和安全API模塊,測試
第八階段:整體測試
第九階段:整體內部上線試運行,推廣
6.4.1 賬戶管理實現方案
Todo
6.4.2 安全評審實現方案
安全需求流程圖: todo
STRIDE威脅建模:todo
GDPR隱私保護:todo
6.4.2 代碼安全審計實現方案
Sonar掃描引擎工作流程圖
SonarQube執行代碼掃描主要以下幾個步驟:
1. 拉取服務器配置信息和規則信息
2. 對對應的代碼進行正則規則匹配分析
3. 上傳結果
其主要作用就是代碼質量管理和安全審計,用於管理源代碼的質量和安全,可以從七個維度檢測代碼質量通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質量管理與檢測
6.4.2 安全測試實現方案
Web掃描引擎工作流程圖
Web掃描引擎集成了WEB漏洞掃描,IP脆弱性掃描,弱口令爆破等功能。持續爲公司網絡資產提供安全評估狀態和監控,幫助減少漏洞和業務上的風險。
6.4.3 漏洞管理實現方案
Todo
6.4.4 賬戶管理實現方案
Todo
6.4.5 報告管理實現方案
Todo
6.4.6 安全工單實現方案
Todo
6.4.7 安全規範實現方案
Todo
6.4.8 安全API實現方案
Todo