docker scanコマンドについて
どうも,ましです
いつのまにかdocker scan
コマンド がmacで使えるようになっていたので調べてみました.
概要
docker scan イメージ名
でそのイメージの脆弱性チェックを行うことができます.
例えばhello-world
イメージに対して実行すると以下のようになります.
no vulnerable paths found
とあるように,問題は見つからなかったようです.
では次にgolang:1.16.3-buster
イメージに対して実行してみましょう.
160の脆弱性が存在すると警告されましたね.脆弱性1つ1つに
Info:
とURLが記載されています.試しに1つ
Insufficient Entropy in gcc-8 | CVE-2019-15847 | Snyk
を見てみると,gccのversionが古いことによる脆弱性のようです. 使用する際にgccのバージョンを上げるなどで対応できそうですね.
また,docker scan -f Dockerfile イメージ名
というようにイメージを生成するDockerfileを渡してあげることでbase imageをupgradeする推奨までしてくれます.
これは何
docker scan
で実行されているのは scan-cli-pluginのようです.
さらにこのツールは Snyk のAPIを用いてscanをしているようです.
2020年5月にdockerとのパートナーシップを発表していました.
Snykの無料プランを試してみましたがGithubと連携することでDockerfileやpackegeファイルなどをScanし修正のPRも出してくれるのがかなり良いですね.
Snyk Security upgrade alpine from 3.13.0 to latest
Trivyとの比較
同じようなコンテナの脆弱性スキャンツールに Trivyがあります.優劣をつけたいわけではありませんが,どう違うのかを確認してみたいと思います.
スキャン対象は golang:1.16.3-buster
です.
docker scan
見つかった脆弱性は160個・かかった時間は約60秒でした.
Trivy
見つかった脆弱性は586個・かかった時間は約34秒でした.しかし,これは初回のDBダウンロードも含めた結果です.
DBのダウンロードが終わった状態では 500ミリ秒ほどで終わりました.
終わりに
CLIツールとしてはTrivyの方が使いやすそうですが,Snykは自動で修正のPRを出す機能などが非常に魅力的ですね.両方の良いとこ取りをしていきたい👀 脆弱性対策は後回しになりがちなので,できる限り自動化して対策していきたいところです.
タグ
Loading...