本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SEC11-BP06 以程式設計方式部署軟體
盡可能以程式設計方式進行軟體部署。此方法可減少部署失敗或因人為疏失而發生非預期問題的機率。
預期結果:您測試的工作負載版本是您部署的版本,且每次都會一致地執行部署。您可以將工作負載的組態外部化,如此有助於在無變動的情況下部署到不同的環境。您可以使用軟體套件的加密簽章來驗證環境之間沒有任何變化。
常見的反模式:
-
手動部署軟體至生產環境。
-
手動執行因應不同環境需求的軟體變更。
建立此最佳實務的優勢:
-
提高軟體發布程序的可信度。
-
降低變更失敗影響到業務功能的風險。
-
因變更風險降低而增加發布規律。
-
部署其間意外事件的自動回復能力。
-
可以密碼編譯方式證明所測試的軟體就是實際部署的軟體。
未建立此最佳實務時的曝險等級:高
實作指引
要維護強大且可靠的應用程式基礎設施,請實作安全且自動化的部署實務。此實務與從生產環境移除持續的人工存取、使用 CI/CD 工具進行部署,以及將環境特定的組態資料外化相關。遵循此方法可以增強安全性、降低人為錯誤的風險,並可簡化部署程序。
您可以建置您的 AWS 帳戶 結構,以從生產環境中移除持續的人力存取。此做法可將未經授權的變更或意外修改的風險降至最低,進而改善生產系統的完整性。您可以使用 AWS CodeBuild
若要進一步增強安全性和可追蹤性,您可以在測試後簽署應用程式套件,並在部署期間驗證這些簽署。若要這麼做,請使用密碼編譯工具,例如 AWS Signer 或 AWS Key Management Service (AWS KMS)
此外,您的團隊可以建立工作負載架構,以從外部來源取得環境特定的組態資料,例如 AWS Systems Manager Parameter Store。此做法會將應用程式的程式碼與組態資料分開,這樣就能協助您獨立管理和更新組態,而無需修改應用程式的程式碼本身。
若要簡化基礎設施佈建和管理,請考慮使用基礎設施即程式碼 (IaC) 工具,例如 AWS CloudFormation
考慮採用 Canary 部署,驗證軟體是否已成功部署。Canary 部署需要在部署至整個生產環境之前,對執行個體或使用者子集進行變更。然後,您可以監控變更造成的影響,並視需要復原,將常發生的問題風險降至最低。
請遵循使用多個帳戶組織您的 AWS 環境白皮書中概述的建議。此白皮書提供有關將環境 (例如開發、預備和生產) 分隔為不同 AWS 帳戶 的指引,進一步增強安全性和隔離性。
實作步驟
-
設定 AWS 帳戶 結構:
-
遵循使用多個帳戶組織您的 AWS 環境白皮書中的指引,針對不同的環境 (例如開發、預備和生產) 建立不同的 AWS 帳戶。
-
為每個帳戶設定適當的存取控制和許可權限,以限制人力對生產環境的直接存取。
-
-
實作 CI/CD 管道:
-
使用 AWS CodeBuild
和 AWS CodePipeline 等服務來設定 CI/CD 管道。 -
設定管道以自動建置、測試和部署應用程式的程式碼至個別環境中。
-
將程式碼儲存庫與 CI/CD 管道整合,以便於進行版本控制和程式碼管理。
-
-
簽署和驗證應用程式套件:
-
測試和驗證應用程式套件後,可使用 AWS Signer 或 AWS Key Management Service (AWS KMS)
簽署應用程式套件。 -
設定部署程序,以在將應用程式套件部署到目標環境之前驗證其簽章。
-
-
外部化組態資料:
-
在 AWS Systems Manager Parameter Store 中儲存環境特定的組態資料。
-
修改應用程式的程式碼,以便在部署或執行時期從參數存放區擷取組態資料。
-
-
基礎設施即程式碼 (IaC)
-
使用 AWS CloudFormation
或 AWS CDK 等 IaC 工具,以定義基礎設施即程式碼,並加以管理。 -
建立 CloudFormation 範本或 CDK 指令碼,以佈建和設定應用程式的必要 AWS 資源。
-
將 IaC 與您的 CI/CD 管道整合,以自動部署基礎設施變更,以及應用程式的程式碼變更。
-
-
實作 Canary 部署:
-
將部署程序設定為支援 Canary 部署,其會在您將變更部署到整個生產環境之前,先推廣到執行個體或使用者子集。
-
使用 AWS CodeDeploy
或 AWS ECS 等服務管理 Canary 部署,並監控變更造成的影響。 -
如果在 Canary 部署期間偵測到問題,請實作復原機制以還原至先前的穩定版本。
-
-
監控和稽核:
-
設定監控和記錄機制,以追蹤部署、應用程式效能和基礎設施變更。
-
使用 Amazon CloudWatch
和 AWS CloudTrail 等服務來收集和分析日誌和指標。 -
實作稽核與合規檢查,確認是否遵循安全性最佳實務及法規要求。
-
-
持續改善:
-
定期審查和更新您的部署實務,並納入對於先前部署的意見回饋,和從中學到的經驗。
-
盡可能自動化部署程序,以減少手動介入和潛在的人為錯誤。
-
與跨部門團隊合作 (例如,維運或資安),以協調並持續改善部署實務。
-
遵循這些步驟,您可以在AWS您的環境中實作安全且自動化的部署實務,藉此增強安全性、降低人為錯誤的風險,並簡化部署程序。
資源
相關的最佳實務:
相關文件:
相關影片:
相關範例: