GW LABS

SElinux 보안정책과 Docker volume 본문

Infrastructure/Docker

SElinux 보안정책과 Docker volume

GeonWoo Kim 2020. 12. 7. 09:42

SElinux를 사용하고 있는 리눅스에서 Docker를 사용할 때에는 SElinux의 보안정책에 주의해야한다. CentOS에서 Docker를 설치하고 사용하고자 하는 컨테이너에 volume을 마운트하면 컨테이너가 마운트한 경로에 접근이 안되는 경우가 발생할 수 있기 때문이다. 왜 그럴까? 이유는 Docker 호스트가 컨테이너에 대한 SElinux의 정책을 알 수 없기 때문이다.

 

# docker run -v /var/db:/data1 some_image_name

 

따라서 SElinux를 사용하고 있는 리눅스에서는 위의 명령어와 같은 방식으로 Docker 컨테이너를 생성할 때 /var/db 경로는 컨테이너에 쓸 수 없다. 컨테이너 내부에서 접근하려고 해도 호스트의 SElinux 정책으로 접근권한이 없다는 메세지가 발생하게 된다. 문제를 해결하려면 마운트하고자 하는 폴더인 /var/db의 SElinux 보안정책을 모든 컨테이너가 읽고 쓸 수 있도록 변경해줘야 한다. 이는 chcon 명령어로 가능하다.

 

# chcon -Rt svirt_sandbox_file_t /var/db

 

위의 명령어처럼 해당 경로의 SElinux 보안정책을 변경하면 정상적으로 컨테이너에 마운트시킬 수 있다. 특이한 점은 NAS 같이 대부분의 읽기/쓰기 권한이 풀려있는 스토리지를 컨테이너 내부에 마운트시킬 때에는 문제가 없었다. (호스트 서버에 NAS 마운트 > 컨테이너에 NAS 마운트) NAS를 마운트하고 운영할 때 발생한 문제들은 다른 포스팅에서 정리해보고자 한다.

 

 

Reference

 - www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/

 - access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/container_security_guide/docker_selinux_security_policy

 

 

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

Docker 이미지 수동 저장/배포  (0) 2019.11.11
Comments