docker はデフォルトの seccomp プロファイルが適用されているかどうかを確認します

docker はデフォルトの seccomp プロファイルが適用されているかどうかを確認します

特定の Docker コンテナがデフォルトの seccomp プロファイルを実行しているかどうかを知りたいです。コンテナの起動に使用されたコマンド ラインにも、Dockerfile にもアクセスできません。

を起動するとps aufxwww、プロセス/usr/bin/dockerd-currentにオプションがあることがわかります--seccomp-profile=/etc/docker/seccomp.json。これは確かにデフォルトの seccomp プロファイル ファイルです。

/usr/bin/docker-containerd-currentただし、コンテナ化されたアプリケーションを起動するプロセスは実行されていません。 がdocker inspect返されます: "SecurityOpt": null,

それで、どれを信頼すればいいのでしょうか?

編集

さらに驚くべきことに、seccompフィルターを明示的に指定しながらdockerを実行しました

docker run -d --security-opt seccomp=/etc/docker/seccomp.python.json friendly

ファイル/proc/$pid/statusは を返しますseccomp 0

その男性によれば、私はむしろこう予想していた。

2 SECCOMP_MODE_FILTER

答え1

私は専門家ではなく、実際に同じ質問をグーグルで検索してこの投稿を見つけたのですが、次のことがわかりました。

Seccomp プロファイルを使用して Docker を実行する場合、何も指定せずに Docker がデフォルトを使用するか、またはdaemon.jsonコマンドラインで自分でプロファイルを指定して、次のコマンドを実行します。

docker run -it alpine /bin/sh
/ # grep Seccomp /proc/1/status
Seccomp:        2

ご覧のとおり、Docker 内で Seccomp フィルターがオンになっていることがわかります。Docker に Seccomp プロファイルなしで実行するように明示的に指示すると、0 が返されます。

docker run -it --security-opt seccomp=unconfine alpine /bin/sh
/ # grep Seccomp /proc/1/status
Seccomp:        0

つまり、Docker 内からそれを見ることができます。Seccomp プロファイルによって制限される必要があるのは Docker 内のプロセスであるため、これは理にかなっているのかもしれません。

プロファイルが何かを行うかどうかをテストするには、デフォルトプロファイルをダウンロードするそこから何かを削除して(例chown:)、次を試してください。

docker run -it --security-opt seccomp=/etc/docker/myseccomp.json alpine /bin/sh
/ # touch testfile
/ # chown 100.100 testfile
chown: testfile: Operation not permitted

最後に、マニュアルページカーネル 4.14 からは次のようなものが見られるようです:

/proc/sys/kernel/seccomp/actions_avail

これは私の 4.9 カーネルには存在しません。これが誰かの役に立つことを願っています。

関連情報