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 run -d --security-opt seccomp=/etc/docker/seccomp.python.json friendly

파일 /proc/$pid/status이 반환됩니다 seccomp 0.

그 남자에 따르면 나는 대신에 다음과 같이 기대했을 것입니다.

2 SECCOMP_MODE_FILTER

답변1

저는 전문가도 아니고, 같은 질문을 구글링해서 실제로 이 글을 찾았는데, 이런 사실을 알게 되었습니다.

아무것도 지정하지 않고 docker가 기본값을 사용하거나 또는 daemon.json명령줄에서 직접 프로필을 지정하여 Seccomp 프로필을 사용하여 Docker를 실행하고 다음을 실행하는 경우:

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

보시다시피, Docker 내부에 Seccomp 필터가 켜져 있음을 알 수 있습니다. Seccomp 프로필 없이 docker를 실행하도록 명시적으로 지시하면 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 커널에 존재하지 않습니다. 이것이 누군가에게 도움이 되기를 바랍니다.

관련 정보