본문 바로가기

Container/Docker

18. Docker Security

 
앞서  03. Docker 시스템 에서 도커는 리눅스 기능중 하나인 네임 스페이스를 사용하여 
 
사용하여 작업 공간 프로세스 ID 네트워크 등의 컨테이너 리소스를 분리한다고 하였다.
 
도커는 이 네임 스페이스 기능을 사용하여 분리된 환경을 컨트롤 하고 자신의 리소스를 가지게 된다.
 
 
 
그리고 호스트와 컨테이너에 실행된 프로세스가 잡히지만 네임 스페이스 공간에서
 
 
조회시와 도커 호스트에서 조회시 PID 가 서로 다르게 나오며 도커 프로세스 실행은 root 유저로 실행이 된다.
 
 
 
 
 
User 설정
 
root 유저외에 다른 유저를 설정하고자 하면 docker run 시에 --user 로 실행할 유저 ID 를 입력하거나
 
 
도커 파일에 USER ID 를 정의하여 이미지를 빌드 후 실행시키면
 
 
 
아래와 같이 USER 를 설정할 수 있게 된다.
 
 
/usr/include/linux/capability.h 파일을 열어보면 root 유저가 사용할 수 있는 다양한 기능이 있는데
 
(파일 권한수정, 액세스 제어 , 프로세스 생성 종료, 그룹 ID 및 사용자 ID 설정, 네트워크 관련 포트 바인딩,
 
네트워크 제어, 네트워크 포트에서 브로드 캐스트, 시스템 관련 작업, 호스트 리부팅, 시스템 클럭 조정 등....)
 
 
도커 실행시 컨테이너 내부에서 호스트의 동작을 보호하기 위해 
 
몇몇 기능을 사용하지 않도록 제한하여 호스트의 루트 유저와 달리 많은 기능이 제한된다.
 
 
이 기능이 필요한 경우에 docker run 시 --cap-add 옵션으로 추가 기능을 지정해야 한다.
 
 
--cap-drop 을 사용하면 특정 기능을 제외할 수 있으며
 
 
이외에 --privileged 를 넣으면 모든 기능을 사용할 수 있게 된다.
 
 
 
 
 
 
 
 
 
 

'Container > Docker' 카테고리의 다른 글

20. Docker Machine  (0) 2020.01.14
19. Docker Private Registy  (0) 2020.01.14
17. Docker Volume  (0) 2020.01.14
16. Docker Storage  (0) 2020.01.14
15. Docker Network DNS  (0) 2020.01.14