![проверка docker, применен ли профиль seccomp по умолчанию](https://rvso.com/image/726805/%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%20docker%2C%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%20%D0%BB%D0%B8%20%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D1%8C%20seccomp%20%D0%BF%D0%BE%20%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E.png)
Я хочу узнать, запускает ли определенный контейнер 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,
.
Так кому же из них мне доверять?
РЕДАКТИРОВАТЬ
Еще более удивительно, что я запустил docker, явно указав фильтр seccomp
docker run -d --security-opt seccomp=/etc/docker/seccomp.python.json friendly
и /proc/$pid/status
файл возвращается seccomp 0
.
Вместо этого я бы ожидал, по словам этого человека:
2 SECCOMP_MODE_FILTER
решение1
Я не эксперт и на самом деле нашел этот пост, потому что искал в Google тот же вопрос, но вот что я обнаружил.
Если вы запускаете Docker с профилем Seccomp, либо ничего не указывая, и 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
Так что вы можете увидеть это изнутри докера. Возможно, это имеет смысл, поскольку именно процессы внутри докера должны быть ограничены профилем 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. Надеюсь, это кому-то поможет.