Trivyとは?人気コンテナ脆弱性スキャナの概要と主な特徴を徹底解説【2025年最新版】入門ガイド:初心者向け
目次
- 1 Trivyとは?人気コンテナ脆弱性スキャナの概要と主な特徴を徹底解説【2025年最新版】入門ガイド:初心者向け
- 2 Trivyでできること: 対応範囲と主な機能を詳細解説【コンテナ/ファイルシステム/コード/K8s対応】完全ガイド
- 3 Trivyのインストール方法:Linux/Mac/Windows対応の環境別手順を詳述【2025年最新版】
- 4 基本的な使い方:Trivyでコンテナイメージを脆弱性スキャンする手順と実践例をステップバイステップで解説【初心者向け】
- 5 ファイルシステムやGitリポジトリの脆弱性スキャン手順:Trivyを使ったパッケージ・ソースコード解析方法【基本】
- 6 Kubernetesクラスターやマニフェストの脆弱性スキャン方法:Trivy OperatorとOperatorなし事例
- 7 CI/CDパイプラインへのTrivy導入方法:GitHub ActionsやAzure Pipelinesで自動スキャンを実行
- 7.1 GitHub ActionsにおけるTrivy導入:ワークフロー例とセキュリティチェック設定方法を解説【初心者向け】
- 7.2 Azure PipelinesでTrivyスキャン:YAML定義によるパイプライン設定例を紹介【公式最新】
- 7.3 GitLab CIでのTrivy利用方法:.gitlab-ci.ymlサンプルとステージ設定を解説【実践例】
- 7.4 JenkinsでのTrivy統合方法:セキュリティプラグイン vs スクリプト実行を解説【Jenkins対応】
- 7.5 CIパイプラインにおけるレポート通知: SlackやTeams連携で自動アラートを実現【GitHub Actions例】
- 8 SBOM (ソフトウェア部品表) 生成と脆弱性レポートの活用方法:Trivyで作成したレポートをセキュリティ監査に活かす
- 9 よく使うTrivyオプション・設定:フィルタリングや出力フォーマットのカスタマイズ方法を紹介【実践テクニック】
- 10 Trivy運用のベストプラクティスと注意点:他ツール併用例・スケジュール設定・チームポリシー対応【管理者向け】
Trivyとは?人気コンテナ脆弱性スキャナの概要と主な特徴を徹底解説【2025年最新版】入門ガイド:初心者向け
Trivyとは、Aqua Security社が開発・提供しているオープンソースのセキュリティスキャナです。コンテナイメージやファイルシステム内のソフトウェアパッケージ、さらにはKubernetesクラスタやIaC(Infrastructure as Code)ファイルに潜む脆弱性や設定ミス(ミスコンフィグレーション)を検出できます。Trivyは設定不要でシンプルに実行できる点が特徴で、高速で初心者にも扱いやすいツールとして注目されています。
Trivyの起源と開発背景:Aqua Securityによる開発経緯と設計思想を解説【2025年最新版】
Trivyは2019年にAqua Security社から公開されたツールで、当初はDockerイメージの脆弱性検出に特化していました。Apache License 2.0のもとで開発されており、コードはGitHub上で公開されています。Aqua Securityが注力したのは「シンプルかつ高速に実行できる」ことです。従来の脆弱性スキャナが設定や運用が複雑だったのに対し、Trivyはワンバイナリで導入できデフォルト設定で使い始められる点が評価されました。現在ではコミュニティや企業ユーザーからのフィードバックを得て、脆弱性検出だけでなく幅広い機能が追加されてきています。
Trivyのスキャン機能概要:コンテナイメージとアーティファクトの脆弱性検出方法を解説【公式ドキュメント参照】
Trivyはコンテナイメージに含まれる各種ソフトウェアパッケージやライブラリに対し、既知の脆弱性(CVE)を検索します。具体的には、Debian系やAlpine、RedHat系など主要なLinuxディストリビューションのパッケージデータベースや、Python/PHP/JavaScript/Javaなどの言語向けライブラリの脆弱性情報に対応しています。さらに、アーティファクト内に存在するシークレットやライセンス違反のチェック機能も備えており、複数種類のセキュリティ診断を同時に実行できます。必要に応じてスキャン対象の範囲(Critical以上など重大度指定)やミスコンフィグの検査も行える点がTrivyの大きな特徴です。
Trivyが対応する脆弱性データベース一覧とスキャン可能なパッケージ形式を解説【2025年最新】
Trivyは複数の脆弱性データベースを参照し、検出対象を広くカバーします。Aqua Securityが公開している独自データベース(trivy-db)をはじめ、GitHub Advisoryや各Linuxディストリビューションのセキュリティトラッカー(Alpine SecDB、Red Hat CVE DB、Debian Security Trackerなど)と連携しています。また、PythonのPyPI、npm、Maven Centralなど各言語の公式レジストリ情報と統合されており、言語固有のパッケージも検査対象です。デフォルトで毎日自動更新される仕組みがあり、最新の脆弱性情報にも迅速に対応できます。
TrivyのIaCミスコンフィグスキャン機能:Terraform/Helm等のセキュリティチェックの仕組みと使い方【2025年版】
Trivyは脆弱性検知だけでなく、IaC (Infrastructure as Code) のミスコンフィグ検査機能も備えています。TerraformやCloudFormationの設定ファイル、Kubernetesマニフェスト、Helmチャートなどをスキャンし、セキュリティ上の問題点(例:パブリックに公開されたリソースや不適切な権限設定など)を検出できます。コマンドtrivy configを使えば、これらの設定ファイルを手軽に解析し、不備を指摘するレポートを出力します。Terraformの.tfファイルやHelmチャートのテンプレート内の安全性チェックにも対応しており、クラウド構成の安全性向上に役立ちます。
Trivyの特徴:使いやすさ・高速性・オールインワン性を紹介【検証結果あり】
Trivyの大きな特徴は「使いやすさ」と「高速性」です。ワンバイナリで提供され、追加インストールがほとんど不要で、初心者でも簡単に始められます。初回スキャン時には脆弱性データベースのダウンロードが必要ですが、その後はキャッシュを利用して非常に高速に動作します。加えて、SBOM(ソフトウェア部品表)の生成機能やシークレットスキャナ、ライセンスチェックなども内蔵されており、一度の実行で多彩な結果が得られます。各種オプションにより出力形式や検査条件を細かくカスタマイズできる点も評価され、総合的なセキュリティ診断ツールとして利用されています。
Trivyでできること: 対応範囲と主な機能を詳細解説【コンテナ/ファイルシステム/コード/K8s対応】完全ガイド
Trivyを使うと、コンテナイメージだけでなく様々なアーティファクトのセキュリティチェックが可能です。例えばローカルのファイルシステム上のディレクトリ全体やGitリポジトリをスキャンして、コード依存パッケージの脆弱性を検出できます。さらに前述のようにTerraformやKubernetesマニフェストのミスコンフィグ検査にも対応します。加えて、SBOMの生成やライセンスコンプライアンスチェック、Secret(パスワードやトークン)の検出など、多目的なセキュリティ機能を搭載しています。このようにTrivyは「脆弱性検出」「設定チェック」「SBOM生成」「ライセンス/シークレット検査」など複数機能をワンストップで行える点が特徴です。
Trivyによる脆弱性スキャン: コンテナイメージからファイルシステムまで対応を徹底解説
Trivyはコンテナイメージに限らず、任意のファイルシステム(ディレクトリ)やアーカイブにも直接スキャンできます。たとえばtrivy fs /path/to/dirコマンドで指定ディレクトリ内のすべてのパッケージやバイナリを解析し、脆弱性を検出可能です。コンテナイメージを対象にする場合はtrivy image イメージ名で実行し、イメージ内のルートファイルシステムをスキャンします。これによりコンテナ内外を問わず、ユーザーが用意した任意のアーティファクトを安全に診断できます。
Trivyでのコードリポジトリスキャン: パッケージ依存性チェックとソフトウェアコンポーネント分析方法を解説
ソースコード管理リポジトリのスキャンにはtrivy repoコマンドがあります。GitHubやGitLabのリポジトリURL、またはローカルのGitディレクトリを指定すると、プロジェクトの依存ファイル(requirements.txt、package.jsonなど)を解析して脆弱性を洗い出します。たとえばtrivy repo https://github.com/example/projectのように実行すると、リポジトリ内のライブラリ依存関係に含まれる既知の脆弱性がレポートされます。CI/CDパイプライン内でコミット時に自動スキャンし、脆弱性導入を早期に検出する用途に適しています。
TrivyでのIaCミスコンフィグ検査: Terraform/Helm設定ファイルのセキュリティ診断方法
前述したtrivy configコマンドでは、TerraformやHelm Charts、Kubernetesマニフェストなどの設定ファイルの静的解析が行えます。たとえばtrivy config ./terraformとすると、Terraformの*.tfファイルをルールセットに従ってチェックし、リージョン設定や認証情報管理の誤りを検出します。また、Helmチャートのテンプレートをレンダリングしてスキャンすることで、チャートが生成するKubernetesリソースの安全性も事前に確認できます。これにより、クラウドインフラ構築時のミスを未然に防ぐ助けとなります。
SBOM出力とライセンスチェック機能: CycloneDX/SPDX形式での生成例を解説【ツール利用例】
Trivyは脆弱性スキャン結果だけでなく、SBOM(Software Bill of Materials)の生成機能も備えています。--format cyclonedxや--format spdx-jsonオプションでスキャンを実行すると、コンポーネント一覧をSBOM形式で出力できます。さらに検出したライブラリのライセンス情報も併せてレポートし、ライセンス違反のチェックにも使えます。例えばtrivy image --format spdx-json --output sbom.json alpine:3.15と実行すれば、Alpine LinuxイメージのSBOMがJSON形式で生成されます。
Trivyの拡張機能: シークレット検出やプラグインによる機能追加方法【GitHub活用】
Trivyはデフォルトでも多機能ですが、プラグインによる拡張も可能です。公式に提供されるプラグインや外部開発者作成のモジュールをインストールすることで、独自ルールでのスキャンや他ツールとの連携が行えます。また、シークレット(パスワード、トークンなど)の検出モジュールもあり、例えば--scanners secretオプションで機密情報が含まれていないかチェックできます。他にもライセンスチェックや、HTML/JSON/SARIF出力のカスタムテンプレート機能など、必要に応じて結果の出力形式を工夫できます。
Trivyのインストール方法:Linux/Mac/Windows対応の環境別手順を詳述【2025年最新版】
Trivyは主要なプラットフォーム向けにパッケージが提供されており、簡単にインストールできます。Linuxではaptやyumのパッケージリポジトリ、macOSではHomebrewでインストールできます(brew install aquasecurity/trivy/trivy)。WindowsでもChocolateyパッケージがあり、choco install trivyで導入できます。さらにDockerコンテナイメージも公式に用意されており、docker run aquasec/trivyで実行できます。初回起動時には脆弱性データベースのダウンロードが行われるため、ネットワーク環境の確認も行っておきましょう。
Linux/macOS環境へのTrivyインストール手順: apt, yum, Homebrewなどパッケージマネージャーを活用
Linux環境では公式リポジトリを登録してインストールする方法が一般的です。例えばDebian/Ubuntu系では下記の手順でTrivyを導入できます:
sudo apt install wget apt-transport-https gnupg
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt update
sudo apt install trivy
Mac環境ではHomebrewからbrew install aquasecurity/trivy/trivyでインストールできます。
Windows環境へのTrivyインストール手順: Chocolateyや公式MSIパッケージの利用方法
Windowsの場合はChocolateyで配布されています。管理者権限でPowerShellまたはコマンドプロンプトからchoco install trivyを実行するとTrivyがインストールされます。あるいは、GitHubのリリースページからMSIバイナリをダウンロードして手動インストールすることも可能です。インストール後はコマンドプロンプトやPowerShellでtrivy --versionなどを実行し、正しく導入されたか確認しましょう。
DockerコンテナとしてのTrivy実行方法: Dockerイメージで最新スキャンを行うための手順を解説
また公式のDockerイメージを利用してTrivyを実行することもできます。例えばターミナルで以下のように入力すると、Docker上でTrivyが起動しイメージをスキャンできます:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image:alpine:latest
上記はホストのDockerソケットをマウントしてTrivyがイメージを直接解析する例です。ファイルスキャンや他オプションも同様にDockerコマンド経由で実行でき、環境に依存せずTrivyを試用できます。
クラウド環境でのTrivyセットアップ例: Azure CLIやAWS CLIを使った導入手順【公式ドキュメント参照】
クラウド環境でもTrivyはサポートされています。例えばAzure CLIを利用して仮想マシンにTrivyをインストールする場合、Linux VMであれば上記のapt手順と同様です。AWS EC2ではyumまたはaptで同様に導入可能です。AKS/EKS/GKE上のパイプラインでも、ビルドステップでTrivyバイナリをダウンロードし実行すれば継続的にスキャンが行えます。クラウド固有の設定(プロキシ設定や認証)に注意しながら、各サービスに応じた設定を適用してください。
インストール後の初期設定: データベース更新、キャッシュ削除と動作確認方法を初心者目線で解説
インストール後は初回実行時に脆弱性DBの更新が必要です。trivy --download-db-onlyでDBだけを更新できます。また、オフライン環境で使う場合は予めDBを取得し、TRIVY_DB_PATH環境変数で指定する方法もあります。その他、プロキシ環境下ではHTTP_PROXYなどの環境変数設定が必要になるので、動作確認時に該当変数が正しく設定されているか確認しましょう。
基本的な使い方:Trivyでコンテナイメージを脆弱性スキャンする手順と実践例をステップバイステップで解説【初心者向け】
ここではTrivyを使った基本的な脆弱性スキャン手順を紹介します。代表的なケースはDockerコンテナイメージのスキャンです。まず、スキャン対象のイメージ名(例えばnginx:latest)を確認し、コマンドtrivy image イメージ名を実行します。Trivyはイメージを読み込み、OSパッケージやアプリケーションライブラリの脆弱性を検出してレポートします。デフォルトでは見やすい表形式で結果がターミナルに出力され、脆弱度ごとにまとめられます。
Trivyコマンドの基本構文: コンテナイメージ指定とオプション利用方法を解説【トラブルシューティング対応】
基本的な実行構文はシンプルです。コンテナイメージのスキャンはtrivy image [オプション] イメージ名で行います。例えばtrivy image --severity HIGH,CRITICAL python:3.8-slimとすれば、高度と緊急度の脆弱性のみを検索できます。オプション--ignore-unfixedを付加すると、まだパッチが提供されていない脆弱性を除外できます。また--formatオプションで出力形式(JSON/SARIFなど)を指定したり、--offline-scan(クライアントモード)でサーバーを経由せずに実行することも可能です。
脆弱性レポートの読み方: Trivyデフォルト出力とJSON/SARIFフォーマット比較例付き【最新機能】
Trivyの標準出力は表形式で脆弱性を一覧表示します。各行にはパッケージ名、インストール済みバージョン、検出された脆弱性ID(CVE番号)、深刻度、説明などが含まれます。JSON出力(-f json)やSARIFフォーマットにすると機械可読な結果が得られ、CIツール連携に便利です。レポートを読む際は、影響を受けるパッケージやバージョンを確認し、優先度の高い脆弱性から対策を進めることが重要です。
スキャンオプションの使い方: 絞り込み・スキップ・深度設定でTrivyスキャンを最適化【上級者向け】
スキャン対象を絞るオプションも豊富です。前述の--severityや--ignore-unfixedの他、--vuln-typeで検出種別(OSパッケージのみやライブラリのみ)を指定できます。さらに--exit-codeや--exit-on-eolを使うとCIパイプライン内で脆弱性検出時のビルド失敗コードを設定できます。これらを組み合わせることで、運用に合わせた挙動にカスタマイズできます。
ローカルキャッシュとリポジトリ更新オプション: 効率的な脆弱性スキャンのコツ【初心者向け】
初回スキャン時には脆弱性DBをダウンロードするため時間がかかりますが、一度キャッシュされた後は高速化されます。--cache-dirでキャッシュ場所を指定したり、共有キャッシュサーバーに接続して複数ホストで効率化することも可能です。大規模環境ではキャッシュの利用やスキャン並列化(複数コンテナイメージを同時にスキャン)で、全体的な実行時間短縮を図ると良いでしょう。
実例で学ぶTrivyスキャン: 公式コンテナイメージを使った脆弱性検出の手順【サンプル付き】
例えば公式Nginxイメージをスキャンする場合は、trivy image nginx:latestを実行するだけで脆弱性が一覧表示されます。レポートではCVE番号と影響を受けるパッケージが出力されるため、脆弱度の高いものから対処できます。さらに--output report.txtで結果をファイルに保存し、チームで共有する運用例も一般的です。このようにTrivyを使えば日常的なコンテナセキュリティチェックが容易に実行できます。
ファイルシステムやGitリポジトリの脆弱性スキャン手順:Trivyを使ったパッケージ・ソースコード解析方法【基本】
Trivyではファイルシステムやコードリポジトリに対するスキャンも可能です。コンテナイメージでなく、ローカルディレクトリ(例:ビルド成果物や展開済み環境)全体をスキャンしたい場合はtrivy fs /path/to/dirを使用します。同様に、Gitリポジトリにある依存パッケージをチェックするにはtrivy repo /path/to/gitを使います。これによりビルド前のソースコードレベルでも脆弱性検出ができ、早期の品質担保に役立ちます。
ファイルシステムスキャンの基本: ディレクトリ指定とスキャンモードの使い方を解説【初心者向け】
ファイルシステムスキャンはtrivy fs [ディレクトリパス]で実行します。例:trivy fs /home/user/projectと指定すると、そのディレクトリ内のOSパッケージやバイナリを調べます。特に組み込みやベアメタル環境ではコンテナ外でパッケージがインストールされている場合があるため、コンテナ未使用環境でもTrivyで問題検出ができます。チェック対象や除外するパスは--skip-dirsや--skip-filesオプションで柔軟に指定可能です。
Gitリポジトリスキャン方法: –scannersオプションでコードとパッケージを同時解析を解説【実践】
Gitリポジトリの脆弱性チェックにはtrivy repoコマンドを使います。URLかローカルのGitディレクトリを指定し、--scanners vuln,config,secretのように検査対象を組み合わせて実行します。たとえばtrivy repo https://github.com/example/appとすると、package.jsonやDockerfileなどソース内の脆弱性・誤設定を分析します。これによりCIでコードリポジトリをクローンした直後にセキュリティチェックを自動化できます。
言語別パッケージスキャン: PythonやNode.jsプロジェクト内の依存ライブラリ診断方法【ツール比較】
プロジェクト内に含まれる言語固有パッケージの検査もTrivyで可能です。例えばPythonプロジェクトならrequirements.txtを、Node.jsならpackage.jsonやyarn.lockを解析します。Trivyはこれらの依存リストを読み取り、対応する脆弱性データベースと照合します。使用例: trivy fs --scanners vuln /path/to/python-projectにより、そのPythonプロジェクトの依存ライブラリの脆弱性を一覧化できます。
Trivyのファイルスキャンオプション解説: 追跡除外やパスフィルタリングの設定方法【実践例】
スキャン時に除外対象を設定することで誤検出を避けられます。Trivyには--ignorefileオプションがあり、特定のパッケージや脆弱性IDを除外リストにできます。また直接--skip-filesや--skip-dirsを設定して、解析から除外するファイル/ディレクトリを指定することも可能です。例えばテストフォルダや大容量データをスキャン対象外にすると、不要な警告を減らせます。
スキャン結果の整理方法: ファイルシステム全体と特定ディレクトリ別のレポート出力手法【コマンド例あり】
ディレクトリ全体や複数プロジェクトをスキャンした場合、出力が膨大になることがあります。Trivyは各ファイル/ディレクトリ毎にレポートを分けて出力する機能があり、--format jsonで詳細を階層構造で保存できます。例えばtrivy fs / --format json > report.jsonとすると、ファイルパス単位で脆弱性情報を記録できます。こうして整理した結果を分析ツールに読み込ませれば、プロジェクトやモジュール単位での状況把握も容易になります。
Kubernetesクラスターやマニフェストの脆弱性スキャン方法:Trivy OperatorとOperatorなし事例
TrivyはKubernetes環境向けにも強力な機能を提供しています。trivy k8sコマンドを利用すると、kubeconfigを通じてクラスタに接続し、NodeやPod、Deploymentなどリソースごとに脆弱性診断を実行できます。コンテナイメージだけでなく、そのリソース定義(YAMLマニフェスト)自体もスキャンするため、クラスタ内の全体的なセキュリティ状態を把握できます。またTrivy Operatorをクラスタに導入すれば、リソースが作成されるたびに自動スキャンして結果をレポート化する継続的な監視も可能です。
Trivy OperatorによるKubernetesクラスター脆弱性スキャンの自動化手順【公式ガイド】
Trivy OperatorはKubernetes上で動作するカスタムコントローラです。クラスタにインストールすると、各Podが生成されるたびに自動でTrivyスキャンが実行されます。結果はKubernetesリソース(VulnerabilityReportやConfigAuditReport)として保存でき、kubectlで確認したり、Kubernetes Dashboardに統合することもできます。運用ではCI/CDに加え、実行時クラスタの可視化を行うためにTrivy Operatorを組み合わせることが推奨されています。
Admission Controllerでのリアルタイム検査: Pod起動時に脆弱性をブロックする設定方法
Trivyには組み込みのAdmission Controller機能はありませんが、リアルタイム検査を行いたい場合はOPA GatekeeperやKyvernoなどと併用できます。Trivy自体はバッチ型ですが、Trivy OperatorのScanJobをトリガーするよう設定すれば、Podの作成時に自動的に脆弱性チェックを実行できます。その結果、脆弱性が高いイメージのデプロイを未然に防ぐ仕組みを構築することも可能です。
Kubernetesマニフェストファイルの脆弱性チェック方法:TrivyでYAML設定をスキャン【ハンズオン】
KubernetesのマニフェストやHelmチャートをスキャンする場合、trivy configが利用できます。たとえばtrivy config ./manifestsとすると、DeploymentやServiceなどのYAML設定ファイルを解析し、Kubernetesベストプラクティスに反するリソース定義(例:root権限で実行設定されている、イメージに脆弱性が含まれているなど)を検出します。これにより、クラスタ適用前に設定ミスや脆弱性の有無を確認できます。
Helmチャートの脆弱性スキャン:テンプレート解析とコンテナイメージ調査【実例】
Helmチャートはテンプレートを使用してKubernetesリソースを生成するため、Trivyでスキャンする前にレンダリングが必要です。Trivyには--helm-chartオプションがあり、指定したチャートを内部で展開してスキャンします。これにより、チャートに含まれるすべてのリソース(Deployment/Service など)に含まれる脆弱性や設定ミスを検知できます。たとえばtrivy config --helm-chart ./charts/myappとすると、Helmチャートが生成するリソースごとにチェック結果が得られます。
GKE/EKS/AKSでのTrivy導入例: マネージドKubernetes固有の注意点と設定【公式クラウドガイド】
マネージドKubernetesクラスタ(GKE/EKS/AKS)でもTrivyは利用できますが、クラスタのロール設定(RBAC)に注意が必要です。前述のTrivy Operatorを導入する場合、ClusterRoleにノードやコントロールプレーンのリソース読み取り権限を付与する必要があります。またプライベートクラスタではネットワーク設定でTrivyのDB更新アクセスやイメージプル設定が必要です。クラウドサービス固有の制約に留意しつつ、公式ドキュメントを参照して設定を行いましょう。
CI/CDパイプラインへのTrivy導入方法:GitHub ActionsやAzure Pipelinesで自動スキャンを実行
TrivyはCI/CDパイプラインとの親和性が高く、多くのCIサービス向けのサンプルやプラグインが提供されています。継続的インテグレーションの一環として、ビルド後に自動でイメージやコードをスキャンし、脆弱性検出時にはパイプラインを失敗させる設定が可能です。主要なサービスとしてGitHub Actions、Azure Pipelines、GitLab CI、Jenkinsなどに対応しており、それぞれ公式ドキュメントやコミュニティがサンプルテンプレートを公開しています。
GitHub ActionsにおけるTrivy導入:ワークフロー例とセキュリティチェック設定方法を解説【初心者向け】
GitHub Actionsでは公式/コミュニティ製のアクションを利用できます。ワークフローファイルに以下のステップを追加する例があります:
- name: Run Trivy scan
uses: aquasecurity/[email protected]
with:
image_ref: 'docker://myapp:latest'
またはシェルでTrivyを直接実行する方法もあり、ライセンスチェックと脆弱性チェックを同時に行う構成も可能です。スキャン結果はActionsのログに出力され、必要に応じてGitHubのPull Requestコメントやセキュリティアラートとして通知する実装例もあります。
Azure PipelinesでTrivyスキャン:YAML定義によるパイプライン設定例を紹介【公式最新】
Azure PipelinesではYAMLパイプラインにTrivyスキャンステップを追加します。例: - script: trivy image --format table --exit-code 1 myimage:$(Build.BuildId) のように定義し、セキュリティチェックのステージを組み込みます。またAzure DevOps用のタスクとしてTrivyが提供されており、GUIから簡単に設定することも可能です。Azure Container Registry(ACR)と連携させ、イメージプッシュ時に自動スキャンを実行するパターンもあります。
GitLab CIでのTrivy利用方法:.gitlab-ci.ymlサンプルとステージ設定を解説【実践例】
GitLab CIでは.gitlab-ci.ymlにTrivy実行ジョブを記述します。公式イメージを使う例は次の通りです:
image: aquasec/trivy
stages:
- scan
trivy_scan:
stage: scan
script:
- trivy image --exit-code 1 $CI_REGISTRY_IMAGE:latest
検出された脆弱性情報はジョブのアーティファクトに保存でき、GitLabのセキュリティダッシュボードで確認する運用も可能です。
JenkinsでのTrivy統合方法:セキュリティプラグイン vs スクリプト実行を解説【Jenkins対応】
JenkinsにはTrivy専用プラグインはありませんが、PipelineジョブのビルドステップでシェルコマンドとしてTrivyを実行できます。たとえばsh 'trivy image myimage:tag --exit-code 1'と記述するだけです。Dockerプラグインを使ってTrivyコンテナを起動する方法や、ビルドエージェントにTrivyバイナリをインストールして実行する方法もあります。スキャン結果はコンソールログに出力され、他のレポートツールと組み合わせて管理できます。
CIパイプラインにおけるレポート通知: SlackやTeams連携で自動アラートを実現【GitHub Actions例】
CIパイプラインでスキャンしたレポートを外部通知する方法もあります。たとえばスキャン結果をJSON形式でSlackに送信するか、テキスト化してTeamsに投稿するケースが考えられます。Trivyの出力をパイプ処理してメッセージングツールに送るスクリプト例が共有されています。またGitHub ActionsではTrivyの結果をGitHub Advanced Securityに連携する方法、Azure Pipelinesでは通知タスクでTeams通知を設定する例もあります。
SBOM (ソフトウェア部品表) 生成と脆弱性レポートの活用方法:Trivyで作成したレポートをセキュリティ監査に活かす
TrivyではSBOM(Software Bill of Materials)の生成機能と、検出した脆弱性を報告するレポート機能も充実しています。SBOMはソフトウェアに含まれるコンポーネントの一覧表で、使用ライブラリとそのバージョンを把握するために重要です。TrivyはCycloneDXやSPDXフォーマットでSBOMを出力できるため、コンプライアンス管理や他ツール連携に役立ちます。また脆弱性レポートはJSONやSARIF形式で取得でき、解析や監査を行う際の元データとして活用可能です。
SBOMとは何か: ソフトウェア部品表(Software Bill of Materials)の概要と重要性
SBOM(Software Bill of Materials)とは、ソフトウェアに含まれるすべてのコンポーネントの一覧表です。ライブラリやモジュールごとに名前・バージョン・ライセンス情報などを記載し、ソフトウェアサプライチェーンの透明性を高めます。SBOMを管理することで、依存ライブラリの安全性やライセンス遵守状況を把握でき、脆弱性対応や監査が容易になります。
TrivyでのSBOM生成: CycloneDXおよびSPDX形式JSON出力の作成方法【公式】
TrivyでSBOMを生成するには、スキャンコマンドに--format cyclonedxまたは--format spdx-jsonを指定します。例えばtrivy image --format spdx-json --output sbom.json myimage:latestと実行すると、該当イメージのSBOMがJSON形式で出力されます。FSスキャンでも同様にSBOM出力が可能です。生成したSBOMは依存関係の可視化やライセンスチェック、さらにSCAツールへの入力として利用できます。
脆弱性レポートのフォーマット: JSON/CSV/SARIF形式の違いと活用シナリオを解説【実践】
脆弱性スキャン結果の出力フォーマットも選択できます。デフォルトの表形式のほか、-f jsonや-f sarifで高度な解析用出力が得られます。JSON出力は自動集計や外部システムへの連携に便利で、SARIF出力はAzure DevOpsやGitHub Actionsのセキュリティレポートに読み込ませることができます。またカスタムテンプレート(HTMLやMarkdownなど)も利用可能で、プロジェクトに合わせたレポート作成ができます。
レポート活用方法: セキュリティ監査やサプライチェーン対策における応用例を紹介【最新動向】
生成したレポートはセキュリティ監査や定期レビューで活用できます。例えば開発チームでは定期的に最新スキャンレポートを共有し、脆弱性の増減を追跡します。運用部門ではレポートに基づいて対応計画を立案し、脆弱性修正の優先度を決定します。さらに社内ポリシーで「重大度が高い脆弱性が見つかったら即座に対応する」といったルールを設定する企業もあります。報告書の保存形式やレポート基準を標準化することで、複数プロジェクトの監査結果を一元管理できます。
SBOMと脆弱性管理ツール連携: Trivy出力をOSS管理プラットフォームで活用する方法【GitHub連携】
Trivyで生成したSBOMは他の脆弱性管理ツールに取り込むことも可能です。例えばOSSレポジトリのOSS Indexや商用の脆弱性管理ツールにCycloneDX/SPDXファイルをインポートすると、複数プロジェクトの脆弱性情報を一元管理できます。またSBOMを使ってコンプライアンスツールに連携したり、CIでSBOM生成レポートを証明書として利用する動きもあります。TrivyのSBOM出力はオープンな形式なので、エコシステムで幅広く活用できます。
よく使うTrivyオプション・設定:フィルタリングや出力フォーマットのカスタマイズ方法を紹介【実践テクニック】
Trivyには便利なオプションや設定が多数用意されており、スキャンを柔軟に制御できます。出力形式の変更、検出対象の絞り込み、誤検知除外設定、ネットワーク設定などが代表的です。これらのオプションを組み合わせることで、プロジェクトの要件に合わせた結果表示やスキャン挙動の調整が可能です。
出力フォーマットの変更方法: table、JSON、customテンプレートの使い分けを紹介【公式例】
出力形式は--formatオプションで変更できます。デフォルトは表形式(table)ですが、--format jsonでJSON、--format templateでカスタムテンプレート出力が可能です。Template形式を使うと、HTMLやMarkdownなど任意の形式で結果を生成できます。例:trivy image --format template --template "@/path/to/template.gotmpl" myimageと指定して、自社向けのレポートを作成することができます。
脆弱性レベルフィルタ: 重大度指定や影響範囲でTrivyスキャン結果を絞り込む方法【専門家が解説】
特定の重大度レベルだけを表示したい場合は--severityオプションが使えます。例えば--severity HIGH,CRITICALと指定すれば、高度と緊急度のみがレポートに含まれます。逆に--ignore-unfixedで未修正の脆弱性を除外したり、--vuln-type osでOSパッケージのみ、--vuln-type libraryでライブラリのみを対象とすることもできます。これらにより不要な検出を除外し、対応が必要な脆弱性に集中できます。
除外オプションの設定方法: 特定CVEやパッケージをスキャンから除外して誤検知を防ぐ【実践ガイド】
誤検知や既知問題を除外するには--ignorefileオプションで除外リストファイルを指定します。このファイルには除外したいCVE IDやパッケージ名を記述できます。また直接--skip-filesや--skip-dirsで解析から除外するファイル/ディレクトリを指定することも可能です。例えばテスト用ファイルやレガシー環境のフォルダをスキャン対象外にすると、不要な警告を減らせます。
ネットワーク・プロキシ設定: Trivyでのプロキシ環境やオフライン使用例を解説【企業向け】
Trivyはインターネット経由で脆弱性DBの更新を行うため、プロキシ環境ではHTTP_PROXYやHTTPS_PROXYの環境変数設定が必要です。またリモートレジストリにアクセスする場合は認証情報(Docker Hubなど)を設定する必要があります。さらに--registry-tokenオプションでプライベートレジストリのアクセストークンを指定してイメージをプルすることもできます。ネットワーク設定を適切に行っておくことで、スキャンが途中で失敗するリスクを低減できます。
キャッシュ活用と並列スキャン: スキャン時間短縮のためのTrivy設定テクニック【高速化チューニング】
高速化のために--cache-dirでキャッシュ保存先を指定したり、--skip-db-updateで毎回DB更新をスキップする手があります。また、Trivyは内部で並列スキャンを行う設計であり、大規模環境ではキャッシュの共有や並列度の調整(今後追加予定のオプション)でさらに効率化できます。複数イメージを一括スキャンする場合は、マシンリソースに応じて同時実行数を制御すると効果的です。
Trivy運用のベストプラクティスと注意点:他ツール併用例・スケジュール設定・チームポリシー対応【管理者向け】
Trivy導入後の運用では、定期スキャンの自動化、誤検知管理、他ツールとの併用、ポリシー適用、バージョン更新などに注意が必要です。ここでは日常運用で意識すべきポイントや、他のセキュリティツールとの組み合わせ例を紹介します。Trivyを活用するためには、単一のツールとしてではなく組織全体のセキュリティプロセスに組み込む視点が重要です。
定期スキャンのスケジューリング: CronやGitHub Actionsで自動実行させる方法を解説【初心者向け】
Trivyによるスキャンは一度限りではなく定期的に実行することが推奨されます。例えばCronジョブやCIのスケジュール機能を使い、毎日夜間に全イメージ/リポジトリを自動スキャンするよう設定できます。GitHub Actionsではワークフローを定期実行(cron)、Azure DevOpsではスケジュールトリガーでワークフローを起動する設定があります。定期実行により、新たに発見された脆弱性の検出や環境の変化を継続的に監視できます。
誤検知と脆弱性抑制: False Positive管理と除外ルールのベストプラクティス【大規模組織向け】
誤検知を放置するとアラートが増えて対応が追いつかなくなるため、適宜調整が必要です。Trivyの--ignorefileを活用し、確認済みのCVEや問題ないパッケージを除外リストに登録しましょう。また定期的にレポートを見直し、問題ないと判断した脆弱性はポリシーとして許容するなど、一貫した運用ルールをチームで決めておくと効果的です。チームで共有された方針があれば、対応漏れやミスを減らせます。
他ツール併用例: Clair, Anchore, KubeBenchとの比較とTrivy活用時の組み合わせを紹介
Trivyは多機能ですが、他ツールと組み合わせて全体のカバー範囲を広げることも有効です。例えばKubernetesのセキュリティチェックにはKubeBenchやKube-hunterを併用し、クラスタ設定の監査と脆弱性診断を分担できます。コンテナスキャンではClairやAnchoreと比較検証し、軽量スキャンはTrivy、詳細分析はClairといった役割分担も行われます。各ツールの得意分野を理解し、結果をクロスチェックすることでセキュリティ対策を強化できます。
セキュリティポリシーへの組み込み: 開発プロセスでのTrivy導入手順とCI/CD連携方法を解説【事例】
組織ポリシーに沿った運用も重要です。開発プロセスに「Trivyスキャンを必須とする」などチェック項目を組み込み、レビュー時にスキャンレポートを必ず確認する手順を定めます。また、脆弱性修正の対応期限や承認フローを策定し、発見から対応までの流れを明確にします。さらにセキュリティポリシー上で脆弱性閾値を決めることで、「重大な脆弱性がある場合はリリース禁止」といったゲートキープを実現できます。
アップデート管理: Trivyバージョンと脆弱性DB更新の重要性とメンテナンス方法【公式通知確認】
Trivy自身の定期的なアップデートも忘れずに行いましょう。新バージョンではスキャンエンジンやデータベースが更新されるため、古いバージョンでは新しい脆弱性に対応できない可能性があります。バージョン管理や自動アップデート設定を整備し、最新の安定版を適用することが重要です。またTrivyは定期的にDB更新しますが、スキャン前に最新のDBを取得するか、スケジュールして自動更新する仕組みを確立しておきましょう。これにより最新情報に基づいた信頼性の高いスキャンが維持できます。