Skip to content
Latchkey

イメージスキャンとは?出荷前に脆弱性を見つける

イメージスキャンは、既知の CVE がイメージが本番に到達する前に捉えるために、コンテナイメージの内容を脆弱性データベースと突き合わせて分析します。

イメージは、それが含むパッケージと同じだけしか安全ではなく、それらのパッケージは時間とともに既知の脆弱性を蓄積します。イメージスキャンはこのチェックを自動化します: イメージに含まれるものを一覧化し、開示された脆弱性のフィードと比較して、注意が必要なものにフラグを立てます。

スキャナが見るもの

スキャナは software bill of materials - イメージ内のすべての OS パッケージと言語依存関係 - を構築し、それぞれを NVD やディストリの advisory などの脆弱性データベースと突き合わせます。多くは漏洩した secret やリスクのある設定ミスも検出します。

深刻度とポリシー

finding は等級付けされます(低から重大まで)。一般的な CI ポリシーは、修正可能な高または重大な脆弱性で build を失敗させ、より低い深刻度や修正不可能なものは警告付きで通す、というものです。

一般的なツール

  • Trivy - 人気があり、高速で、オープンソース。
  • Grype - Anchore のスキャナ、SBOM ツールの Syft と組み合わさる。
  • Snyk や registry ネイティブなスキャナ(ECR、GHCR)で統合されたワークフローを。

典型的な gate

CI では trivy image --severity HIGH,CRITICAL --exit-code 1 myapp:ci を実行するかもしれません。非ゼロの exit は job を失敗させ、脆弱なイメージが昇格やデプロイされるのをブロックします。

pipeline におけるスキャン

脆弱なイメージが決して出荷されないよう、build の後、push や deploy の前にスキャンしましょう。大きなイメージではスキャンが遅くなることがあります。イメージを小さく保つほど(distroless、マルチステージ)、スキャンは速くクリーンになります。

重要なポイント

  • スキャンはイメージのパッケージを既知の脆弱性データベースと突き合わせます。
  • リスクのあるイメージをブロックするため、修正可能な高・重大な finding で CI を gate しましょう。
  • 小さいイメージはスキャンが速く、finding が少ない傾向があります。

関連ガイド