SEC11-BP06 以程式設計方式部署軟體
盡可能以程式設計方式進行軟體部署。此方法可減少部署失敗或因人為疏失而發生非預期問題的機率。
預期成果:讓人員遠離資料是在 AWS 雲端 中安全建置的重要原則。這項原則包括軟體的部署方式。
不仰賴人員的軟體部署具備更高的可信度,因為測試結果就是部署結果,而且每次部署都會一致。軟體應該不需要變更就能在不同環境中運作。使用十二因素應用程式開發的原則時,特別是指組態外部化,可以將相同的程式碼部署到多個環境,而不需要任何變更。密碼編譯型簽署的軟體套件是用來確認環境之間未發生任何變更的好方法。這個方法的最終成果是降低變更程序中的風險,並且改善軟體發佈一致性。
常見的反模式:
-
手動部署軟體至生產環境。
-
手動執行因應不同環境需求的軟體變更。
建立此最佳實務的優勢:
-
提高軟體發佈程序的可信度。
-
降低變更失敗影響到業務功能的風險。
-
因變更風險降低而增加發佈規律。
-
部署其間意外事件的自動回復能力。
-
可以密碼編譯方式證明所測試的軟體就是實際部署的軟體。
未建立此最佳實務時的風險暴露等級:高
實作指引
建置 AWS 帳戶 結構,以便排除環境的持續人員存取,並使用 CI/CD 工具來執行部署。建立應用程式的架構,使其能從外部來源取得環境特定組態資料,例如 AWS Systems Manager 參數存放區。簽署通過測試的套件,並在部署期間驗證這些簽章。設定 CI/CD 管道,以便推送應用程式程式碼,並可使用Canary 來確認部署成功。使用像是 AWS CloudFormation
實作步驟
-
建置定義明確的 CI/CD 管道,以便簡化部署程序。
-
使用 AWS CodeBuild
和 AWS 程式碼管道 提供 CI/CD 功能時,可以讓您輕鬆地將安全測試整合至管道中。 -
遵循使用多個帳戶整理您的 AWS 環境白皮書中的環境區隔相關指引。
-
確認已在執行生產工作負載的環境中無持續人員存取。
-
建立應用程式的架構,使其支援組態資料的外部化。
-
考慮使用藍/綠部署模型進行部署。
-
實作 Canary 來驗證軟體部署成功。
-
使用像是 AWS Signer 或 AWS Key Management Service (AWS KMS)
等密碼編譯工具來簽署與驗證將要部署的軟體套件。
資源
相關的最佳實務:
相關文件:
相關影片:
相關範例: