企業がクラウドインフラストラクチャに移行するにつれ、デプロイプロセス全体が劇的に変化しました。これによりコンテナとKubernetesの利用が増加しています。コンテナはマイクロサービスアーキテクチャアプリケーションの構成要素として機能し、企業は単一のモノリシックアプリケーションではなく、異なるユースケース向けに複数のサービスを稼働させています。この移行は開発チームに多くの利点をもたらす一方で、様々なセキュリティ上の課題も伴います。そこでコンテナセキュリティスキャンが重要になります。
コンテナセキュリティスキャンツールは、コンテナエコシステム内のセキュリティ脆弱性を発見し、防止するのに役立ちます。企業は、CI/CDパイプラインのビルドプロセスにおいて、これらのツールを頻繁に利用しています。
本ブログ記事では、コンテナスキャナーの定義、コンテナで発見される一般的な脆弱性、およびそれらの回避方法について解説します。さらに、コンテナセキュリティスキャンツールを利用する主な目的と利点についても議論します。
コンテナセキュリティスキャンとは?
コンテナセキュリティスキャンとは、様々なスキャンツールを用いてコンテナイメージ内のセキュリティ脆弱性を調査するプロセスです。対象となるコンテナは静的状態でも実行中状態でも構いません。コンテナセキュリティスキャンの最終目的は、脆弱性、クラウドインフラにおける設定ミス、コンプライアンス違反を発見することにあります。
運用環境で使用されるコンテナのセキュリティ確保は極めて重要です。これらは脅威アクターの侵入経路となり得るためです。コンテナセキュリティスキャンツールは、企業がサプライチェーン環境全体のセキュリティを確保するための重要な手段となります。
コンテナセキュリティスキャンの種類
前節で述べたように、コンテナセキュリティスキャンツールは実行時モードまたは静的モードでコンテナをスキャンできます。それぞれ動的解析と静的解析と呼ばれます。これらについて詳しく見ていきましょう。
- 静的解析:これは、コンテナレイヤーのイメージに対して脆弱性テストを効果的に実施し、ベースイメージ、コード、アプリケーションの依存関係に存在する脆弱性を検索することを意味します。静的解析は通常、ソフトウェアのビルドフェーズで行われ、問題を早期段階で特定するのに効果的です。
- 動的解析: 動的解析は、コンテナの構成要素に加え、実行フェーズにおけるコンテナの動作や相互作用を解明する別の側面です。実行中のコンテナをリアルタイムで監視し、脅威や活動異常を検知します。
コンテナセキュリティスキャンの主要目的
コンテナ化されたアプリケーションを使用する際には、頻繁なコンテナセキュリティスキャンを実施することが重要です。このプロセスは、セキュリティ態勢全体の向上に向けた複数の目的達成に寄与します。本セクションでは、これらの目的について詳細に説明します。
1.コンテナイメージ内の脆弱性の特定
コンテナセキュリティスキャンの主な目的の一つは、コンテナ内のセキュリティ脆弱性を特定することです。これらの脆弱性は、コンテナで使用されるベースイメージ、またはコンテナにインストールされたサードパーティパッケージのいずれかに存在する可能性があります。企業は、このデータを活用して開発者がコンテナを保護し、攻撃者による悪用を防ぐよう支援することが多い。コンテナの脆弱性数が多すぎる場合や企業のリスク許容度を超える場合、デプロイをブロックすることも可能である。
2. 設定ミスとセキュリティリスクの検出
コンテナセキュリティスキャンは脆弱性の特定だけでなく、コンテナに関連する設定ミス(誤った権限設定、rootアクセス使用、情報漏洩など)の発見にも役立ちます。組織はコンテナが安全に設定されていることを確認し、不正アクセスや攻撃者の侵入経路となることを防ぐ必要があります。
3.セキュリティ基準への準拠確保
コンプライアンスとは、特定のガイドラインや条件に従うことを指します。企業は顧客の信頼やセキュリティなど様々な理由でコンプライアンスを遵守する必要があります。コンプライアンスは業界によって異なり、医療企業ではHIPAAが適用されます。SOC IIやHIPAAなどのコンプライアンス基準は、コンテナのセキュリティを確保するための厳格なガイドラインを定めています。企業がこうした規制に違反した場合、規制当局から多額の罰金を科せられます。コンテナセキュリティスキャンツールは、コンテナがリスクから保護され、コンプライアンス要件に従って動作していることを保証します。
4. 安全でないコンテナのデプロイ防止
前述のように、企業はCI/CDチェックの一環として安全でないコンテナのデプロイを防止できます。このブロックは通常、脆弱なコンテナが本番環境(プロダクション)に展開されるのを防ぐために行われます。これにより、アプリケーションを利用する誰もが既知の脆弱性を利用してハッキングを試みる可能性を排除します。目的は、攻撃者がシステムを侵害し機密情報を漏洩させることを防ぐことです。
コンテナセキュリティスキャンの主要コンポーネント
コンテナセキュリティスキャンは、複数のコンポーネントが異なる役割を担う長期的なプロセスです。これらの主要コンポーネントを理解しましょう。
イメージスキャン
コンテナとイメージは関連用語ですが、開発者によって互換的に使用されます。イメージは、アプリケーションに必要なすべてを含む完全なパッケージと考えてください。これにはアプリケーションのコード、実行時環境などが含まれます。一方、コンテナは同じイメージの実行インスタンスです。コンテナは分離された環境ですが、相互に通信できます。
イメージスキャンとは、前述のパッケージをスキャンするプロセスです。このプロセスの一環として、コンテナセキュリティスキャンソリューションは、ベースイメージ、アプリケーションコード、およびアプリケーションが使用する依存関係に存在する脆弱性を検出しようとします。
構成評価
構成検証または評価は、コンテナとその周辺環境に不安全な構成(いわゆる誤設定)が存在しないことを確認するために使用されます。一般的な誤設定には、デフォルトパスワードの使用、不安全なパスワード、ハードコードされたAPIキーやトークンなどが含まれます。
脆弱性検出
脆弱性検出は、コンテナセキュリティスキャンソリューションのもう一つの構成要素です。このコンポーネントは、コンテナのソフトウェアコンポーネント内の脆弱性を検出するために使用されます。OSV、Github Advisory、NIST脆弱性データベースなどの脆弱性データベースを使用して、ソフトウェア内の既知の脆弱性のリストを取得します。
コンプライアンスチェック
コンプライアンスチェックコンポーネントは、使用中のコンテナがガイドラインに従っているかどうかを頻繁にスキャンして検証するために使用されます。コンプライアンスのスキャンには、コンテナがCISベンチマークやNISTなどのガイドラインに準拠していることを確認することが含まれます。
実行時監視
実行時監視の目的は、コンテナが稼働状態にある際にリアルタイムで脅威を特定することです。これには、悪意のあるドメインへの大量のアウトバウンド通信送信など、コンテナによる異常な動作のチェックも含まれます。
ランタイムセキュリティは日常的なセキュリティ問題の特定に非常に有用であり、保護層として機能します。
コンテナセキュリティスキャナーの仕組みとは?
ほとんどのコンテナセキュリティスキャンソリューションは、コンテナ内の情報を確認し、マルチステップアプローチを用いてランタイムの脆弱性をチェックすることで動作します。このプロセスは、静的解析、動的解析、ランタイム監視の優れた要素を組み合わせ、あらゆる瞬間にコンテナのセキュリティ状況を完全に把握できるようにします。
このスキャンプロセスは通常、コンテナの静的解析から始まります。コンテナスキャナは、ベースオペレーティングシステム、インストール済みパッケージ、アプリケーションコードなど、イメージのレイヤーを調査します。その後、既知の脆弱性データベースやセキュリティアドバイザリとコンポーネントを照合し、リスクを判断します。
動的解析と実行時モニタリングは、コンテナが起動して実行されている場合にのみ実行されます。動的分析では、異常な動作や、セキュリティアラームを発生させる可能性のある信頼できないドメインや悪意のあるドメイン、ネットワークなどとの通信を検知することで実施されます。コンテナランタイムが提供するハートビートおよびパフォーマンスイベントデータストリームを購読し、特定のコンテナの動作(作成/開始/停止/削除など)、ネットワーク接続、リソース使用パターンを継続的に監視します。
FAQs
コンテナセキュリティスキャンとは、コンテナイメージおよび稼働中のコンテナをスキャンし、脆弱性、設定上の問題、コンプライアンス違反を検出するプロセスです。コンテナセキュリティスキャンの目的は、コンテナがあらゆる脆弱性から保護されていることを保証し、それによって金銭的損失や評判の毀損といった企業への深刻な損害を回避することにあります。
コンテナスキャンは、アプリケーションが使用するベースイメージと依存関係における脆弱性、設定ミス、コンプライアンス違反を特定できます。また、コンテナが出荷(またはデプロイ)される前に、セキュリティ上の脅威の特定やコンテナのセキュリティ状態の判断を支援します。
DevSecOpsにおけるコンテナスキャンとはとは、コンテナが本番環境にデプロイされる前にセキュリティ問題を早期に特定することを目的として、アプリケーション開発パイプラインにコンテナスキャンを組み込むことを指します。
コンテナ脆弱性スキャンとは、脅威アクターによる攻撃や機密情報(PII)への不正アクセスを防ぐため、コンテナ内の脆弱性を特定する体系的かつ多段階のプロセスと定義できます。
コンテナセキュリティで使用可能なツールには、Docker Security ScanningとClairがあります。これらのツールは、コンテナ化されたアプリケーションのリスク発見、設定ミスの特定、コンプライアンス問題への対応を通じて、徹底的なコンテナセキュリティを実現します。

