OWASP ZAPのコンテナを日本語対応させる
Webアプリケーションの脆弱性検査をするOWASP ZAPというツールを日本語環境で使用するためのメモです。
GitHub Container Registryから入手できるOWASP ZAPのコンテナイメージは日本語フォントが含まれていないため、WebSwingのGUIで言語設定を日本語にすると文字化け(豆腐)してしまいます。
毎回コンテナに入って日本語フォントを追加するのが面倒になったので、Dockerfileでカスタムイメージを作りdocker composeで設定の永続化の指定を行うようにしてみました。
コンテナイメージ作成と起動
Notoフォントを追加インストールする例です。
パッケージマネージャに収録されている別のフォントや、自前でフォントを組み込むこともできます。
Dockerfile
FROM ghcr.io/zaproxy/zaproxy:stable
USER root
RUN apt-get update && \
apt-get -y install fonts-noto-cjk
USER zap
docker-compose.yml
version: "3.7"
services:
zaproxy:
image: zaproxy-ja
build:
context: .
environment:
TZ: Asia/Tokyo
command: zap-webswing.sh
ports:
- 8080:8080
- 8090:8090
volumes:
- ./wrk:/zap/wrk
- ./home:/home/zap
同じディレクトリ内にDockerfileとdocker-compose.ymlを置いて、下記コマンドでビルドするとzaproxy-jaというコンテナイメージが作られます。
docker compose build --pull
--pullオプションを付けておくことで、最新のイメージが存在する場合はpullしてからビルドが実行されます。
今回の例ではdocker-compose.ymlを置いたディレクトリ内でボリューム永続化をしているため、あらかじめコンテナ内のzapユーザー(UID=1000)が読み書きできる権限でディレクトリを作成しておきます。
mkdir wrk home
chown 1000:1000 wrk home
準備が完了したので、コンテナを起動します。
docker compose up
この方法で起動したときはCtrl+Cでコンテナを終了できます。
初回の設定
Webブラウザからhttp://localhost:8080/zapにアクセスすることでGUIが起動します。
初回は英語設定になっているので、言語の設定をします。
設定目的でセッションの保存は必要ないので、No. I do not want to persist this session at this moment in timeを選択してStartします。

ToolsメニューからOptions...を開きます。

Languageの項目を開き、Languageプルダウンから日本語を選択します。

一旦OWASP ZAPを終了し、再度GUIを起動し直すと言語設定が反映されます。
