コンテナセキュリティ Liz Rice 著を読んでいます。
前半でコンテナで使用される Linux の要素技術を説明して、コンテナの仕組みを把握します。
コンテナの仕組みを踏まえてコンテナセキュリティの考え方を解説します。
本記事は 4 章のプロセス ID の分離についての読書メモです。
Linux の namespace 機能と chroot を使用してプロセスを分離します。
\
で表記変更後 root ディレクトリに alpine のディレクトリを使います。
$ cd "${HOME}/workdir"
$ mkdir sample
$ cd sample
$ curl -o alpine.tar.gz https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/x86_64/alpine-minirootfs-3.19.0_rc3-x86_64.tar.gz
$ tar xvf alpine.tar.gz
$ rm alpine.tar.gz
$ cd ..
pid namespace、 mount namespace および chroot を組み合わせてプロセスを分離します。
$ sudo unshare --pid --mount --fork chroot sample sh
新たな namespace で ps を実行します。
\ ps auxf
PID USER TIME COMMAND
プロセスを確認できません。
ps は /proc ディレクトリを読み込んで動作しますが chroot で root が ${HOME}/workdir/sample
に変更されたので /porc ディレクトリが存在しないためにプロセスを表示できません。
新たな namespace で proc をマウントします。
\ mount -t proc proc proc
再度 ps を実行します。
\ ps auxf
PID USER TIME COMMAND
1 root 0:00 sh
5 root 0:00 ps af
新たな namespace のプロセスが表示されます。
またホストのプロセスは見えません。(ホストからは namespace のプロセスは見えます)。
当たらな namespace の proc ディレクトリを見ます。
\ ls -al /proc
total 4
dr-xr-xr-x 167 root root 0 Apr 20 02:07 .
drwxr-xr-x 19 1000 1000 4096 Dec 5 07:02 ..
dr-xr-xr-x 9 root root 0 Apr 20 02:07 1
dr-xr-xr-x 9 root root 0 Apr 20 02:28 5
dr-xr-xr-x 9 root root 0 Apr 20 02:28 6
dr-xr-xr-x 3 root root 0 Apr 20 02:07 acpi
...
プロセス関連のファイルが格納されています。
今回は pid namespace と mount namespace でコンテナがホストとどのように分離されているかをざっくりと概観しました。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。