iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Security

資安這條路:系統化學習網站安全與網站滲透測試系列 第 26

資安這條路:Day 26 SSDLC 安全開發軟體生命週期─概述、需求階段

  • 分享至 

  • xImage
  •  

前言

本日更新將專案中的首頁更新成 API 列表,可透過 github 更新。
程式碼:
https://github.com/fei3363/ithelp_web_security_2024/commit/0e3aee1505f643cb085aa4d01403830e9fb4ee76
漏洞網址:http://nodelab.feifei.tw/

image

以下將介紹安全軟體開發生命週期,本篇著重於"需求階段"且參考專案管理相關文章,相關連結可以看文章最下方。

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

安全軟體開發生命週期(SSDLC) 將安全原則和實踐整合進傳統的 SDLC 中,目標是確保從需求階段開始就將安全納入考量,並貫穿整個開發週期。

軟體開發生命週期 (SDLC)

傳統軟體開發生命週期(SDLC) 是用於描述資訊系統從需求收集到最後上線部署維運的整個過程。SDLC 適用於軟體、硬體或軟硬體結合的系統。

資通系統防護基準修正提到的階段

根據資安管理法有提到的附表十─資通系統防護基準修正規定資安管理法─附表十資通系統防護基準修正規定

可以分成幾個階段:

  1. 委外階段:將資安需求納入委外契約
  2. 需求階段:確認系統安全需求
  3. 設計階段:進行風險分析和評估
  4. 開發階段:實施必要的安全控制措施
  5. 測試階段:執行安全檢測
  6. 部署與維運階段:進行版本控制和變更管理

有些規範可能會把部署跟維護分開。

OWASP SAMM 與軟體生命週期

透過在軟體生命週期的每個階段實施 OWASP SAMM 模型中的安全實務,組織可以建立一個更安全、更可靠的軟體開發流程,並降低安全風險。

image

治理階段

  • 此階段側重於組織如何管理整體軟體開發行為,包括影響跨部門開發團隊以及組織層級業務流程的因素。
  • 安全實務
    • 策略與指標: 建立整體安全計劃、定義目標、風險承受能力和衡量指標
    • 政策與合規性: 確保遵循內部和外部標準和法規
    • 教育與指導: 提高組織內部人員的安全意識和知識

設計階段

  • 此階段側重於組織如何定義目標並在開發專案中建立軟體,包括需求收集、高階架構規範和詳細設計
  • 安全實務
    • 威脅評估: 識別和了解基於軟體功能和執行環境特性的專案級風險
    • 安全需求: 為軟體和軟體供應商定義適當的安全需求
    • 安全架構: 管理與軟體解決方案的組件和技術相關的安全風險

實作階段

  • 此階段側重於組織如何建置和部署軟體組件及其相關缺陷
  • 安全實務
    • 安全建置: 建立一致且可重複的建置流程,並確保應用程式依賴項的安全性
    • 安全部署: 提高軟體部署到生產環境和相關機密的安全性
    • 缺陷管理: 管理軟體中的安全缺陷及其相關指標

驗證階段

  • 此階段側重於組織如何檢查和測試在軟體開發過程中產生的工件,包括品質保證工作(如測試)以及其他審查和評估行為
  • 安全實務
    • 架構評估: 驗證軟體和基礎架構架構的安全性和合規性
    • 需求驅動測試: 使用基於需求(使用者故事)的正面(控制驗證)和負面(誤用/濫用測試)安全測試
    • 安全測試: 透過自動化檢測和解決基本安全問題,讓手動測試可以專注於更複雜的攻擊向量

營運階段

  • 此階段側重於確保在應用程式的整個生命週期中,維持機密性、完整性和可用性所需的行為
  • 安全實務
    • 事件管理: 改善組織對安全事件的檢測和響應能力
    • 環境管理: 改善和維護組織應用程式運行環境的安全性
    • 營運管理: 在整個產品生命週期中維護安全性所需的營運支援行為

SDLC 與 SSDLC 的差異

