SEC11-BP06 ソフトウェアをプログラムでデプロイする
可能な場合は、ソフトウェアのデプロイをプログラムで行います。この手法により、デプロイに失敗したり、人為的エラーにより予期しない問題が発生したりする可能性を低減できます。
期待される成果: データからユーザーを遠ざけることは、AWS クラウドでソフトウェアを安全に構築するための重要な原則です。この原則には、ソフトウェアのデプロイ方法も含まれます。
ソフトウェアのデプロイで人への依存を排除することで、テスト済みのソフトウェアが常に一貫してデプロイされるという信頼性を大幅に高めることができます。異なる環境で動作させるためにソフトウェアを変更する必要はありません。12 要素のアプリケーション開発の原則、具体的には構成の外部化の原則を使用することで、コードを変更することなく、複数の環境に同じコードをデプロイすることができます。暗号化を使用したソフトウェアパッケージの署名は、環境間で変更がないことを証明するための便利な手法です。このアプローチによって、変更プロセスでのリスクを低減し、ソフトウェアリリースの一貫性を向上させることができます。
一般的なアンチパターン:
-
本番環境にソフトウェアを手動でデプロイする。
-
環境に合わせて手動でソフトウェアに変更を加える。
このベストプラクティスを活用するメリット:
-
ソフトウェアリリースプロセスの信頼性が向上します。
-
変更に失敗してビジネスの機能性に影響を与えるリスクが低減されます。
-
変更リスクの低減により、リリース頻度が向上します。
-
デプロイ中に予期しないイベントが発生した場合に自動ロールバックが機能します。
-
テスト済みのソフトウェアとデプロイされたソフトウェアが同じであることを、暗号化によって証明できます。
このベストプラクティスを活用しない場合のリスクレベル: 高
実装のガイダンス
持続的な人的アクセスを環境から排除するために AWS アカウント構造を構築し、CI/CD ツールを使用してデプロイを実施します。AWS Systems Manager Parameter Store などの外部ソースから環境固有の設定データを取得できるように、アプリケーションを設計します。テスト後にパッケージに署名し、デプロイ中にこれらの署名を検証します。アプリケーションコードをプッシュするように CI/CD パイプラインを設定し、canary を使用してデプロイの成功を確認します。AWS CloudFormation
実装手順
-
明確に定義された CI/CD パイプラインを構築して、デプロイプロセスを合理化します。
-
AWS CodeBuild
と AWS Code Pipeline を使用して CI/CD 機能を提供することで、セキュリティテストをパイプラインに簡単に統合できます。 -
「複数のアカウントで AWS 環境を構成する」ホワイトペーパーの「環境の分離」に関するガイダンスに従ってください。
-
本稼働ワークロードが実行されている環境への持続的な人的アクセスがないことを確認します。
-
構成データの外部化をサポートするようにアプリケーションを設計します。
-
ブルー/グリーンデプロイモデルを使用したデプロイを検討します。
-
canary を実装してソフトウェアのデプロイの成功を検証します。
-
AWS Signer や AWS Key Management Service (AWS KMS)
などの暗号化ツールを使用し、デプロイするソフトウェアパッケージに署名して検証します。
リソース
関連するベストプラクティス:
関連ドキュメント:
関連動画:
関連する例: