建立安全可靠的軟體開發流程
eCloudValley: 架構師淺談 建立安全可靠的軟體開發流程 安全軟體開發生命週期(SSDLC)介紹 安全軟體開發生命週期(SSDLC)是一個將安全性考量整合到軟體開發過程中的方法,旨在從一開始就預防和減少安全漏洞。這個方法不僅能提升軟體的安全性,還能減少後期修復安全漏洞的成本。SSDLC 通常包含以下幾個主要階段:需求分析、設計、實作、測試、部署和維護。每個階段都有特定的安全實踐和工具來保障軟體的安全性。 需求分析階段 目標 確保所有安全需求都得到充分的識別和記錄。 實作方式 威脅建模(Threat Modeling) 目的:識別系統中可能存在的威脅,並確定如何應對這些威脅。 AWS 原生服務:AWS 威脅建模工具(AWS Threat Modeling)可以幫助識別和分析威脅,並提供相應的緩解措施。 安全需求規範 目的:確保安全需求被納入需求規範中,涵蓋認證、授權、數據保護等方面。 最佳實踐:參考 OWASP Application Security Verification Standard(ASVS)來確定各種安全需求。 設計階段 目標 在設計階段建構安全架構,選擇合適的安全控制措施。 實作方式 安全架構設計 目的:應用安全設計模式和最佳實踐,確保系統設計能抵禦已知威脅。 AWS 原生服務:使用 AWS Well-Architected Framework 中的安全支柱(Security Pillar)來設計安全架構。 設計審查 目的:進行安全設計審查,確保設計符合安全需求。 AWS 原生服務: AWS Well-Architected Tool 可以幫助審查設計,確保符合安全最佳實踐。 實作階段 目標 編寫安全的程式碼,並進行持續的安全檢查。 實作方式 安全程式碼編寫 目的:遵循安全編碼標準和指南,減少程式碼中的安全漏洞。 資源:參考 OWASP 安全編碼指南,確保程式碼符合安全標準。 靜態應用安全測試(SAST) 目的:使用靜態分析工具檢查程式碼中的安全漏洞。 AWS 原生服務:Amazon CodeGuru Reviewer 可以自動審查程式碼並提出改進建議。 依賴性管理 目的:確保使用安全的第三方庫和框架,避免引入已知漏洞。 AWS 原生服務:AWS CodeArtifact 可以管理和存儲軟體包,確保依賴庫的安全性。 在這個階段也建議可以導入版本控制系統 (Git), Git 使用 SHA-1 來標識每個提交、文件和目錄。這意味著任何變更皆可以被檢測到,這樣的設計確保了數據的完整性,防止了未經授權的修改,且一旦提交被創建並推送到儲存庫中,其歷史記錄是不可變的,這意味著開發者無法隱瞞或篡改他們之前的變更,這提供了一個清晰的審計軌跡,使得任何變更都可以追溯到具體的提交和責任人,若企業所架設的網站疑似遭到攻擊者上傳木馬或後門,開發者可以立即使用最乾淨的版本進行快速重新部署。 ...