mesimasi Logo

docker scanコマンドについて

docker scanコマンドについて_thumbnail

どうも,ましです いつのまにかdocker scanコマンド がmacで使えるようになっていたので調べてみました.

概要

docker scan イメージ名 でそのイメージの脆弱性チェックを行うことができます. 例えばhello-worldイメージに対して実行すると以下のようになります. scan-hello-world no vulnerable paths foundとあるように,問題は見つからなかったようです. では次にgolang:1.16.3-busterイメージに対して実行してみましょう. scan-golang 160の脆弱性が存在すると警告されましたね.脆弱性1つ1つにInfo:とURLが記載されています.試しに1つhttps://snyk.io/vuln/SNYK-DEBIAN10-GCC8-469413 を見てみると,gccのversionが古いことによる脆弱性のようです. 使用する際にgccのバージョンを上げるなどで対応できそうですね.

また,docker scan -f Dockerfile イメージ名 というようにイメージを生成するDockerfileを渡してあげることでbase imageをupgradeする推奨までしてくれます. recommend-baseimage

これは何

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 blog-vuls-pr

Trivyとの比較

同じようなコンテナの脆弱性スキャンツールに Trivyがあります.優劣をつけたいわけではありませんが,どう違うのかを確認してみたいと思います. スキャン対象は golang:1.16.3-busterです.

docker scan

見つかった脆弱性は160個・かかった時間は約60秒でした. docker-scan-time

Trivy

見つかった脆弱性は586個・かかった時間は約34秒でした.しかし,これは初回のDBダウンロードも含めた結果です. trivy-vuls trivy-first-time

DBのダウンロードが終わった状態では 500ミリ秒ほどで終わりました. trivy-cached

終わりに

CLIツールとしてはTrivyの方が使いやすそうですが,Snykは自動で修正のPRを出す機能などが非常に魅力的ですね.両方の良いとこ取りをしていきたい👀 脆弱性対策は後回しになりがちなので,できる限り自動化して対策していきたいところです.

タグ

Loading...

利用規約

copyright ©めしまし All Rights Reserved.