名詞 SDLC SSDLC
定義 軟體開發生命週期,是一個用於規劃、建立、測試和部署軟體系統的框架。 安全軟體開發生命週期,是在 SDLC 的每個階段都整合了安全考量的軟體開發流程。
目標 以有效率的方式交付高品質的軟體產品。 開發兼顧功能性和安全性需求的軟體產品。
安全 可能將安全視為一個獨立的階段或測試行為,在開發後期才進行。 將安全融入到每個階段,從一開始就考慮安全問題。
測試 主要關注功能測試,確保軟體按預期運作。 包含安全測試,例如威脅建模、程式碼審查和滲透測試,以識別和減輕安全風險。
文件 可能包含與安全相關的政策和標準,但可能不夠全面。 強調安全文件的建立和維護,例如安全需求、設計文件和測試報告。
團隊 開發團隊通常負責安全相關的任務。 可能需要資安專家參與,例如安全架構師和滲透測試人員。
成本 在開發後期發現和修復安全漏洞的成本可能很高。 透過在早期階段解決安全問題,可以降低整體開發成本。

重點說明:

  • SDLC 是一個通用的軟體開發框架,而 SSDLC 則是專注於安全的 SDLC 的延伸。
  • SSDLC 旨在將安全考量融入到軟體開發的每個階段,從而建立更安全的軟體產品。
  • 儘管 SSDLC 可能需要額外的時間和資源,但從長遠來看,它可以透過降低安全漏洞的風險來節省成本。

SSDLC 階段思考

需求階段

image

如何將資安融入軟體開發流程

一、 找對人

  1. 找對人:識別關鍵利害關係人,了解資訊安全需求,包含使用者
  • 在軟體開發專案開始前,識別所有關鍵利害關係人
  • 利害關係人
    • 資安專家: 負責提供資安專業知識和指導開發流程
    • 開發人員: 負責編寫程式碼並實施安全措施
    • 管理階層: 負責制定安全策略、分配資源和監督專案進度
    • 最終使用者: 軟體的使用者,他們的資安需求和期望必須被納入考量
  • 了解每位利害關係人的資訊安全需求,包含他們對軟體安全性的期望以及他們將如何與軟體互動
    • 例如
      • 了解使用者如何驗證身份
      • 資料如何加密和儲存
      • 系統如何防範常見的攻擊
  • 可參考 專案管理知識體指南專案範疇管理-蒐集需求
    • 利害關係人登錄表 Stakeholder Register
    • 利害關係人管理計畫書 Stakeholder Management Plan

SSDLC 專案利害關係人登錄表

編號 姓名 職稱 單位 內部/外部 專案角色 責任 權限級別 主要關注點 溝通頻率 聯絡方式 安全需求 期望 影響力 態度 備註
S001 王大明 專案經理 資訊部 內部 專案管理者 整體專案管理、資源分配、進度追蹤 專案進度、風險管理、預算控制 每日 wang.dm@example.com 確保專案符合資安法規 如期完成專案,符合預算 支持 每週五下午進行專案進度會議
S002 李小芬 資安架構師 資安部 內部 安全顧問 制定安全策略、審查安全設計 系統安全性、合規性 每週 lee.sf@example.com 實施最新的 OWASP Top 10 防護措施 建立堅固的安全架構 支持 需要定期進行安全培訓
S003 張明華 技術主管 研發部 內部 開發團隊負責人 技術決策、程式碼審查、任務分配 中高 程式碼品質、技術實現、開發效率 每日 chang.mh@example.com 確保程式碼中不包含敏感資訊 提高開發效率和程式碼品質 支持 負責每週的程式碼審查會議
S004 陳小玉 資料庫管理師 資料部 內部 資料庫專家 資料庫設計、最佳化和安全 中高 資料完整性、效能、資料安全 每週 chen.sy@example.com 實施資料加密和存取控制 確保資料庫高效能和安全性 中立 需要定期進行資料庫安全稽核
S005 林大方 QA 經理 品保部 內部 測試負責人 功能測試、安全測試 軟體品質、漏洞發現 每日 lin.df@example.com 執行全面的安全測試計畫 確保軟體無重大漏洞 支持 每兩週提交一次測試報告
S006 黃小琳 DevOps 工程師 維運部 內部 維運專家 配置開發環境、自動化部署 中高 CI/CD、環境安全、監控 每週 huang.sl@example.com 實施安全的 CI/CD 流程 建立穩定且安全的部署流程 支持 負責維護部署腳本和監控系統
S007 吳大維 法務經理 法務部 內部 法律顧問 確保合規性、審查法律風險 資料保護法規、智慧財產權 月度 wu.dw@example.com 確保系統符合個資法要求 降低法律風險 中立 需要在重要決策前諮詢
S008 趙美美 客戶代表 客戶公司 外部 使用者代表 提供需求、回饋 功能需求、使用者體驗 雙週 chao.mm@client.com 保護客戶資料隱私 系統易用性高,回應速度快 支持 每月進行一次需求確認會議
S009 謝大業 執行長 管理主管 內部 贊助者 戰略決策、資源審批 最高 ROI、戰略對齊、風險管理 月度 hsieh.dy@example.com 確保整體系統安全性 提升公司競爭力,符合長期策略 支持 需要每季度彙報專案進度

