SEC11-BP02 開発およびリリースライフサイクル全体を通じてテストを自動化する
開発およびリリースライフサイクル全体を通じて、セキュリティ特性のテストを自動化します。自動化により、リリース前にソフトウェアの潜在的な問題を一貫して繰り返し確認することが容易になります。これにより、提供されるソフトウェアにおけるセキュリティ問題のリスクが減ります。
期待される成果: 自動化テストの目標は、開発の初期段階に、また多くの場合開発ライフサイクルをとおして、潜在的な問題を検知するプログラムを使用した手段を提供することです。リグレッションテストを自動化すると、すでにテスト済みのソフトウェアに変更を加えた後も、そのソフトウェアが期待どおりに動作することを確認するための機能テストおよび非機能テストを実行できます。機能していない認証、または不足している認証など、一般的な設定ミスをチェックするためのセキュリティユニットテストを定義すると、開発プロセスの初期にこれらの問題を識別し修正できます。
テストの自動化では、アプリケーションの要件と期待される機能性に基づいた、アプリケーション検証の目的別テストケースを使用します。自動化テストの結果は、生成されたテスト結果とそれに対応する期待される結果の比較に基づき、全体的なテストライフサイクルを促進します。リグレッションテストやユニットテストスイートなどのテスト手法は、自動化に最も適しています。セキュリティ特性のテストを自動化することで、ビルダーはセキュリティレビューを待つことなく、自動化されたフィードバックを得ることができます。静的または動的なコード分析の形式の自動化テストは、コード品質を改善し、開発ライフサイクルの初期での潜在的なソフトウェアの問題の検知に役立ちます。
一般的なアンチパターン:
-
テストケースおよび自動化テストの結果のコミュニケーションの欠如。
-
リリース直前のみでの自動化テストの実施。
-
頻繁に変更される要件に関する自動化テストケース。
-
セキュリティテストの結果への対処方法に関するガイダンスの欠如。
このベストプラクティスを活用するメリット:
-
システムのセキュリティ特性を評価するチームへの依存の低減。
-
複数のワークストリームにわたる一貫した検出結果による一貫性の向上。
-
本稼働ソフトウェアでのセキュリティ問題の低減。
-
ソフトウェアの問題を早期に検知することにより、検知から修正までの時間を短縮。
-
システム的な動作、または複数のワークストリームにわたって繰り返される動作の可視性の向上により、組織全体での改善を促進。
このベストプラクティスが確立されていない場合のリスクレベル: 中
実装のガイダンス
ソフトウェアを構築する際は、アプリケーションのビジネスロジックに基づいた機能性要件と、アプリケーションの信頼性、パフォーマンス、セキュリティにフォーカスした非機能性要件の両方をテストする、ソフトウェアテストのさまざまなメカニズムを採用します。
静的アプリケーションセキュリティテスト (SAST) は、ソースコードの異常なセキュリティパターンを分析し、脆弱性のあるコードを検知します。SAST はさまざまな既知のセキュリティ問題のテストにおいて、ドキュメント (要件仕様、設計文書、設計仕様) やアプリケーションのソースコードなどの、静的なインプットに依存します。静的コードアナライザーは、大規模なコードの迅速な分析に役立ちます。NIST の品質グループ
潜在的な予期していない動作を識別するため、実行中のアプリケーションでテストを実施する、動的分析セキュリティテスト (DAST) によって静的テストを補完します。動的テストは、静的分析では検知できない潜在的な問題の検知に使用できます。コードリポジトリ、ビルド、パイプラインステージでテストを実施することで、コード内にあるさまざまなタイプの潜在的な問題をチェックすることができます。Amazon CodeWhisperer
開発者のためのセキュリティワークショップ
SDLC を進める中で、セキュリティチームと一緒に定期的なアプリケーションレビューを含む反復プロセスを確立します。リリース準備レビューの一部として、これらのセキュリティレビューで得たフィードバックに対処し検証します。これらのレビューにより、アプリケーションの堅固なセキュリティを確立でき、潜在的な問題に対処するための実行可能なフィードバックをビルダーに提供できます。
実装手順
-
セキュリティテストを含む、一貫した IDE、コードレビュー、CI/CD ツールを実装します。
-
単に修正が必要な問題をビルダーに伝えるのではなく、SDLC のどこでパイプラインをブロックするのが適切かを考慮します。
-
開発者のためのセキュリティワークショップ
は、リリースパイプラインでの静的および動的テストの統合の例を提供します。 -
開発者の IDE と統合された Amazon CodeWhisperer
、コミットのコードスキャン用の Amazon CodeGuru Reviewer などの自動化ツールを使用したテストまたはコード分析の実施は、適切なタイミングでビルダーにフィードバックを提供するのに役立ちます。 -
AWS Lambda を使用した構築では、Amazon Inspector
を使用して機能内のアプリケーションコードをスキャンできます。 -
AWS CI/CD ワークショップ
は、AWS での CI/CD パイプライン構築の出発点を提供します。 -
自動化テストを CI/CD パイプラインに含める際は、ソフトウェアの問題の検知と修正を追跡するチケットシステムを使用します。
-
検出結果を生成するセキュリティテストでは、修正のガイダンスをリンクすることで、ビルダーのコード品質の改善を支援します。
-
自動化ツールからの結果を定期的に分析し、次の自動化、ビルダートレーニング、啓発活動の優先順位付けに役立てます。
リソース
関連するドキュメント:
-
アプリケーションセキュリティの AWS セキュリティコンピテンシーパートナー
-
Choosing a Well-Architected CI/CD approach
(Well-Architected CI/CD アプローチの選択) -
Monitoring CodeCommit events in Amazon EventBridge and Amazon CloudWatch Events (Amazon EventBridge と Amazon CloudWatch Events での CodeCommit イベントの監視)
-
Secrets detection in Amazon CodeGuru Review (Amazon CodeGuru Review でのシークレット検知)
-
Accelerate deployments on AWS with effective governance
(効果的なガバナンスによる AWS でのデプロイの加速)
関連動画:
-
Hands-off: Automating continuous delivery pipelines at Amazon
(ハンズオフ: Amazon での継続的デリバリーパイプラインの自動化) -
Automating cross-account CI/CD pipelines
(クロスアカウント CI/CD パイプラインの自動化)
関連する例:
-
Industry awareness for developers
(開発者向けの業界認識) -
AWS CodePipeline Governance
(AWS CodePipeline ガバナンス) (GitHub) -
Security for Developers workshop
(開発者のためのセキュリティワークショップ) -
AWS CI/CD Workshop
(AWS CI/CD ワークショップ)