我想知道特定的 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
正如您所看到的,您確實可以看到 Seccomp 過濾器位於 docker 內部。如果您明確告訴 docker 在沒有 Seccomp 配置檔案的情況下運行,您將得到 0。
docker run -it --security-opt seccomp=unconfine alpine /bin/sh
/ # grep Seccomp /proc/1/status
Seccomp: 0
所以你可以從docker裡面看到它。也許這是有道理的,因為 Docker 內部的進程需要受到 Seccomp 配置檔案的限制。
您也可以透過以下方式測試設定檔是否執行某些操作下載預設設定文件並從中刪除一些內容,例如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 核心中不存在這個。我希望這對某人有幫助。