利害關係人登錄表欄位說明

  1. 編號: 利害關係人的唯一識別碼,用於快速引用和追蹤
  2. 姓名: 利害關係人的全名
  3. 職稱: 利害關係人在其組織中的正式職位名稱
  4. 單位: 利害關係人所屬的部門或組織名稱
  5. 內部/外部: 標示利害關係人是組織內部成員還是外部相關方
  6. 專案角色: 描述利害關係人在專案中扮演的具體角色
  7. 責任: 概述利害關係人在專案中的主要職責和任務
  8. 權限級別: 指明利害關係人在專案決策中的權限程度(如高、中、低)
  9. 主要關注點: 列出利害關係人最關心的專案方面或議題
  10. 溝通頻率: 指明與該利害關係人進行正式溝通的建議頻率
  11. 聯絡方式: 提供聯繫利害關係人的首選方式(如電子郵件、電話)
  12. 安全需求: 描述利害關係人對專案安全性的特定要求或期望
  13. 期望: 概述利害關係人對專案成果的整體期望
  14. 影響力: 評估利害關係人對專案決策和結果的影響程度(高、中、低)
  15. 態度: 表明利害關係人對專案的總體態度(如支持、中立、反對)
  16. 備註: 記錄任何其他相關資訊,如特殊考慮事項或溝通歷史

二、 建團隊

  1. 建團隊:建立開發團隊,每個成員都有明確職責,尤其資安專家
    • 建立一個多元化的團隊
      • 包含具有不同技能和專業知識的成員
      • 例如開發、測試、安全以及營運
    • 為每位團隊成員分配明確的職責
      • 以確保每個人都了解自己的角色和責任
    • 指派一位資安專家到團隊中
      • 可提出的專業知識並指導開發流程
      • 協助制定安全需求和政策
      • 審查程式碼以找出安全漏洞
      • 進行安全測試,例如滲透測試
      • 提供安全培訓給團隊成員
      • 監控系統安全事件並做出回應
    • 若沒有資安相關人員
      • 建議導入資訊安全開發專業課程
        • 常見的軟體安全漏洞
        • 安全的程式碼撰寫實務
        • 安全測試技術
        • 資訊安全管理
      • 讓團隊成員了解資訊安全概念
      • 培養安全開發的意識和技能

資安相關名詞

  1. 資訊安全:保護資訊及資訊系統免受未經授權的存取、使用、揭露、中斷、修改或破壞,以確保機密性、完整性和可用性
  2. 機密性(Confidentiality):確保資訊不被未經授權的個人、實體或程式存取或揭露的特性
  3. 完整性(Integrity):維護資料或資訊的準確性和完整性,確保資料在傳輸、儲存或處理過程中不被未經授權的方式更改
  4. 可用性(Availability):確保經授權的使用者能夠在需要時存取和使用資訊和資源的特性
  5. Bug:軟體程式中的錯誤、缺陷或故障,可能導致系統產生非預期的結果或行為
  6. 漏洞:系統、應用程式或服務中的弱點,可能被攻擊者利用來危害系統的安全性。漏洞通常由 Bug 引起,可能影響系統的機密性、完整性或可用性
  7. 已知漏洞資料庫(CVE, Common Vulnerabilities and Exposures):一個公開的漏洞資料庫,用於識別和分類已知的資訊安全漏洞
  8. 常見弱點列舉(CWE, Common Weakness Enumeration):一個社群開發的常見軟體和硬體安全弱點的分類和描述列表
  9. 風險評估:識別、分析和評估可能影響資訊系統安全的潛在風險和威脅的過程
  10. 滲透測試:一種評估資訊系統安全性的方法,透過模擬真實的攻擊來發現系統中的漏洞
  11. 資安事件:單一或一系列的資訊安全事件,可能危害業務運營和資訊安全
  12. 資安治理:確保有效實施和管理資訊安全控制措施的框架,包括政策、流程和指南
  13. 身分認證:驗證使用者或系統身分的過程,通常透過使用者名稱和密碼、生物特徵或其他方法來完成
  14. 存取控制:管理和規範對資源的存取權限,確保只有授權的使用者或系統可以存取特定資源
  15. 加密:將資料轉換為密文的過程,使未經授權的人無法理解其內容,以保護資料的機密性
  16. 資安稽核:系統性評估組織的資訊系統和資安政策是否符合既定標準和法規要求的過程
  17. 社交工程:透過心理操縱來誘導人們披露機密資訊或執行特定動作的攻擊技術
  18. 零日攻擊:利用軟體中尚未被發現或修復的漏洞進行的攻擊
  19. 防火牆:網路安全系統,用於監控和控制進出網路的流量,基於預定的安全規則
  20. 入侵偵測系統(IDS):用於監控網路或系統中可疑活動並發出警報的安全設備或軟體

