安全開發生命週期 - 模式
深入瞭解 Well-Architected Trust → Secure Development Lifecycle
必須整個開發生命週期整合安全性,從初始設計到部署和作業。這些模式可啟用排班左側安全性作法、解決常見漏洞,並保護您的部署管道安全。
模式
| 要尋找的位置 | 良好的外觀 |
|---|---|
| 開發 | 工具 | ✅ 整合至開發人員工作流程的 IDE 安全性掃描 |
| 開發 | 設計 | ✅ 使用 STRIDE 方法在設計階段期間完成威脅建模 |
| 開發 | 需求 | ✅ 使用者案例和接受條件中包含的安全性需求 |
| 開發 | 來源控制 | ✅ 預先認可綁架強制執行安全性原則 (密碼掃描、程式碼分析) |
| 開發 | 訓練 | ✅ 開發人員安全性訓練會定期重新整理以反映不斷演進的威脅 |
| 開發 | CI/CD | ✅ CI/CD 管道中的自動安全性測試無法根據重要發現結果建立 |
| 開發 | 程式碼檢閱 | ✅ 驗證、授權和資料存取代碼所需的安全性對等審查 |
| 開發 | 程式碼分析 | ✅ 透過透鏡和靜態分析強制執行的安全編碼標準 |
| 開發 | 相依性 | ✅ 每個認可的相依性漏洞掃描執行 |
| 開發 | 測試 | ✅ 滲透測試範圍包含 GA 版本之前的新功能 |
反模式
| 要尋找的位置 | 看起來怎麼壞 |
|---|---|
| 開發 | 測試 | ⚡️ 安全性測試會在發行前延後手動檢閱 |
| 開發 | 訓練 | ⚡️ 僅在上線期間執行一次安全性訓練 |
| 開發 | 程式碼檢閱 | ⚡️ 合併後的安全性小組檢閱程式碼 |
| 開發 | 設計 | ⚡️ 結構變更時不會更新威脅模型 |
| 開發 | 來源控制 | ⚡️ 已停用密碼掃描以減少假陽性 |
| 開發 | CI/CD | ⚡️ 版本期限出現時忽略安全性發現 |
模式
| 要尋找的位置 | 良好的外觀 |
|---|---|
| 注射 | ✅ SOQL 查詢使用繫結變數來防止插入 |
| 注射 | ✅ 使用者輸入在 SOQL、SOSL 或動態查詢中使用前經過驗證和消毒 |
| 注射 | ✅ 動態 SOQL 僅限於信任的輸入 |
| 存取控制 | ✅ 使用 Security.stripInaccessible() 強制執行的 CRUD 和 FLS 權限 |
| XSS | ✅ Lightning 元件在 UI 呈現中逸出使用者產生的內容 |
| 注射 | ✅ 外部 API 整合會驗證和精簡所有輸入 |
| 存取控制 | ✅ 來賓使用者存取權已最小化且嚴格限制 |
| 驗證 | ✅ 用於外部驗證的已命名認證 (非硬式編碼認證) |
| 驗證 | ✅ 使用 PKCE 正確實作的 OAuth 2.0 流程 |
| 工作階段管理 | ✅ 工作階段安全性原則強制執行逾時與 IP 限制 |
| 組態 | ✅ 每季檢閱「安全健康檢查」並修復高風險發現 |
| 存取控制 | ✅ 已稽核自訂中繼資料和權限以防止權限過多 |
反模式
| 要尋找的位置 | 看起來怎麼壞 |
|---|---|
| 注射 | ⚡️ 使用使用者輸入之字串串連建的 SOQL 查詢 |
| 存取控制 | ⚡️ 已授與「建立」、「更新」或「刪除」權限的來賓使用者設定檔 |
| XSS | ⚡️ Lightning 元件在範本中使用未逸出的運算式 |
| 驗證 | ⚡️ 外部整合使用程式碼中的硬式編碼認證 |
| 記錄 | ⚡️除錯記錄包含敏感資料,例如密碼或 PII |
| 存取控制 | ⚡️ 忽略 FLS 和 CRUD 檢查,因為「我們控制所有使用者」 |
| 組態 | ⚡️ 安全性健康檢查發現結果已忽略或永久延後 |
模式
| 要尋找的位置 | 良好的外觀 |
|---|---|
| 銷售管道 | 來源控制 | ✅ 分行保護規則強制執行必要審查和狀態檢查 |
| 銷售管道 | 存取控制 | ✅ 部署管道使用具有最低必要權限的服務帳戶 |
| 銷售管道 | 密碼 | ✅ 儲存在安全儲存庫中的密碼 (永不儲存在來源控制或環境變數中) |
| 銷售管道 | 部署 | ✅ 生產部署需要由授權人員手動批准門 |
| 銷售管道 | 稽核 | ✅ 部署記錄會使用批准追蹤,從何時部署哪些項目 |
| 銷售管道 | 驗證 | ✅ 預先部署驗證包含安全性掃描和規範檢查 |
| 銷售管道 | 存取控制 | ✅ 管道管理存取所需的多因素驗證 |
| 銷售管道 | 監視 | ✅ 銷售管道組態變更會觸發安全性小組通知 |
| 銷售管道 | 驗證 | ✅ 自動部署後驗證確認預期的安全性控制已啟用 |
| 銷售管道 | 相依性 | ✅ 部署前評估的安全性影響相依性更新 |
反模式
| 要尋找的位置 | 看起來怎麼壞 |
|---|---|
| 銷售管道 | 密碼 | ⚡️ 認可至版本控制的密碼 (即使之後已移除) |
| 銷售管道 | 來源控制 | ⚡️ 任何人皆可合併至主要/生產分支,而無須檢閱 |
| 銷售管道 | 存取控制 | ⚡️ 使用管理員層級權限執行部署管道 |
| 銷售管道 | 部署 | ⚡️ 完全自動化的生產部署,沒有批准門 |
| 銷售管道 | 稽核 | ⚡️ 部署記錄不會儲存起始或批准變更的人員 |
| 銷售管道 | 驗證 | ⚡️ 忽略或略過失敗的安全性掃描以符合期限 |
| 銷售管道 | 監視 | ⚡️ 未追蹤或檢閱的銷售管道組態變更 |
| 銷售管道 | 驗證 | ⚡️ 部署後驗證只會檢查功能正確性 |
模式
| 要尋找的位置 | 良好的外觀 |
|---|---|
| 測試 | 靜態分析 | ✅ Salesforce Code Analyzer 會在開發人員識別碼中執行以取得立即回饋意見,並在 CI/CD 銷售管道中作為自動化門 |
| 測試 | 滲透測試 | ✅ 針對公開給不受信任使用者 (尤其是 Experience Cloud 網站和公開 API) 的自訂應用程式執行的滲透測試 |
| 測試 | 單元測試 | ✅ 以不同權限設定檔的使用者身分執行以安全性為中心的 Apex 單元測試 |
| 測試 | 相依性 | ✅ 相依性掃描會監視 AgentExchange 封裝和 JavaScript 程式庫的已知漏洞 |
| 測試 | 安全性檢閱 | ✅ 為每個 AppExchange 或 AgentExchange 安全性檢閱提交準備靜態分析報告 |
| 測試 | 安全性檢閱 | ✅ 當解決方案整合第三方 Web 應用程式或服務時準備的動態掃描 (滲透測試) 報告 |
| 測試 | 相依性 | ✅ 訂閱及監視之已安裝封裝的安全性通知 |
反模式
| 要尋找的位置 | 看起來怎麼壞 |
|---|---|
| 測試 | 涵蓋範圍 | ⚡️ 安全性測試依賴單一技術,例如僅靜態分析 |
| 測試 | 單元測試 | ⚡️ Apex 測試會驗證功能行為,但永不以權限較低的使用者身分執行 |
| 測試 | 安全性檢閱 | ⚡️ 未準備必要靜態分析或動態掃描報告的 AppExchange 或 AgentExchange 提交 |
| 測試 | 滲透測試 | ⚡️ 已針對公用 Experience Cloud 網站和 API 略過滲透測試 |
另請參閱: