コンテナー イメージを含むコンテナー のスキャンを自動化する
コンテナー スキャンとコンテナー イメージ スキャンという用語は、コンテナー化された環境でのソフトウェア構成分析の若干異なる側面を指しますが、同じ意味で使用されることがよくあります。 コンテナー スキャンは、一般に、コンテナー化されたアプリケーションの脆弱性、構成の誤り、またはセキュリティの問題を検出するプロセスを指します。 コンテナー内のランタイム環境、依存関係、ライブラリ、および構成設定を対象としています。 コンテナー イメージのスキャンでは、コンテナー イメージに焦点を当てます。 コンテナー イメージ内のレイヤー、パッケージ、ライブラリ、構成を調べて、セキュリティの脆弱性や古い依存関係などの問題を特定する必要があります。 イメージ スキャンは、通常、コンテナー レジストリに存在するコンテナー イメージを対象とします。
Azure DevOps と GitHub プラットフォームをサポートする多数のコンテナー スキャン ツールと手法があります。 一般に、Microsoft Defender for Cloud などのプラットフォームに依存しないサービスを利用したり、スキャン ツールを Azure Pipelines や GitHub Actions に直接組み込んだりすることができます。
Microsoft Defender for Cloud
Microsoft Defender for Cloud は、さまざまなサイバー脅威からクラウドベースのワークロードを保護するように設計されたセキュリティ対策とプラクティスを実装するクラウドネイティブのアプリケーション保護プラットフォームです。 これには、Microsoft Defender for Containers と Microsoft Defender 脆弱性管理の機能を利用したイメージとコンテナーのスキャンのサポートが含まれています。
Microsoft Defender for Containers
Microsoft Defender for Containers は、Kubernetes クラスター、コンテナー レジストリ、コンテナー イメージなどのコンテナー化された環境のセキュリティをマルチクラウド環境とオンプレミス環境全体で強化することを目的とするクラウドネイティブ ソリューションです。 その機能は、次の 4 つの主要なカテゴリにグループ化できます。
- セキュリティ体制管理 では、Kubernetes ワークロードの継続的な監視を実行して、クラウド リソースの検出、インベントリの作成、構成ミスの検出、修復ガイダンスの提供、対応するリスクの評価、Defender for Cloud セキュリティ エクスプローラーを使用したリスクハンティングの支援を行います。
- 実行時の脅威保護 は、KUbernetes クラスターの脅威検出を提供し、MITRE ATT&CK フレームワークと密接に連携し、広範なセキュリティ情報およびイベント管理 (SIEM) および拡張検出および応答 (XDR) 製品との統合を特徴としています。
- デプロイと監視により、 Kubernetes クラスターの実装とその状態の追跡が容易になります。
- 脆弱性評価 は、修復ガイダンスや自動スキャンなど、マルチクラウド リソースに対するエージェントレスの脆弱性評価を提供します。
脆弱性評価は、Microsoft Defender 脆弱性管理に依存します。
Microsoft Defender 脆弱性管理
Microsoft Defender 脆弱性管理には、Azure Container Registry (ACR) レジストリ内のイメージを対象とするトリガーベースのイメージ スキャン機能が用意されています。 各イメージの脆弱性と対応する修復を文書化したレポートが自動的に生成されます。 また、Azure Kubernetes Service (AKS) クラスターにデプロイされたコンテナーのスキャンは、Defender for Cloud でサポートされているレジストリ (ACR のほか、Elastic Container Registry (ECR)、Google Container Registry (GCR)、Google Artifact Registry (GAR) など、Amazon Web Services (AWS) と Google Cloud Platform (GCP) にネイティブのものなど) からプルされたイメージに基づいて行われます。
スキャン トリガーの条件を満たす ACR に格納されているすべてのイメージは、追加の構成なしで脆弱性を自動的にスキャンします。 これらの条件は、次の 2 つの主要なカテゴリにグループ化できます。
- プッシュ操作、インポート操作、プル操作によってトリガーされます。 プッシュまたはインポートの場合、通常、スキャンは数分以内に完了しますが、最大で 1 時間かかる場合があります。 個々のプルの後、画像は 24 時間以内にスキャンされます。
- 新しく発行された脆弱性を考慮して脆弱性レポートを更新するために、以前に脆弱性がスキャンされたイメージに対して継続的に実行されるもの。 これらのスキャンは、過去 90 日間にプッシュされたイメージ、過去 30 日間にプルされたイメージ、Defender for Cloud によって監視されている Kubernetes クラスターで実行されているイメージに対して、1 日に 1 回実行されます。
脆弱性レポートを含む推奨事項は、ACR 内のすべてのイメージと、Azure Kubernetes Service (AKS) クラスターで現在実行されているイメージに対して提供されます。 推奨される手順を実行してセキュリティの問題を修復し、レジストリ内のイメージを置き換えた後、Microsoft Defender for Cloud はイメージを自動的に再スキャンして、脆弱性が存在しなくなったことを確認します。
スキャン ツールを Azure Pipelines または GitHub Actions に直接組み込む。
コンテナーとイメージのスキャンを CI/CD パイプラインに直接組み込んで、脆弱性を自動的に特定し、コンプライアンスを確保できます。 プロセスは、DevOps セキュリティ拡張機能として利用可能な Aqua や Trivy GitHub Action など、それぞれのプラットフォームと互換性のある適切なスキャン ツールを選択することから始まります。 その後、選択したスキャン ツールをビルド プロセスに統合して、コンテナー イメージの脆弱性とコンプライアンスの問題を分析できます。 デプロイの結果を評価するには、CD ステージでコンテナー スキャンを適用する必要があります。
CI/CD 統合の一環として、スキャンでコンプライアンス違反が報告された場合に備えて、イメージの展開を防ぐことを検討してください。 GitHub でワークフローを実装する場合は、Dependabot 機能を利用して、Dockerfile、パッケージ マニフェスト、その他の構成ファイルを含むコンテナー イメージの依存関係を更新するプル要求を検出して作成します。 スキャン結果に基づいて、脆弱性の修正プログラムの適用やイメージの再構築などの修復アクションを自動化します。 プラットフォーム固有のダッシュボード、レポート、通知を利用して、スキャン結果の継続的な監視とレビューを実装します。