概念參考

  1. Bug 和漏洞的區別: Bug 是程式碼中的錯誤,而漏洞是可以被攻擊者利用的弱點。漏洞通常是由 Bug 引起的,但並非所有 Bug 都是漏洞。
  2. CVE 和 CWE 的用途: CVE 資料庫可以用來追蹤已知的漏洞,而 CWE 列表可以用來分類和描述常見的軟體弱點。開發人員可以使用這些資源來了解潛在的安全風險,並採取措施來避免這些風險。
  3. 資訊安全的三個核心要素: 機密性、完整性和可用性是資訊安全的三個核心要素。任何安全措施都應該旨在保護這三個要素。

三、 找方法

  1. 找方法:選擇適合專案開發方法,確保方法能有效整合安全考量

    • 應考慮專案的特定需求和限制,例如專案規模、時間、預算和安全需求
    • 常見的開發方法包括
      • 瀑布開發:一種線性的開發方法,每個階段依次進行。這種方法適合需求明確且穩定的專案
      • 敏捷開發:一種迭代的開發方法,強調靈活性和快速交付。這種方法適合需求可能變動的專案
      • 統一軟體開發過程 (RUP):一種迭代的開發方法,強調架構和文件。這種方法適合於大型且複雜的專案

參考規範

  • OWASP SAMM:一個有效的且可衡量的軟體安全保證方法,適用於各種組織。 它支援完整的軟體生命週期,並且與技術和流程無關。 SAMM 基於 15 種安全實務,分為 5 個業務功能,每個實務都包含一組活動,結構化為 3 個成熟度級別。
  • OWASP Top 10:列出了最常見的 Web 應用程式安全風險。
  • ISO/IEC 27002:提供資訊安全管理的實務守則。
  • WSTG:一個全面的 Web 應用程式安全測試指南,涵蓋了各種安全測試方法和技術。 它提供了一個測試框架,可以幫助組織建立自己的測試程式或評估其他人的測試流程。
    • WSTG 建議在 SDLC 的每個階段都進行安全測試。
    • WSTG 提供了各種安全測試技術的詳細資訊,包括資訊收集、配置和部署管理測試、身分管理測試、驗證測試、授權測試、工作階段管理測試、輸入驗證測試、錯誤處理測試、弱加密測試、商業邏輯測試和用戶端測試。

四、 問問題

  1. 問問題:需求訪談融入資訊安全問題,深入了解潛在安全風險和需求
    • 在需求訪談階段,應納入資訊安全問題,以確定軟體的安全需求
    • 提出以下問題,以了解潛在的安全風險和需求
      • 「哪些資料需要保護?」
      • 「有哪些潛在的威脅?」
      • 「如何減輕這些威脅?」
    • 確保需求清晰且明確,例如,使用者是否需要註冊或透過身份驗證才能訪問特定內容?

參考問題清單

