SEC11-BP02 自動化在整個開發和發佈生命週期的測試 - AWS Well-Architected 架構

SEC11-BP02 自動化在整個開發和發佈生命週期的測試

自動化在整個開發和發佈生命週期的安全署性測試。自動化可以讓軟體在發佈之前更容易一致且重複地找出潛在問題,因此能降低將供應軟體的安全問題風險。

預期成果: 自動化測試的目標是提供以程式設計方式,及早偵測潛在問題,而且常常是遍及整個開發生命週期。啟用自動化迴歸測試時,您可以對變更之後的軟體重新執行功能性與非功能性的測試,確認先前測試過的軟體運作仍如預期。如果定義安全單元測試來檢查常見的錯誤組態,例如損壞或缺失的驗證,您就能夠在開發過程中及早發現和修正這些問題。

測試自動化會使用專用測試個案來進行應用程式驗證,測試期間以應用程式需求和所需功能為基礎。自動化測試會將產生的測試輸出與其個別預期輸出進行比較,得到最後結果,進而加快整體的測試生命週期。包括像是迴歸測試與單位測試套組的測試方法最適合自動化應用。自動化安全屬性測試,建置人員就能接收自動化意見回饋,而不需要等待舉行安全檢閱。採用靜態或靜態程式碼分析的自動化測試,可以提高程式碼品質,並協助及早在開發生命週期中偵測出潛在的軟體問題。

常見的反模式:

  • 未傳達測試個案與自動化測試的測試結果。

  • 僅在即將發佈前執行自動化測試。

  • 自動化有經常改變需求的測試個案。

  • 無法提供如何解決安全測試結果的指引。

建立此最佳實務的優勢:

  • 降低人員評估系統安全署性的依賴性。

  • 可在跨多個工作串流之間找到一致結果,進而提高一致性。

  • 降低造成安全問題被導入產品線上軟體的可能性。

  • 因提早捕捉到軟體問題,而縮短偵測與矯正之間的範圍時段。

  • 提高跨多個工作串流之系統或重複行為的能見度,其可用來促進整體組織改進。

未建立此最佳實務時的風險暴露等級:

實作指引

隨著軟體逐漸建置,採用各種不同機制來測試軟體,確保您正根據應用程式的業務邏輯為主的功能性需求,以及著重應用程式可靠性、效能和安全性的非功能性需求,進行應用程式的測試作業。

靜態應用程式安全測試 (SAST) 分析原始程式碼是否有異常的安全模式,並提供可能存在缺陷程式碼的提示。SAST 依賴靜態輸入來測試某個範圍的已知安全問題,這些輸入包括文件 (需求規格、設計文件,以及設計規格4) 和應用程式原始程式碼。靜態程式碼分析器可協助加快大量程式碼的分析作業。NIST 品質群組則提供原始程式碼安全分析器的比較,其中包括能用於位元組程式碼掃描器二進位程式碼掃描器的開放原始碼工具。

應用動態分析安全測試 (DAST) 方法以補充您的靜態測試,這個方法會在應用程式執行期間進行測試,找出潛在的意外行為。動態測試可用來偵測出靜態分析無法偵測出的潛在問題。在程式碼儲存、建置和管道等階段進行測試,您就可以檢查進入程式碼當中的各種不同潛在問題類型。Amazon CodeWhisperer 提供程式碼建議,包括在建置人員的 IDE 中執行安全掃描。Amazon CodeGuru Reviewer 可以找出關鍵問題、安全問題,以及在應用程式開發期間難以發現的錯誤,並提供改善程式碼品質的建議。

開發人員安全研討會使用 AWS 開發人員工具,像是 AWS CodeBuildAWS CodeCommitAWS CodePipeline,執行包括 SAST 和 DAST 測試方法的發佈管道自動化。

隨著 SDLC 繼續進行,建立包括安全團隊定期進行應用程式檢閱的反覆程序。收集自這些安全檢閱的意見回饋應加以解決,並在發佈準備度檢閱時加以驗證。這些檢閱作業會建立堅實強大的應用程式安全狀態,並提供建置人員可解決潛在問題的可行動意見回饋。

實作步驟

  • 實作一致的 IDE、程式碼檢閱,以及包括安全測試的 CI/CD 工具。

  • 考慮 SDLC 中的哪個位置適合封鎖管道,而不只是通知建置人員出現需要矯正的問題。

  • 開發人員安全研討會提供在發佈管道中整合靜態與動態測試的範例。

  • 使用自動化工具執行測試或程式碼分析,這些工具包括像是已與開發人員 IDE 完成整合的 Amazon CodeWhisperer,以及可在遞交認可時掃描程式碼的 Amazon CodeGuru Reviewer,協助建置人員在正確時間得到意見回饋。

  • 使用 AWS Lambda 進行建置時,您可以使用 Amazon Inspector 來掃描多個功能的應用程式程式碼。

  • AWS CI/CD 研討會提供在 AWS 上建置 CI/CD 管道的起點。

  • 如果將自動化測試納入 CI/CD 管道,您應該使用票證系統來追蹤通知,以及軟體問題的矯正。

  • 如果是可能會產生發現結果的安全測試,連結矯正的指引將有助於建置人員改善程式碼品質。

  • 定期分析自動化工具所找到的發現結果,以便找出下次自動化、建置人員訓練或認知行銷活動的優先順序。

資源

相關文件:

相關影片:

相關範例: