2019/05/26

「Trivy」でDockerコンテナの脆弱性チェック始めました!

きっかけ

ある日、会社の先輩に以下の記事を教えてもらいました。
怖いですね(´・ω・`)

誤解のないように書いておくと、この設定ミスによってすべてのユーザーに直接的な脅威がもたらされるわけではない。
「Docker Hub」ポータル、著名コンテナの20%に設定ミス
上記のように該当コンテナを使っている全てのコンテナに影響がある訳ではないようなのでホッとする反面、やはり自分が使っているコンテナの脆弱性について無関心でいてはいけない、と考え方を改めるきっかけになりました。

「知らず知らずのうちに脆弱性のあるコンテナをデプロイしてました」という事態にならないために、今自分にできることを始めることにしました。

始めようコンテナの脆弱性チェック

私が選定のポイントにしたのは以下の2点。
  • 開発環境で気軽にササッとコンテナの脆弱性を確認できる
  • CIでコンテナの脆弱性を確認できる
イメージ的には「簡単にインストールできるCLIツール」 です。
これに120 %合致するVery niceなツールをみつけました。スッキリごん!さんが開発したTrivyです。

詳しい説明は本家のリポジトリや、作者さんのQiita記事が分かりやすいので御覧ください(・∀・)/

使ってみるよ!

なにはともあれ、まずはインストールしましょう。MacBookへはbrewで簡単にインストールできます(。・Д・)ゞ
brew install knqyf263/trivy/trivy

バージョン確認。
インストール確認も兼ねてバージョンを見てみましょう。2019/05/26 現在で最新の v0.1.1がインストールできました。

引数にコンテナイメージの名称を指定するだけで簡単にチェックできる素敵仕様です(*´ω`*)
サンプルとして、Docker入門したての頃に作ったイメージを使います。
trivy kemokemo/get-started:v0.0.1

実行結果の例。初回実行時はちょっとだけ時間を要する。
ぎゃー(´・ω・`)

CRITICALとかHIGHとかの心臓に悪そうなのが脆弱性が見つかっていますね(´・ω・`)
うん、分かってた。半年以上前に作ったっきりでメンテしてないイメージだもんね。すまん、すまん。。。

さて、出力結果としては脆弱性の総件数とその内訳を示した上で、個々の内容を表形式でキレイに表示してくれます。いい感じです(*´ω`*)

もっと使ってみるよ!

はい、手軽にコマンド一発でコンテナの脆弱性が確認できました。ちょっとここらで、コマンドオプションを見てみましょう。
ヘルプ表示結果 @ v0.1.1

ふむ、-f jsonオプションをつけることで脆弱性チェック結果レポートをJSON形式で出力できそうです。やってみましょうヽ(=´▽`=)ノ

脆弱性チェック結果レポート(JSON形式)
いいですね。

標準の表形式での表示は、人間にも読みやすくとても良いです。一方で、その結果をより詳細に解析したり後続のCI処理で条件分岐に使うような用途においては、JSONファイルに出力して利用する方法が良さそうに思います。

まとめ

Trivy使いやすくていい感じだよ!ヽ(=´▽`=)ノ

更新履歴:

  • 2020/02/09: もっと検索でヒットしやすくなるようにタイトルを変更