基於資安管理法有提到的附表十資通系統防護基準修正規定資安管理法─附表十資通系統防護基準修正規定,整理以下的問題清單:

  1. 系統目的與範圍
    • 為什麼要開發這個系統?主要目的是什麼?
    • 系統預期要解決哪些問題或滿足哪些需求?
    • 系統的預期使用者和利害關係人有哪些?
  2. 資料安全需求
    • 系統會處理哪些類型的資料?有哪些是敏感或機密資料?
    • 這些資料需要什麼樣的保護措施?
    • 資料的存取權限應如何控管?
    • 是否需要資料加密?哪些資料需要加密?
  3. 使用者管理與存取控制
    • 系統需要哪些使用者角色?每個角色的權限為何?
    • 如何進行使用者身分驗證?是否需要多因素認證?
    • 密碼政策應如何制定(複雜度、有效期等)?
    • 是否需要遠端存取?如何確保遠端存取的安全性?
  4. 系統監控與日誌
    • 需要記錄哪些系統事件與使用者活動?
    • 日誌應保留多久?如何保護日誌資料?
    • 是否需要即時監控與警示機制?
  5. 系統可用性與營運持續
    • 系統的可用性要求為何(例如99.9%)?
    • 容許的系統中斷時間為何?
    • 是否需要備援機制?如何進行備份與還原?
  6. 安全功能需求
    • 是否需要特定的安全功能(如加密、存取控制、入侵偵測等)?
    • 對於系統完整性保護有什麼要求?
  7. 法規與合規性要求
    • 系統是否需要符合特定的法規要求?
    • 是否需要進行安全性驗證或認證?
  8. 威脅與風險評估
    • 系統可能面臨哪些安全威脅?
    • 如何降低這些威脅所帶來的風險?
  9. 開發安全
    • 在開發過程中要遵循哪些安全規範?
    • 是否需要進行安全性測試(如滲透測試、弱點掃描等)?
  10. 維運與事件處理
    • 如何處理安全性事件?
    • 系統維護與更新的流程為何?

五、 記清楚

  1. 記清楚:詳細記錄所有資訊安全需求和相關細節,確保不遺漏資訊
  • 建立一個安全需求框架,以協助專案引發適當的資訊安全需求。
  • 使用結構化的方法來記錄安全需求,例如使用範本或工具。

可參考 【閒聊】嘗試用客戶需求表、需求追溯表來取代系統需求規格_SRS撰寫

這篇文章有提到幾個方法

  1. 問題背景
    • 小型開發團隊(4-5人)面臨需求文件製作的挑戰
    • 需平衡文件精簡度和專案品質
    • 專案需求數在100以內
  2. 解決方案
    • 改良需求追溯矩陣(RTM)
    • 使用Excel表格進行分類管理
  3. 文件結構(5個頁籤)
    1. 客戶需求表
    2. 系統分析(SRS)
    3. 專案規格設計(SDS)
    4. 專案估算工時
    5. 專案報價單
  4. 各頁籤重點
    • 客戶需求表: 列出需求源頭,給予編號(如RM-01)
    • 系統分析: 關聯客戶需求,可新增子需求(如RM-01-01)
    • 專案規格設計: 詳細描述技術實現方式
    • 專案估算工時: 根據CMMI或傳統方法估算
    • 專案報價單: 根據工時表製作正式報價單
  5. 實施效果
    • 2-3小時內完成56-40個需求的文件
    • 資淺分析師可能需要4小時內完成
  6. 建議
    • 使用Google WorkSpace進行管理
    • 實現基本的構型管理(CM)
  7. 注意事項
    • 不要過於執著於特定方法論
    • 選擇適合公司文化的方法
    • 進行落差分析以確定公司需求
    • 可考慮混合使用不同方法

參考這篇文章整合資安相關需求的範例如下:

客戶需求表

需求編號 需求描述 來源
RM-01 實現安全的使用者認證系統 客戶會議紀錄
RM-02 加密敏感資料傳輸 內部安全評估
RM-03 實施跨網站指令碼(XSS)防護 客戶安全要求
RM-04 防止 SQL injection 攻擊 內部安全評估
RM-05 實現安全的連線管理 客戶會議紀錄

系統分析 (SRS)

需求編號 系統需求描述 關聯客戶需求
RM-01-01 實現多因素驗證 RM-01
RM-01-02 密碼原則:至少12字元,包含大小寫字母、數字和特殊字元 RM-01
RM-02-01 使用HTTPS協定加密所有資料傳輸 RM-02
RM-03-01 實施內容安全政策(CSP) RM-03
RM-03-02 對使用者輸入進行嚴格驗證和轉義 RM-03
RM-04-01 使用參數化查詢防止 SQL injection 攻擊 RM-04
RM-05-01 實現安全的連線ID生成和管理 RM-05
RM-05-02 實現連線逾時機制 RM-05

