最近話題になってる脆弱性検知ツールのtrivyを利用した.
流れてきには次のような感じである.
- docker imageのbuild
- trivyでのscan
- okだったらregistryにpush
trivyはそのままスキャンすると検出してもしなくても exit code
として 0
を返す.
CircleCI上で検出したときに落とす時は 0
以外を返す必要がある.
なので --exit-code 1
を指定する.
好みの問題ではあるが重要度の低い脆弱性は一旦出さないようにしている.
--severity HIGH,CRITICAL
のように指定すると HIGH
, CRITICAL
のみを検出できる.
OSに入ってるlibraryに脆弱性が存在しているがまだ対応しているバージョンがないというときがある.
そういうものを出されても対応ができないので検出しないようにしている.
--ignore-unfixed
と指定することで対応バージョンが存在しないものを検出結果から除外できる.
実際に利用しているオプションはこうである.
$ trivy --exit-code 1 --quiet --severity HIGH,CRITICAL --auto-refresh --ignore-unfixed -c --auto-refresh $DOCKER_IMAGE_REPO:$CIRCLE_BRANCH