Docker スキャン (trivy)#
aquasecurity/trivyは、Docker イメージの脆弱性を検知する OSS ツールです。 FutureVuls では Trivy のスキャン結果を取り込み、FutureVuls 上でコンテナイメージの脆弱性を管理できます。
その他のコンテナイメージスキャン方法として、Amazon ECR や Google Artifact Registry と連携し、コンテナレジストリ上にあるDockerイメージの脆弱性をスキャンする方法があります。
Trivy によるコンテナイメージスキャンでは、以下の2パターンをご利用いただけます。
スキャン対象について#
スキャン対象は対応環境を参照してください。 その他サポート対象の言語やパッケージエコシステムの詳細は、「Trivy Supported OS」を参照してください。
ローカル環境にTrivyをインストールしてスキャンする#
Trivy をローカル環境にインストールし、コンテナイメージをスキャンした結果を FutureVuls にアップロードします。 この方法では、通常版と軽量版の2つのインストールモードが選択できます。 それぞれの違いは以下の通りです。
項目 | 説明 | 通常版 | 軽量版 |
---|---|---|---|
root権限 | インストール時にroot権限が必要かどうか | 必要 | 不要 |
対応環境 | セットアップ可能なローカル環境 | 参考 | Linux全般 |
定期スキャン | イメージを自動で定期的にスキャンするか | 対応 | 未対応 |
軽量版では root 権限が不要な代わりに、コンテナイメージのスキャンを定期的に手動で行う必要があります。コンテナイメージの構成変更を常に FutureVuls に同期し脆弱性情報を最新化しておくためにも、どちらのモードも選択可能な場合は、基本的に通常版でのスキャンをご利用ください。
新しくコンテナイメージをスキャンする#
新しくコンテナイメージをスキャンし、FutureVuls に登録する場合は次の手順に従ってください。
-
サーバタブの
サーバ追加
ボタンからダイアログを開き、コンテナイメージスキャン
を選択する -
スキャナトークンを選択し、スキャン対象コンテナイメージのイメージ名を入力する。 -
<イメージ名>:<タグ>
の形式で指定してください。 - 常に最新バージョンのイメージをスキャンする場合は、<イメージ名>:<latest>
を指定してください。 - プロキシ環境下の場合は、経由するプロキシサーバを入力する
- 軽量版を使用する場合はスイッチバーにチェックをいれる
-
画面下部に表示されているコマンドをコピーし、対象イメージを管理しているローカル環境で貼り付け、実行する - 通常版の場合は root 権限で実行してください。
-
FutureVuls にて対象グループのサーバタブに、スキャンしたイメージが追加されていることを確認 - 通常版の場合、FutureVuls に反映されるまで5~10分程度かかります。 - インストール後、すぐにスキャンを実行したい場合は次のコマンドを実行してください。 -
/opt/vuls-trivy-saas/vuls-trivy-saas.sh &> /opt/vuls-trivy-saas/vuls-trivy.log
以上で登録は完了です。 通常版をご利用の場合は、スキャナが1日1回自動で起動し、対象のコンテナイメージをスキャンして FutureVuls に反映します。
通常版では、スキャン対象コンテナイメージ/ライブラリ等のスキャンオプションを config.toml
に手動で追加可能です。
詳しくは trivy スキャンの設定をご覧ください。
また、スキャン結果が反映されない場合はコチラを参照ください。
登録済みのコンテナイメージ情報を更新する#
登録済みの構成情報を基に脆弱性情報を最新化する#
FutureVuls に既に登録済みのコンテナイメージの構成情報を基に、脆弱性情報を最新化したい場合は、FutureVuls 上から手動スキャンを実行してください。
コンテナイメージの構成情報の変更をFutureVulsに反映する#
FutureVuls に登録済みのコンテナイメージに変更があった場合は、本手順に従って FutureVuls に反映してください。
- 通常版の場合
- スキャナが1日1回自動で起動し、イメージをスキャンしているため操作は必要ありません
- 今すぐスキャナを起動したい場合は、
root
ユーザもしくはvuls-trivy-saas
ユーザで次のコマンドを実行してください。/opt/vuls-trivy-saas/vuls-trivy-saas.sh &> /opt/vuls-trivy-saas/vuls-trivy.log
-
軽量版の場合
- サーバタブで対象のコンテナイメージをクリックし、サーバ詳細ページを開く
-
構成情報を更新
ボタンをクリックしてダイアログを開く -
スキャナトークンを選択し、スキャン対象コンテナイメージのイメージ名を入力する
- プロキシ環境下の場合は、経由するプロキシサーバを入力する
- 画面下部に表示されているコマンドをコピーし、対象イメージを管理しているローカル環境で貼り付け実行する。
Trivyスキャンで設定可能なオプション#
通常版の Trivy スキャンでは、/opt/vuls-trivy-saas/config.toml
ファイルを用いて指定可能なオプションがあります。
- config.toml ファイルの構成例
[saas]
GroupID = XXX
Token = "xxxxxxxx"
Proxy = "http://name:pass@proxy:port"
[scanner]
refreshScanner = true
[images.myApp:latest]
imageName = "myApp"
tag = "latest"
uuid = "xxxxxxxx"
[libraries./xxx/xxx]
targetPath = "/xxx/xxx"
uuid = "xxxxxxxx"
オプション#
項目 | 説明 | 必須 |
---|---|---|
GroupID | スキャン結果をアップロードするグループのID | ✅ |
Token | スキャン権限をもったトークン | ✅ |
Proxy | プロキシ環境の場合に経由するプロキシサーバ | - |
refreshScanner | 毎スキャン時にスキャナを更新するかどうか true or false で指定 |
✅ |
スキャン対象のコンテナイメージ・ライブラリを手動で追加する#
コンテナイメージ#
項目 | 説明 | 必須 |
---|---|---|
[] の中 | images.<hoge> (<hoge> の中は <imageName>:<tag> と一致している必要はありません。) |
✅ |
imageName | スキャン対象のコンテナイメージの名前 | ✅ |
tag | スキャン対象のコンテナイメージのタグ | ✅ |
uuid | uuidgen 等により生成した uuid |
✅ |
ライブラリ#
項目 | 説明 | 必須 |
---|---|---|
[] の中 | libraries.<hoge> (<hoge> の中は targetPath と一致している必要はありません。) |
✅ |
targetPath | スキャン対象ディレクトリ | ✅ |
uuid | uuidgen 等により生成した uuid |
✅ |
正常にスキャンできない場合#
FAQを参照ください。