專案規格設計 (SDS)

需求編號 模組/功能描述 技術實現
RM-01-01 多因素驗證模組 使用Passport.js實現多種驗證策略
RM-01-02 密碼驗證模組 使用zxcvbn函式庫進行密碼強度檢查
RM-02-01 HTTPS設定 使用Let's Encrypt取得SSL憑證,設定Express.js強制HTTPS
RM-03-01 CSP中介軟體 使用helmet函式庫設定內容安全政策
RM-03-02 輸入驗證中介軟體 使用express-validator進行輸入驗證
RM-04-01 資料庫查詢層 使用Sequelize ORM實現參數化查詢
RM-05-01 連線管理模組 使用express-session配合Redis儲存連線資料
RM-05-02 連線逾時處理 在express-session中設定rolling: true和maxAge選項

專案估算工時

需求編號 估算工時(小時) 備註
RM-01-01 16 包括設計和實現多因素驗證流程
RM-01-02 8 實現和測試密碼原則
RM-02-01 4 設定HTTPS和測試
RM-03-01 4 設定和測試CSP
RM-03-02 12 實現全面的輸入驗證系統
RM-04-01 8 重構資料庫存取層,實現參數化查詢
RM-05-01 12 實現安全的連線管理系統
RM-05-02 4 設定和測試連線逾時機制

總估算工時:68小時

需求追蹤矩陣 (RTM)

客戶需求 系統需求 技術實現 估算工時
RM-01 RM-01-01, RM-01-02 Passport.js, zxcvbn 24
RM-02 RM-02-01 Let's Encrypt, Express.js HTTPS 4
RM-03 RM-03-01, RM-03-02 helmet, express-validator 16
RM-04 RM-04-01 Sequelize ORM 8
RM-05 RM-05-01, RM-05-02 express-session, Redis 16

六、 要管理

  1. 要管理:實施嚴格的變更管理流程,需求發生變化需考量資訊安全
    • 確保在變更管理流程中考慮到資訊安全,以便評估任何變更對軟體安全性的潛在影響
    • 在實施變更之前,應審查和更新安全需求

舉例

項目 安全基準 變更請求 變更理由 安全影響評估 風險評估 緩解措施 核准狀態 核准人 實施日期 回復計畫 後續審查日期
密碼政策 最少8字元,包含大小寫和數字 增加到12字元,必須包含特殊字元 提高密碼強度,應對新的安全威脅 提高帳號安全性,可能增加使用者不便 中等:使用者可能選擇更容易記住但不安全的密碼 提供密碼管理工具,進行使用者教育 已核准 資安長 2024-03-15 如出現大量登入失敗,回復到原政策 2024-04-15
資料加密 AES-128加密所有敏感資料 升級到AES-256 符合新產業標準 加強資料保護,可能影響系統效能 低:升級過程中可能出現資料不一致 進行全面測試,準備資料移轉計畫 待審核 - - 保留舊加密方法30天,以便快速回復 -
存取控制 以角色為基礎的存取控制(RBAC) 實施細粒度的存取控制(ABAC) 提供更靈活和精確的權限管理 加強存取控制,但增加管理複雜性 高:可能導致權限配置錯誤 進行詳細的權限對應和測試 已拒絕 資安長 - - -
網路防火牆 僅開放必要連接埠 增加深度封包檢測(DPI)功能 加強對複雜攻擊的防禦能力 提高網路安全性,可能影響網路效能 中等:可能誤判合法流量 進行全面的基準測試和最佳化 已核准 資訊長 2024-04-01 保留舊設定備份,如效能下降嚴重可快速還原 2024-05-01
日誌記錄 記錄所有登入嘗試 增加API呼叫和資料存取日誌 提高系統活動的可見性和可追蹤性 加強稽核能力,但增加儲存和處理需求 低:可能記錄敏感資訊 實施日誌加密和存取控制 待審核 - - 分階段實施,先在測試環境驗證 -

總結

SSDLC 在幫助開發團隊從專案初期就將資訊安全納入考量,提高軟體品質並降低安全風險。

