0
0

More than 1 year has passed since last update.

Fargateで読み取り専用ルートファイルシステムで動作させる場合の考慮

Last updated at Posted at 2023-01-13

読み取り専用ルートファイルシステム

  • コンテナ上のファイルシステムへの書き込みを禁止する設定
  • 起動中にファイル書き込みができないため、セキュリティレベルが結構上がる
  • 多くの場合、一時ファイル、PID生成、ソケットファイル生成などの挙動があるため、単純に本機能を有効にしただけでは、書き込みエラーでプロセスが上がってこないので、この辺りは調べないといけない

どのように設定すればよいか

AWS側

タスク定義に下記を追記

{
  readonlyRootFilesystem = true
}

アプリケーション側

  • 書き込みが必要なディレクトリのみをDockerfileのVOLUMEでマウントする
  • そうすると、ホストのファイルシステムへの書き込みができるようになる。
  • また、このボリュームは揮発性であるため、コンテナ削除のタイミングでボリュームも削除される

FROM alpine:3.11.3

RUN mkdir -p /hoge /fuga

VOLUME ["/hoge"]

DockerfileのVOLUMEパラメータ

  • これ実は使ったことがなかったので少し調べた
  • docker volume lsで表示されるDocker volumeとは別物
  • VOLUMEで指定したファイルシステムは他コンテナからマウントできる
  • イメージ的には、Dockerで作るファイルサーバと思うと納得
  • ローカルというか通常パッケージでインストールするDockerエンジンでは揮発性ではない(はず)

検証

上記のDockerfileをビルドし起動

docker run -it --name work volumetest sh

コンテナ内でテストファイルを作成

# touch /hoge/aaa /fuga/bbb
# ls -l /hoge/ /fuga/

/hoge/:
total 0
-rw-r--r--    1 root     root             0 Jan 13 01:57 aaa

/fuga/:
total 0
-rw-r--r--    1 root     root             0 Jan 13 01:57 bbb

# exit

別コンテナからVolumeをマウント

docker run --rm -it --volumes-from work alpine sh

/hogeにはファイルがあるが、/fugaにはないことが確認できる。

/ # ls /hoge
aaa
/ #
/ # ls /fuga
ls: /fuga: No such file or directory
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0