コンテンツにスキップ

セキュリティ

Dockerも他のソフトウェア同様にセキュリティに気を配る必要があります。

rootユーザを使わない

rootユーザはCapabilityで制御されてはいますが、コンテナ内に侵入されたときに最小限の影響に留めるためにも過剰な権限は基本的に不要です。
Docker Image のデフォルトがrootユーザのイメージは多いので注意が必要です。
USER コマンド使用してユーザーを変更しましょう。

野良のDockerイメージをベースイメージにしない

所謂ユーザー製のイメージをベースイメージとして使うことはリスクです。
悪意を持った野良イメージは過去に何度も登場し、マイニングや攻撃などが行われました。
また、Dockerfileが公開されていた場合でも今後更新される可能性は十分にあります。
基本的にベースイメージは公式のものをしようするようにしましょう。

ビルド時に機微情報を与えない

ビルド時にパスワードや秘密鍵のような機微情報を与えないようにしましょう。
Dockerのビルドはレイヤー毎にスナップショットがとられ、中間イメージも実行することができます。
どうしても必要な場合は --secret--ssh オプションを使用してセキュアにビルドをしましょう。

また、パスワードや接続情報などは環境変数やVaultなどへ格納しましょう。

ホストのファイルのマウントの仕方

ホストのファイルをマウントする際は十分に注意してマウントを行いましょう。
最小限の権限とパスで範囲を狭くするようにします。
また、特に注意が必要なのはdockerソケットです。
近年、CIや監視などでdockerソケットのマウントを要求するソフトウェアが増えてきました。
安易に与えるのは控え、ソケットをマウントしなければならない場合はRead-Onlyでマウントするようにしましょう。

.dockerignore ファイルを使う

Dockerビルド時に無視するパスを記述するファイルです。 .gitignore のようなイメージに近いです。
.env のようなDBへの接続情報やSaaSのアクセスキーが記載されているファイルをビルドに含めてしまう。
他にも .gitnode_modules のようなビルド時に不要なパスは無視することでビルドが高速かつイメージが軽量になるので良いでしょう。