需求階段可以利用以下步驟開始資安相關的考量:

  1. 找對人:重點在於識別關鍵利害關係人,包括資安專家、開發人員、管理階層和最終使用者等,並了解他們的資訊安全需求。文中提供了詳細的利害關係人登錄表範例,協助團隊全面掌握各方需求。
  2. 建團隊:強調組建多元化的團隊,為每位成員分配明確的職責,特別是指派資安專家的重要性。若缺乏專業資安人員,建議導入資訊安全開發專業課程,培養團隊的安全意識和技能。
  3. 找方法:選擇適合的開發方法,如瀑布式、敏捷或RUP等,並確保能有效整合安全考量。介紹了OWASP SAMM、OWASP Top 10等資安相關規範,為開發流程提供指導。
  4. 問問題:在需求訪談中融入資訊安全相關問題,深入了解潛在風險。提供了一份問題清單,涵蓋從系統目的到威脅評估等多個面向,幫助團隊全面掌握安全需求。
  5. 記清楚:詳細記錄所有資訊安全需求和相關細節。文章提供了一個結構化的方法,包括客戶需求表、系統分析(SRS)、專案規格設計(SDS)等,幫助團隊有效管理和追蹤需求。
  6. 要管理:實施嚴格的變更管理流程,確保需求變化時充分考慮資訊安全影響。提供了變更管理的範例,包括如何評估變更的安全影響、風險評估和緩解措施等。

小試身手

  1. 在SSDLC中,「找對人」這個步驟主要目的是什麼?
    A. 招募新的開發人員
    B. 識別關鍵利害關係人
    C. 尋找資安顧問公司
    D. 組織團隊建立活動

    答案: B
    解析: 「找對人」步驟的主要目的是識別關鍵利害關係人,並了解他們的資訊安全需求。這有助於確保在軟體開發過程中考慮到所有相關方的安全考量。

  2. 下列哪一項不是建立開發團隊時應考慮的要素?
    A. 為每位成員分配明確的職責
    B. 指派一位資安專家到團隊中
    C. 確保所有成員都是全端工程師
    D. 建立一個多元化的團隊

    答案: C
    解析: 建立開發團隊時,重點在於組建多元化的團隊,明確分配職責,並包含資安專家。並非所有成員都需要是全端工程師,相反,不同專長的成員可以互補,形成更強大的團隊。

  3. 在選擇開發方法時,下列哪一項不是SSDLC考慮的因素?
    A. 專案規模
    B. 時間限制
    C. 安全需求
    D. 開發人員的星座

    答案: D
    解析: 選擇適合的開發方法時,應考慮專案規模、時間限制、預算和安全需求等因素。開發人員的星座並非相關因素,不應影響開發方法的選擇。

  4. 在SSDLC的「問問題」步驟中,下列哪一個不是建議詢問的安全相關問題?
    A. 哪些資料需要保護?
    B. 有哪些潛在的威脅?
    C. 如何減輕這些威脅?
    D. 競爭對手使用什麼程式語言?

    答案: D
    解析: 在需求訪談階段,應該詢問與資訊安全直接相關的問題,如需要保護的資料、潛在威脅及其緩解方法。競爭對手使用的程式語言並非安全相關問題,不屬於此階段應詢問的範圍。

  5. 在SSDLC的變更管理流程中,下列哪一項不是必要的考量?
    A. 評估變更對軟體安全性的潛在影響
    B. 在實施變更前審查和更新安全需求
    C. 確保所有變更都由最高管理層親自批准
    D. 建立資安基準(baseline)

    答案: C
    解析: 變更管理流程中,需要評估變更對安全性的影響,審查安全需求,並建立資安基準。然而,並非所有變更都需要最高管理層親自批准,這可能會導致流程效率低下。應該建立適當的授權機制,根據變更的影響程度決定審批層級。

參考來源

專案範疇管理-蒐集需求
資安管理法─附表十資通系統防護基準修正規定
【閒聊】嘗試用客戶需求表、需求追溯表來取代系統需求規格_SRS撰寫
專案整合管理-實施整合變更控制


上一篇
資安這條路:Day 25 GraphQL 漏洞實作
下一篇
資安這條路:Day 27 SSDLC 安全開發軟體生命週期─設計階段與威脅建模
系列文
資安這條路:系統化學習網站安全與網站滲透測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言