安全需求清單範本(Security Requirements Checklist)#
參照標準:OWASP ASVS 4.0.3(Application Security Verification Standard)/ ISO/IEC 27001:2022 Annex A
文件用途:定義系統應滿足的安全需求,確保設計與開發階段納入安全考量
適用階段:需求分析階段(Requirements Phase)— Security by Design
📋 章節目錄#
- 文件資訊
- 安全需求概述
- 認證需求
- 授權與存取控制
- 資料保護需求
- 輸入驗證與輸出編碼
- Session 管理
- 日誌與監控需求
- 通訊安全
- 組態安全
- 合規性需求
- 附錄
1. 文件資訊#
📝 範本#
| 項目 | 內容 |
|---|
| 文件編號 | SR-{專案代碼}-{序號} |
| 文件名稱 | {系統名稱} 安全需求清單 |
| 版本 | v{主版本}.{次版本} |
| 狀態 | 草稿 / 審核中 / 核定 |
| 建立日期 | {YYYY-MM-DD} |
| 撰寫者 | {姓名/角色} |
| 資安審核者 | {資安人員姓名} |
| ASVS Level | Level 1 / Level 2 / Level 3 |
📖 使用說明#
- 依據 OWASP ASVS 4.0.3 標準,安全需求分為三個驗證等級:
- Level 1:所有應用程式的最低標準
- Level 2:處理敏感資料的應用程式
- Level 3:最高安全等級(金融、醫療、關鍵基礎設施)
- 本清單在需求階段制定,貫穿整個 SDLC(設計需遵循、開發需實作、測試需驗證)
💡 範例#
| 項目 | 內容 |
|---|
| 文件編號 | SR-HRM-001 |
| 系統名稱 | 人力資源管理系統 |
| ASVS Level | Level 2(處理員工個資與薪資資料) |
2. 安全需求概述#
📝 範本#
2.1 系統安全分類#
| 項目 | 評估 |
|---|
| 資料敏感度 | 一般 / 敏感 / 高度敏感 |
| 系統曝露面 | 內部 / 外部 / 混合 |
| 使用者類型 | 內部員工 / 外部客戶 / 合作夥伴 |
| 法規要求 | {適用法規} |
| 安全等級 | ASVS Level {1/2/3} |
2.2 安全需求追溯矩陣#
| 安全需求 ID | 需求描述 | ASVS 章節 | 對應 FRD | 優先級 |
|---|
| SEC-{xxx} | {描述} | V{x}.{x} | FR-{xxx} | 高/中/低 |
📖 使用說明#
- 安全分類決定應套用的 ASVS Level
- 追溯矩陣確保每個安全需求可連結到 FRD 需求與 ASVS 標準章節
- 優先級考量:法規強制 > 高風險 > 一般防護
💡 範例#
2.1 系統安全分類#
| 項目 | 評估 |
|---|
| 資料敏感度 | 高度敏感(身分證字號、薪資、銀行帳號) |
| 系統曝露面 | 混合(內部網路 + VPN 遠端存取) |
| 使用者類型 | 內部員工(全體) + HR 管理人員 |
| 法規要求 | 個人資料保護法、勞動基準法 |
| 安全等級 | ASVS Level 2 |
3. 認證需求(Authentication)#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-AUTH-001 | {認證需求描述} | V2.{x} | L{N} | 必須/建議 | ☐ |
| SEC-AUTH-002 | {認證需求描述} | V2.{x} | L{N} | 必須/建議 | ☐ |
📖 使用說明#
- 對應 OWASP ASVS V2(Authentication)章節
- Level 1:基本密碼安全;Level 2:多因子認證(MFA);Level 3:硬體認證
- 認證需求需涵蓋:密碼策略、帳號鎖定、MFA、SSO
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-AUTH-001 | 密碼長度至少 12 字元 | V2.1.1 | L1 | 必須 | ☑ |
| SEC-AUTH-002 | 帳號連續 5 次登入失敗後鎖定 30 分鐘 | V2.2.1 | L1 | 必須 | ☑ |
| SEC-AUTH-003 | 管理員帳號啟用多因子認證(MFA) | V2.8.1 | L2 | 必須 | ☑ |
| SEC-AUTH-004 | 整合企業 AD 實現 SSO 登入 | V2.7.1 | L2 | 必須 | ☑ |
| SEC-AUTH-005 | 密碼不儲存明文,使用 bcrypt/Argon2 雜湊 | V2.4.1 | L1 | 必須 | ☑ |
| SEC-AUTH-006 | Token 過期時間 ≤ 15 分鐘(Access Token) | V2.8.5 | L2 | 必須 | ☐ |
4. 授權與存取控制(Authorization)#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-AUTHZ-001 | {授權需求描述} | V4.{x} | L{N} | 必須/建議 | ☐ |
📖 使用說明#
- 對應 OWASP ASVS V4(Access Control)章節
- 遵循最小權限原則(Principle of Least Privilege)
- 需求涵蓋:RBAC/ABAC 模型、水平/垂直權限控制、API 授權
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-AUTHZ-001 | 實施 RBAC 角色權限控制(Admin/Manager/Employee) | V4.1.1 | L1 | 必須 | ☑ |
| SEC-AUTHZ-002 | 使用者僅能存取自己的薪資/假勤資料(水平權限) | V4.1.2 | L1 | 必須 | ☑ |
| SEC-AUTHZ-003 | API 端點實施授權檢查,拒絕未授權請求回傳 403 | V4.1.3 | L1 | 必須 | ☑ |
| SEC-AUTHZ-004 | 管理功能(帳號管理、系統設定)限 Admin 角色 | V4.2.1 | L1 | 必須 | ☑ |
| SEC-AUTHZ-005 | 所有權限變更需記錄稽核日誌 | V4.3.1 | L2 | 必須 | ☐ |
5. 資料保護需求(Data Protection)#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-DATA-001 | {資料保護需求描述} | V6.{x}/V8.{x} | L{N} | 必須/建議 | ☐ |
敏感資料識別#
| 資料欄位 | 敏感等級 | 加密方式 | 遮罩方式 | 保留期限 |
|---|
| {欄位} | 高/中/低 | {加密} | {遮罩} | {期限} |
📖 使用說明#
- 對應 OWASP ASVS V6(Stored Cryptography)與 V8(Data Protection)
- 敏感資料需先識別、再定義保護策略
- 保護措施包含:傳輸加密、靜態加密、資料遮罩、存取控制、保留/銷毀策略
💡 範例#
敏感資料識別#
| 資料欄位 | 敏感等級 | 加密方式 | 遮罩方式 | 保留期限 |
|---|
| 身分證字號 | 高 | AES-256 (靜態) | A1234****9 | 離職後 5 年 |
| 銀行帳號 | 高 | AES-256 (靜態) | --1234 | 離職後 5 年 |
| 薪資金額 | 高 | AES-256 (靜態) | 不遮罩(權限控制) | 永久 |
| 手機號碼 | 中 | 無(權限控制) | 09xx-xxx-789 | 離職後 2 年 |
| Email | 低 | 無 | 無 | 離職後 2 年 |
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 |
|---|
| SEC-DATA-001 | 個資欄位靜態加密儲存(AES-256) | V6.2.1 | L2 | 必須 |
| SEC-DATA-002 | 所有傳輸使用 TLS 1.2+ | V9.1.1 | L1 | 必須 |
| SEC-DATA-003 | 日誌中禁止記錄敏感資料明文 | V8.3.1 | L1 | 必須 |
| SEC-DATA-004 | 資料庫備份亦需加密 | V6.2.3 | L2 | 必須 |
6. 輸入驗證與輸出編碼#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-INPUT-001 | {輸入驗證需求} | V5.{x} | L{N} | 必須/建議 | ☐ |
📖 使用說明#
- 對應 OWASP ASVS V5(Validation, Sanitization and Encoding)
- 防禦 OWASP Top 10 中的注入攻擊(SQL Injection、XSS、Command Injection)
- 原則:永不信任使用者輸入,伺服器端必須驗證
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 |
|---|
| SEC-INPUT-001 | 所有使用者輸入在伺服器端進行驗證(白名單) | V5.1.1 | L1 | 必須 |
| SEC-INPUT-002 | 使用參數化查詢防止 SQL Injection | V5.3.4 | L1 | 必須 |
| SEC-INPUT-003 | HTML 輸出使用 Context-Aware 編碼防止 XSS | V5.3.3 | L1 | 必須 |
| SEC-INPUT-004 | 檔案上傳驗證副檔名、MIME Type、大小限制 | V5.1.4 | L1 | 必須 |
| SEC-INPUT-005 | API 輸入限制 Content-Length,防止 DoS | V5.1.5 | L1 | 必須 |
7. Session 管理#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-SESS-001 | {Session 管理需求} | V3.{x} | L{N} | 必須/建議 | ☐ |
📖 使用說明#
- 對應 OWASP ASVS V3(Session Management)
- Session 管理攸關身份劫持風險
- 需求涵蓋:Session ID 強度、過期設定、Cookie 安全屬性
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 |
|---|
| SEC-SESS-001 | Session ID 長度 ≥ 128 bits,由加密安全亂數產生 | V3.2.1 | L1 | 必須 |
| SEC-SESS-002 | Cookie 設定 HttpOnly、Secure、SameSite=Strict | V3.4.1 | L1 | 必須 |
| SEC-SESS-003 | 閒置 30 分鐘後自動登出 | V3.3.1 | L1 | 必須 |
| SEC-SESS-004 | 登入後重新產生 Session ID(防 Fixation) | V3.2.3 | L1 | 必須 |
| SEC-SESS-005 | 支援使用者查看與終止其他裝置 Session | V3.3.4 | L2 | 建議 |
8. 日誌與監控需求#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-LOG-001 | {日誌監控需求} | V7.{x} | L{N} | 必須/建議 | ☐ |
稽核事件定義#
| 事件類型 | 記錄內容 | 保留期限 |
|---|
| {事件} | {需記錄的欄位} | {期限} |
📖 使用說明#
- 對應 OWASP ASVS V7(Error Handling and Logging)
- 日誌是事後追查與即時偵測的基礎
- 重點:記什麼、不記什麼(禁止記錄密碼/Token)、保存多久
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 |
|---|
| SEC-LOG-001 | 記錄所有認證事件(登入成功/失敗/登出) | V7.1.1 | L1 | 必須 |
| SEC-LOG-002 | 記錄所有授權失敗事件 | V7.1.2 | L1 | 必須 |
| SEC-LOG-003 | 日誌中禁止包含 Session Token、密碼、個資 | V7.1.3 | L1 | 必須 |
| SEC-LOG-004 | 日誌保留 ≥ 90 天,不可竄改 | V7.3.1 | L2 | 必須 |
| SEC-LOG-005 | 連續 5 次認證失敗觸發即時告警 | V7.4.1 | L2 | 必須 |
稽核事件定義#
| 事件類型 | 記錄內容 | 保留期限 |
|---|
| 登入成功 | 時間、帳號、IP、User-Agent | 180 天 |
| 登入失敗 | 時間、帳號、IP、失敗原因 | 180 天 |
| 權限變更 | 時間、操作者、變更內容 | 365 天 |
| 個資存取 | 時間、帳號、存取的個資類型 | 365 天 |
| 資料匯出 | 時間、帳號、匯出範圍、筆數 | 365 天 |
9. 通訊安全#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-COMM-001 | {通訊安全需求} | V9.{x} | L{N} | 必須/建議 | ☐ |
📖 使用說明#
- 對應 OWASP ASVS V9(Communication)
- 保護傳輸中資料不被竊聽或竄改
- 涵蓋:TLS 版本、憑證管理、HSTS、內部通訊加密
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 |
|---|
| SEC-COMM-001 | 所有外部通訊使用 TLS 1.2 以上 | V9.1.1 | L1 | 必須 |
| SEC-COMM-002 | 啟用 HSTS(max-age ≥ 1 年) | V9.1.2 | L1 | 必須 |
| SEC-COMM-003 | 伺服器憑證由受信任 CA 簽發 | V9.2.1 | L1 | 必須 |
| SEC-COMM-004 | 服務間(微服務)通訊使用 mTLS | V9.2.2 | L2 | 建議 |
| SEC-COMM-005 | 禁用 SSL 3.0、TLS 1.0/1.1 | V9.1.3 | L1 | 必須 |
10. 組態安全#
📝 範本#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 | 實作狀態 |
|---|
| SEC-CFG-001 | {組態安全需求} | V14.{x} | L{N} | 必須/建議 | ☐ |
📖 使用說明#
- 對應 OWASP ASVS V14(Configuration)
- 安全組態確保系統不因錯誤設定而暴露弱點
- 涵蓋:預設帳號、除錯模式、HTTP 安全標頭、依賴管理
💡 範例#
| 需求 ID | 需求描述 | ASVS 參照 | Level | 必須/建議 |
|---|
| SEC-CFG-001 | 正式環境禁止開啟除錯模式 / 詳細錯誤訊息 | V14.1.1 | L1 | 必須 |
| SEC-CFG-002 | 移除或停用所有預設帳號與密碼 | V14.1.2 | L1 | 必須 |
| SEC-CFG-003 | 設定安全 HTTP Headers(CSP, X-Frame-Options 等) | V14.4.1 | L1 | 必須 |
| SEC-CFG-004 | 第三方依賴無已知 High/Critical CVE | V14.2.1 | L1 | 必須 |
| SEC-CFG-005 | 機敏設定(DB 連線字串、API Key)使用 Secret Manager | V14.1.5 | L2 | 必須 |
11. 合規性需求#
📝 範本#
| 法規/標準 | 適用條款 | 系統需求對應 | 實作狀態 |
|---|
| {法規名稱} | {條款} | {系統需滿足的具體需求} | ☐ |
📖 使用說明#
- 列出系統需遵循的法規、產業標準、企業政策
- 每條法規要求需轉化為可驗證的技術需求
- 常見法規:個人資料保護法、GDPR、PCI DSS、ISO 27001
💡 範例#
| 法規/標準 | 適用條款 | 系統需求對應 | 實作狀態 |
|---|
| 個人資料保護法 | 第 27 條(安全維護措施) | 個資加密儲存、存取控制、稽核日誌 | ☑ |
| 個人資料保護法 | 第 11 條(當事人權利) | 提供個資查詢、更正、刪除功能 | ☑ |
| ISO 27001:2022 | A.8.3(存取控制) | RBAC 實作 | ☑ |
| ISO 27001:2022 | A.8.24(密碼學使用) | TLS 1.2+、AES-256 加密 | ☑ |
| 公司資安政策 | 密碼政策 v3.0 | 12 字元 + 複雜度 + 90 天更換 | ☐ |
12. 附錄#
📝 範本#
12.1 安全需求完成度統計#
| 類別 | 總需求數 | 已實作 | 未實作 | 完成率 |
|---|
| 認證(AUTH) | {N} | {N} | {N} | {%} |
| 授權(AUTHZ) | {N} | {N} | {N} | {%} |
| 資料保護(DATA) | {N} | {N} | {N} | {%} |
| 輸入驗證(INPUT) | {N} | {N} | {N} | {%} |
| Session(SESS) | {N} | {N} | {N} | {%} |
| 日誌監控(LOG) | {N} | {N} | {N} | {%} |
| 通訊安全(COMM) | {N} | {N} | {N} | {%} |
| 組態安全(CFG) | {N} | {N} | {N} | {%} |
| 合計 | {N} | {N} | {N} | {%} |
12.2 OWASP ASVS 對照表#
| ASVS 章節 | 主題 | 本文件對應章節 |
|---|
| V2 | Authentication | 第 3 章 |
| V3 | Session Management | 第 7 章 |
| V4 | Access Control | 第 4 章 |
| V5 | Validation | 第 6 章 |
| V6 | Stored Cryptography | 第 5 章 |
| V7 | Error Handling & Logging | 第 8 章 |
| V8 | Data Protection | 第 5 章 |
| V9 | Communication | 第 9 章 |
| V14 | Configuration | 第 10 章 |
📖 使用說明#
- 完成度統計用於追蹤安全需求落實進度
- 所有「必須」等級的需求需在上線前 100% 實作
- ASVS 對照表協助資安審核人員快速定位驗證範圍
💡 範例#
12.1 安全需求完成度統計#
| 類別 | 總需求數 | 已實作 | 未實作 | 完成率 |
|---|
| 認證(AUTH) | 6 | 5 | 1 | 83% |
| 授權(AUTHZ) | 5 | 4 | 1 | 80% |
| 資料保護(DATA) | 4 | 4 | 0 | 100% |
| 輸入驗證(INPUT) | 5 | 5 | 0 | 100% |
| Session(SESS) | 5 | 4 | 1 | 80% |
| 日誌監控(LOG) | 5 | 3 | 2 | 60% |
| 通訊安全(COMM) | 5 | 5 | 0 | 100% |
| 組態安全(CFG) | 5 | 4 | 1 | 80% |
| 合計 | 40 | 34 | 6 | 85% |
📌 範本使用注意事項
- 本範本依據 OWASP ASVS 4.0.3 與 ISO/IEC 27001:2022 Annex A 編製
- 安全需求清單需在需求分析階段完成,並貫穿整個 SDLC
- 「必須」等級需求為上線前必須滿足的最低標準
- 搭配「威脅模型範本」使用,將威脅分析結果轉化為安全需求
- 定期更新(至少每半年),因應新威脅與法規變更