きっかけ
ある日、会社の先輩に以下の記事を教えてもらいました。怖いですね(´・ω・`)
誤解のないように書いておくと、この設定ミスによってすべてのユーザーに直接的な脅威がもたらされるわけではない。上記のように該当コンテナを使っている全てのコンテナに影響がある訳ではないようなのでホッとする反面、やはり自分が使っているコンテナの脆弱性について無関心でいてはいけない、と考え方を改めるきっかけになりました。
「Docker Hub」ポータル、著名コンテナの20%に設定ミス
「知らず知らずのうちに脆弱性のあるコンテナをデプロイしてました」という事態にならないために、今自分にできることを始めることにしました。
始めようコンテナの脆弱性チェック
私が選定のポイントにしたのは以下の2点。- 開発環境で気軽にササッとコンテナの脆弱性を確認できる
- CIでコンテナの脆弱性を確認できる
これに120 %合致するVery niceなツールをみつけました。スッキリごん!さんが開発したTrivyです。
詳しい説明は本家のリポジトリや、作者さんのQiita記事が分かりやすいので御覧ください(・∀・)/
- knqyf263/trivy: A Simple and Comprehensive Vulnerability Scanner for Containers, Suitable for CI
- CIで使えるコンテナの脆弱性スキャナ
使ってみるよ!
なにはともあれ、まずはインストールしましょう。MacBookへはbrewで簡単にインストールできます(。・Д・)ゞbrew install knqyf263/trivy/trivy
バージョン確認。 |
引数にコンテナイメージの名称を指定するだけで簡単にチェックできる素敵仕様です(*´ω`*)
サンプルとして、Docker入門したての頃に作ったイメージを使います。
trivy kemokemo/get-started:v0.0.1
実行結果の例。初回実行時はちょっとだけ時間を要する。 |
ぎゃー(´・ω・`)
CRITICALとかHIGHとかの心臓に悪そうなのが脆弱性が見つかっていますね(´・ω・`)
うん、分かってた。半年以上前に作ったっきりでメンテしてないイメージだもんね。すまん、すまん。。。
さて、出力結果としては脆弱性の総件数とその内訳を示した上で、個々の内容を表形式でキレイに表示してくれます。いい感じです(*´ω`*)
もっと使ってみるよ!
はい、手軽にコマンド一発でコンテナの脆弱性が確認できました。ちょっとここらで、コマンドオプションを見てみましょう。ヘルプ表示結果 @ v0.1.1 |
ふむ、
-f json
オプションをつけることで脆弱性チェック結果レポートをJSON形式で出力できそうです。やってみましょうヽ(=´▽`=)ノ脆弱性チェック結果レポート(JSON形式) |
標準の表形式での表示は、人間にも読みやすくとても良いです。一方で、その結果をより詳細に解析したり後続のCI処理で条件分岐に使うような用途においては、JSONファイルに出力して利用する方法が良さそうに思います。
まとめ
Trivy使いやすくていい感じだよ!ヽ(=´▽`=)ノ更新履歴:
- 2020/02/09: もっと検索でヒットしやすくなるようにタイトルを変更