コンテナセキュリティツール「Dockel」を使う

10/22/2020

Dockerイメージのセキュリティをチェックする際に Dockel が使えます。
先日作った90年代風HPのDockerfileから作成したイメージで使ってみます。

Dockelインストール

Macの場合は以下コマンド1行のみ。

$ brew install goodwithtech/dockle/dockle

Dockel実行

$ dockle [イメージ名]

2020-10-23T00:23:59.850+0900	WARN	A new version v0.3.1 is now available! You have v0.1.16.
WARN	- CIS-DI-0001: Create a user for the container
	* Last user should not be root
INFO	- CIS-DI-0005: Enable Content trust for Docker
	* export DOCKER_CONTENT_TRUST=1 before docker pull/build
WARN	- CIS-DI-0006: Add HEALTHCHECK instruction to the container image
	* not found HEALTHCHECK statement
PASS	- CIS-DI-0007: Do not use update instructions alone in the Dockerfile
PASS	- CIS-DI-0008: Remove setuid and setgid permissions in the images
PASS	- CIS-DI-0009: Use COPY instead of ADD in Dockerfile
PASS	- CIS-DI-0010: Do not store secrets in ENVIRONMENT variables
PASS	- CIS-DI-0010: Do not store secret files
PASS	- DKL-DI-0001: Avoid sudo command
PASS	- DKL-DI-0002: Avoid sensitive directory mounting
FATAL	- DKL-DI-0003: Avoid apt-get/apk/dist-upgrade
	* Avoid upgrade in container : /bin/sh -c apk update &&     apk upgrade &&     apk add --no-cache         gcc         g++         libc-dev         libxml2-dev         linux-headers         make         nodejs         postgresql         postgresql-dev         tzdata         less         yarn &&     apk add --virtual build-packs --no-cache         build-base         curl-dev
PASS	- DKL-DI-0004: Use apk add with --no-cache
PASS	- DKL-DI-0005: Clear apt-get caches
WARN	- DKL-DI-0006: Avoid latest tag
	* Avoid 'latest' tag
PASS	- DKL-LI-0001: Avoid empty password
PASS	- DKL-LI-0002: Be unique UID
PASS	- DKL-LI-0002: Be unique GROUP

ちらほら WARN が見えます。
latestタグ使ってねとか、HEALTHCHECK stateが必要ですという警告ですね。直そう。
ユニークなUIDやGROUP使ってるか等も見てくれていて便利ですね。

JSONで出力する

-f json オプションを使うと、JOSNで出力できます。

{
  "summary": {
    "fatal": 1,
    "warn": 3,
    "info": 1,
    "pass": 12
  },
  "details": [
    {
      "code": "CIS-DI-0001",
      "title": "Create a user for the container",
      "level": "WARN",
      "alerts": [
        "Last user should not be root"
      ]
    },
    {
      "code": "CIS-DI-0005",
.
.
.

便利。

詳しくはgithubへ

Starも多くまずまずメンテされています。

https://github.com/goodwithtech/dockle#installation

©️ 2020 ふじい Dev-Remo-Work.