Q69 — AWS DVA-C02 第3章

第 69/100 問 | ← 第3章

企業は、コンテナイメージが実行状態に入る前にそのセキュリティを強化したいと考えています。同社のアプリケーションは、Amazon Elastic Container Registry (Amazon ECR) をイメージレジストリとして、Amazon Elastic Kubernetes Service (Amazon EKS) をコンピューティングとして、AWS CodePipeline をコンテナ統合および継続的インテグレーション/継続的デリバリー (CI/CD) ワークフローとして使用しています。新しいコンテナイメージが EKS クラスター内の開発名前空間にデプロイされた後、ステージングアプリケーションのテストがパイプラインの最終段階で実行されます。開発者は、CI/CD パイプライン内でより早期にコンテナイメージのセキュリティ分析を実施するための分析段階をデプロイ前に追加したいと考えています。この要件を最も効率的に満たす解決策はどれですか?

正解: B. コンテナイメージのビルド後に実行される新しい CodePipeline ステージを作成します。ECR の基本イメージスキャンを、イメージのプッシュ時に実行するように設定します。AWS Lambda 関数をアクションプロバイダーとして使用します。Lambda 関数を構成してスキャン結果を確認し、問題が検出された場合にパイプラインを失敗させます。

解説

CI/CD プロセスへの統合:選択肢 B では、コンテナイメージのビルド後のパイプライン段階でセキュリティスキャンを実行することを提案しています。これは理想的なタイミングであり、ECR にイメージをプッシュする前にスキャンを行うことで、イメージが EKS クラスターに入る前にスキャン結果を把握できます。 ECR の基本イメージスキャンの利用:AWS ECR は、イメージのプッシュ時に自動的にセキュリティスキャンを実行する基本的なイメージスキャン機能を提供しています。これにより、レジストリ内の各バージョンのイメージがプッシュされる際に必ずスキャンされます。 Lambda 関数によるアクションプロバイダー:AWS Lambda はアクションプロバイダーとして使用でき、スキャン結果を確認し、問題が検出された場合にパイプラインを失敗させるように構成できます。Lambda 関数は CodePipeline のワークフローに統合され、自動化されたセキュリティテストおよびパイプラインの状態管理を実現します。 他の選択肢との比較理由: 選択肢 A:ローカルでイメージをビルドし、docker scan コマンドを実行することでスキャンは可能ですが、これは開発者の手動ステップに依存しており、自動化された CI/CD パイプラインの要件には適合しません。 選択肢 C:ソースコード取得段階でのセキュリティスキャンは早すぎます。この時点ではまだイメージが生成・プッシュされておらず、EKS クラスターに入る前のイメージに対するセキュリティスキャンという要件を満たしません。 選択肢 D:デプロイ段階でスキャンを実行してもデプロイ前のセキュリティチェックは可能ですが、問題が発見された際の対応が複雑になりやすく、ECR へのプッシュ直後にスキャンを実行するというベストプラクティスにも反します。 したがって、選択肢 B は、CI/CD プロセスへのセキュリティスキャンの統合に最も適しており、イメージが EKS クラスターにデプロイされる前に必要なセキュリティテストおよび検証を確実に行います。