docker 로 코드 실행기를 개발중인데 시스템 접근을 차단하는 법이 있나요?

조회수 680회

Docker의 컨테이너에서 Exec으로 파이썬 코드를 실행하고자합니다.

Golang의 dockerclient를 이용하여 exec까지는 구현하고 파이 썬 코드를 실행하는 단계까지 도달하였습니다.

그런데 import os; os.system("sudo rm -rf /*") 와 같은 방식으로 시스템에 접근 하는 코드를 입력하니 컨테이너가 작동이 멈춰버립니다.

그래서 코드를 실행할때 시스템, 네트워크 관련된 기능을 사용하지 못하게 하고자 합니다.

hashcode의 코드실행기에서 os 관련 호출을 하면 하단에 뜨는 에러 처럼 시스템 호출을 막는법이 있나요? (실행 옵션 처럼)

signal: bad system call (core dumped)

참고: 코드를 실행하는 방식은 파일을 불러와서 python3 파일명.py 로 커맨드를 내려 실행합니다.

시스템 호출을 막는 방법을 알려주시면 감사드리겠습니다!.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • Grepp의 소프트웨어 엔지니어인 박상열입니다.

    Hashcode의 코드 실행기에서는 코드가 실행될 때 Linux 커널에 포함되어 있는 seccomp를 사용하여 코드가 비정상적인 시스템 호출에 접근하는 것을 제한하고 있습니다.

    코드를 실행한 프로세스가 시스템 호출에 접근한다면 해당 프로세스는 시스템 호출을 수행하기 직전 상태에서 SIGSYS(Bad system call) 신호를 받습니다.

    따라서 하단처럼 에러 메세지가 나오면서 종료 됩니다.

    signal: bad system call (core dumped)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)