DevSecOps 工具鏈的最佳實務

以下各節將說明 DevSecOps 各工具鏈的最佳實務:持續整合(CI)、基礎架構即代碼( IaC )的 CI、持續部署(CD)以及持續合規(CC)。

持續整合(CI)工具鏈的最佳實務

DevSecOps 的 CI 工具鏈遵循以下實務:

  • 在應用程式儲存庫上執行 detect-secrets ,以防止應用程式原始碼中的機密資訊外洩。
  • 針對應用程式程式碼執行單元測試與應用程式測試。
  • 在應用程式儲存庫上執行靜態程式碼掃描器,以識別原始碼中的安全漏洞。
  • 透過 Code Risk Analyzer 等合規性掃描工具,對所有應用程式儲存庫執行合規性檢查,包括漏洞掃描,以及針對所有套件依賴項進行物料清單 (BOM) 檢查。
  • 彙整自上次建置以來所有已合併的拉取請求之同儕審查合規性資料。
  • 每當 Git 進行提交時,便會建立一個容器映像,並根據建置編號、時間戳記及提交 ID 設定標籤,以確保可追溯性。
  • 對已建構的容器映像進行簽名。
  • 掃描容器映像以偵測安全漏洞。
  • 將建置完成的產出部署至開發環境,並針對正在執行的應用程式執行動態掃描(ZAP API 與 UI 掃描),以偵測執行時漏洞。
  • 在開發環境中,針對已部署的構建產出執行驗收測試與整合測試。
  • 在每次管線執行結束時,將所有證據(掃描結果、測試結果、日誌、同儕審查資料及管線執行資料)彙整至證據儲存庫中。

「基礎架構即代碼」( IaC )工具鏈之持續整合(CI)最佳實務

DevSecOps 針對 IaC 工具鏈的持續整合 (CI) 流程遵循以下實務:

  • 在 IaC 儲存庫上執行 detect-secrets ,以防止 Terraform 配置中的機密資訊外洩。
  • 在每次提交至 Git 時,都會針對 IaC 的配置執行單元測試。
  • 對 IaC 儲存庫執行靜態程式碼掃描,其中包括 Terraform 專用的工具,例如用於程式碼檢查與最佳實務執行的 tflint,以及用於確保格式一致性與配置有效性的 terraform fmt 和 terraform validate。
  • 利用 IaC-specific 工具(例如 Code Risk Analyzer 或 checkov )對 IaC 儲存庫執行合規性檢查,以掃描合規性問題。
  • 每當 Git 進行提交時,便會建立一個包含 Terraform 配置的 Tar 檔案。
  • 簽署已建構的 Tar 工件。
  • 透過 IBM Cloud Schematics 或 Terraform CLI,將 IaC 的配置部署至開發環境。
  • 在開發環境中,針對已部署的配置執行驗收測試與整合測試。
  • 將建置產出新增至庫存儲存庫,以確保可追溯性並將其部署至下游環境。
  • 在每次管線執行結束時,將所有證據(掃描結果、測試結果、簽署資料、日誌及管線執行資料)彙整至證據儲存庫中。

用於部署安全應用程式的持續部署(CD)工具鏈最佳實務

為了部署安全的應用程式,DevSecOps CD 工具鏈遵循以下做法:

  • 透過針對庫存儲存庫提交的推廣拉取請求,來定義部署範圍並計算部署差異,該差異即為自上次完成部署以來有所變更的工件集合。
  • 確認當前部署範圍內的所有拉取請求均已通過同儕審查並獲批准,方能繼續進行。 若任何拉取請求未獲批准,則會中止部署。
  • 驗證所有排定部署的建構產出是否均已正確簽署。 若缺少有效簽名,則會阻止部署。
  • 根據部署差異計算部署物料清單 (BOM),並從相關的 CI 管線執行結果及當前的 CD 管線執行結果中彙整證據摘要。
  • 在已設定的變更管理系統中建立變更請求,並附上部署物料清單、證據摘要及同儕審查合規性資料。
  • 若所有合規標準均已滿足,則會自動批准該變更請求。 當條件未完全符合時,支援手動核准或緊急標記。
  • 一旦變更請求獲得批准或被標記為緊急,系統便會將庫存中的構建產出部署至目標環境(例如預備環境或生產環境)。
  • 在部署完成後執行驗收測試與整合測試,以驗證部署是否成功,以及應用程式是否如預期般運作。
  • 若在部署或驗收測試階段發生失敗,系統將在同一條管線執行過程中自動回滾部署,並在清單中保留最後已知正常狀態。
  • 以 close_category 狀態( Successful 或 Successful with issues )關閉變更請求,並將 <target-environment>_latest 庫存標籤移至已部署的提交。
  • 在每次管線執行結束時,將所有日誌檔案、構建產出及證據彙整並上傳至證據儲存庫。
  • 可選擇地,在部署成功後,為已合併的拉取請求標記 deploy:{region}:{env} 標籤,以提供端到端的部署可追溯性,而無需存取管道詳細資訊。

持續合規(CC)工具鏈的最佳實務

DevSecOps CC 工具鏈遵循以下實務:

  • 在所有庫存來源儲存庫上執行 detect-secrets ,以識別應用程式原始碼中的機密洩漏。
  • 對清單中找到的所有原始碼儲存庫執行靜態程式碼掃描( SonarQube 或自訂實作)。
  • 對已部署的應用程式執行動態應用程式安全性測試掃描(OWASP ZAP),以找出執行時漏洞。
  • 透過工具(例如 Code Risk Analyzer)對所有清單中的原始碼儲存庫執行合規性檢查,包括漏洞掃描、針對 Kubernetes 部署清單的 CIS 檢查、針對所有套件依賴項的 BOM 檢查,以及分支保護驗證。
  • 掃描所有已部署的容器映像檔,以偵測安全漏洞。
  • 針對在處理流程執行期間所發現的每個個別 CVE、漏洞或警示,建立或更新對應的事件問題,並為每個問題設定截止日期。
  • 將各階段的證據彙整至證據保管庫,將掃描結果與檢查結果附加至對應的問題項目,並更新所有已掃描證物的合規狀態。