iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 28
0
Security

資訊系統安全與 CISSP 的簡單應用系列 第 28

[Day 28] 軟體開發安全 (Secure Software Development Life Cycle)

  • 分享至 

  • xImage
  •  

今天我們要聚焦來談「安全軟體開發生命週期」,原因是,系統安全是奠基在系統開發的每一個環節上,包括需求定義、設計、開發、測試、部署等階段。特別地,如果在將安全考慮因素從「設計」階段移除,所造成之安全成本上升將比從「部署」階段移除還大很多,這反映了於「設計」階段考慮安全因素的重要性。

如何導入與建造? (Building Blocks)


很多人夢寐以求安總下面這個程序,讓我來告訴您如何從無到有來建造安全軟體開發生命週期。「從零到一」是最困難的,因為「導入」新事物是一門藝術、一項工程,也就是說它存在「流程」及優先順序。先容我說句話,一個已經發布的「軟體開發生命週期」,是一切的基礎,所以如果您現在還沒有這個東西,請先回去發布好再來吧。

  1. (★★★) 已發布的軟體開發生命週期 (Published SDLC)
  2. (★★) 非功能性之安全需求管理 (Non Functional Requirements)
  3. (★★) 安全自覺教育訓練 (Security Awareness Training)
  4. (★★) 安全性風險管理 (Security Risk Management)
  5. (★★) 卓越設計品保中心 (Center of Excellence)
  6. (★) 安全編碼檢查清單 (Secure Coding checklist)
  7. (★) 靜態分析 (Static Code Analysis)
  8. (★) 動態分析 (Dynamic Code Analysis)

安全軟體開發生命週期 (SSDLC)


在安全軟體開發生命週期的每個階段,各有一道安全品質把關的大門,務必確實執行,茲分別揭示如下:

  1. 需求定義 (Requirement Definition):
    安全需求審查、風險分析與控制。
  2. 設計 (Design):
    安全設計審查。
  3. 開發 (Development):
    安全編碼審查。
  4. 測試 (Testing):
    靜態分析與動態分析。
  5. 部署 (Deployment):
    設計品質保證 (DQA)、滲透測試。

安全需求 (Security Requirements)


安全性需求就本質言,安總認為大可以看為「非功能性需求 (NFR)」,小可以看為「使用案例 (Use Case or User Story)」。最重要的,它可以發揮容器的功能,當安全性需求被建模成一個個構件後,我們就能啟動追蹤 (Traceability),追蹤它有沒有被設計、被實作、被驗證、被變更,或被風險管控。

一個有效的非功能性需求,除了記錄需求內容,還會說明為什麼這項需求是如此重要。以下舉幾個安全性需求,作為啟發之參考:

  • 輸入驗證相關 (Input validation story)
  • 審計追蹤相關 (Logging story)
  • 驗證相關 (Authentication story)
  • 授權相關 (Authorisation)
  • 技術風險相關 (Technical risks, e.g., XSS, SQLI)
  • 使用案例建模 (Use case modeling)
  • 內規 (Internal audit and Group Standards, e.g., password lengths, security schemes)
  • 安規 (Legal and regulatory security requirements)
  • 安全架構 (Security architecture: how do the application components fit together?)

一些營運測試想法


有一些營運測試想法我覺得不錯,在資訊系統的生命週期中必然存在測試與維運,所以提在這裡給各位參考:

  1. 針對安全性的單元測試 (Unit Test for Security Features)。
  2. 靜態分析可以綁在自動建置 (Auto Build) 的流程中。
  3. 動態測試可以做到 24/7 的監控,故適合綁在上線後的事件管理流程 (運行保證、弱點測試、系統行為監控、事件審計等,皆可在此階段進行)。
  4. 營運中,監控與調校「所有的」事情,可利用類似 Splunk 等 SIEM 工具 (Security Information and Event Management)。

老闆有令,架構大改,三十日完成。所以這個月 15 天內要完成軟體 Re-design,下個月再花 15 天修改新客戶需求和迴歸測試,然後飛機起飛 (到現場測試)。從沒有一份工作要求成長性如此之強,翻看 700 頁的軟體設計原則,挑出能應用的部分。能源回收軟體商品化,經過瘋狂投入和努力後,將看到成功的希望之光。
Clean Code
《無瑕的程式碼 敏捷完整篇:物件導向原則、設計模式與 C# 實踐》
《Agile principles, patterns, and practices in C#》


上一篇
[Day 27] 安全營運 (Computer Crime and Ethics)
下一篇
[Day 29] 軟體開發安全 (Database Security Technique)
系列文
資訊系統安全與 CISSP 的簡單應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言