概要
Dockle を利用してコンテナベストプラクティスに沿っているかチェックしたい。
機能は Docker Best Practice または CIS Benchmarks に従っているかをチェックしてくれる。
- Checkpoint Summary
- ex) コンテナ用のユーザが作成されているか
Dockerfile 内に機密情報が記載されてないかなど
- ex) コンテナ用のユーザが作成されているか
hadolint との違いはチェック対象。機能も若干 Dockle が多いがフェーズごとに使い分けたい。
hadolint: DockerfileDockle: コンテナイメージ
Trivy もコンテナイメージへのスキャンが可能。違いはチェック基準。
Trivy: CVE などの脆弱性データベースに基づいたチェックDockle: CIS ベンチマークに基づいたチェック
Dockle チュートリアル
準備
Mac の場合。
$ brew untap goodwithtech/dockle # who use 0.1.16 or older version
$ brew install goodwithtech/r/dockle
$ dockle [YOUR_IMAGE_NAME]
チェック
手元にあった Next.js のコンテナイメージをチェック。
$ dockle next-local:test
INFO - CIS-DI-0005: Enable Content trust for Docker
* export DOCKER_CONTENT_TRUST=1 before docker pull/build
INFO - CIS-DI-0006: Add HEALTHCHECK instruction to the container image
* not found HEALTHCHECK statement
以下2つが出力。
INFO - CIS-DI-0005: Enable Content trust for Docker- イメージの信頼性、整合性のチェック。
INFO - CIS-DI-0006: Add HEALTHCHECK instruction to the container image- ヘルスチェックがないとのこと。
既知のアラートとして無視したい場合は --ignore, -i を使う。
$ dockle -i CIS-DI-0005 -i CIS-DI-0006 next-local:test
アラートレベルによって処理を継続させたくない場合は --exit-code と --exit-level を組み合わせる。
$ dockle --exit-code 1 --exit-level fatal next-local:test #INFOが1個でも出たら
$ dockle --exit-code 1 --exit-level fatal next-local:test #FATALときのみ

コメント