Kubernetes 환경에서는 컨테이너 내부에서 호스트 OS에 액세스하는 경우 위험을 완화하기 위해 기본적으로 루트 사용자를 허용해서는 안 된다고 가정합니다. 이 설정은 PodSecurityPolicy에 작성하여 수행해야 합니다.
이를 고려하면 EKS, AKE, GKE와 같은 퍼블릭 클라우드 Kubernetes 서비스에서 컨테이너를 실행하기 위해 루트 사용자를 사용할 수 있는 이유가 궁금합니다. 컨테이너가 공격자에 의해 손상되는 것을 방지하기 위한 또 다른 보안 조치가 있습니까?
답변1
수정되지 않은 취약점으로 인해 컨테이너화된 프로세스가 호스트 OS에 액세스하고 루트로 실행되어 시스템을 완전히 제어할 가능성이 있더라도 퍼블릭 클라우드는 기본적으로 이를 시행하지 않기로 선택한다고 생각합니다. 잘 알려진 소프트웨어 패키지에는메인 프로세스가 루트로 실행됨- 예를 들어, nginx 서비스는 로 실행되는 기본 데몬 프로세스에 의존하며 root
, 이는 www-data
더 나은 보안을 위해 실행되는 작업자 프로세스를 생성합니다.
답변2
루트 사용자는 Docker 컨테이너 실행을 포함하여 Linux 시스템에서 모든 작업을 수행할 수 있습니다. 루트 사용자가 Docker 컨테이너를 실행하는 것을 허용하지 않는 방법은 없습니다. 대신 루트 사용자에 대한 액세스를 제한하고 sudo를 사용하여 루트가 아닌 사용자가 시스템에서 특정 작업을 수행할 수 있도록 허용하는 방법이 있습니다.
그러나 다음과 같은 경우에는 Docker
그다지 중요하지 않습니다.
docker 그룹은 루트 사용자와 동등한 권한을 부여합니다. 이것이 시스템 보안에 어떤 영향을 미치는지에 대한 자세한 내용은 다음을 참조하세요.Docker 데몬 공격 표면.
따라서 docker 명령을 실행할 권한이 있는 모든 Linux 사용자는 시스템에서 루트 권한을 얻을 수 있습니다.
Docker는 OS 수준의 가상화 기술이므로 컨테이너 내부의 루트 권한은 문제가 되지 않습니다. 컨테이너 내부의 루트 사용자는 docker 데몬을 실행하는 기본 OS에 액세스할 수 없습니다.