민감한 호스트 디렉터리가 마운트된 컨테이너

민감한 호스트 디렉터리의 마운트는 컨테이너에 호스트 데이터 접근을 허용할 수 있습니다.

설명

호스트의 민감한 디렉터리를 컨테이너에 직접 마운트하면 내부 프로세스가 파일 권한과 마운트 설정에 따라 호스트 파일을 읽거나 변경할 수 있습니다. 백업, 시스템 설정과 운영 데이터가 포함된 경로는 특히 주의해야 합니다.

바인드 마운트는 데이터 공유에 유용하지만, 불필요하게 넓은 경로를 연결하면 컨테이너 하나의 문제가 호스트 데이터의 유출이나 손상으로 이어질 수 있습니다.

잠재적 영향

  • 컨테이너가 필요한 범위를 넘어 호스트의 기밀 파일에 접근할 수 있습니다.
  • 쓰기가 허용된 마운트에서는 중요 데이터나 설정이 변경·삭제될 수 있습니다.

해결 방법

  • 불필요한 호스트 경로 마운트를 제거하고 필요한 파일이나 전용 디렉터리로 범위를 좁히세요.
  • 읽기만 필요하면 해당 마운트에 :ro 또는 긴 문법의 read_only: true를 적용하세요. 읽기 전용 설정도 정보 유출을 막지는 않습니다.
  • Docker named volume으로 분리할 때는 필요한 데이터 이전과 권한을 준비하고 백업·복구와 애플리케이션 동작을 검증하세요.

예시

backup-service는 실제 백업 이미지로 바꿔야 합니다. 두 예제는 서로 다른 저장 위치를 사용합니다.

변경 전

yaml
version: "3.9"

services:
  backup:
    image: backup-service
    volumes:
      - /var/lib/backup/data:/data

호스트의 백업 경로를 /data에 직접 연결합니다. 기본 읽기·쓰기 마운트이므로 프로세스의 파일 권한도 중요합니다.

변경 후

yaml
version: "3.9"

services:
  backup:
    image: backup-service
    volumes:
      - backup-data:/data

volumes:
  backup-data:

별도의 named volume을 사용합니다. 기존 호스트 데이터가 자동으로 이전되지는 않으며, 볼륨에 저장한 데이터와 접근 권한도 보호해야 합니다.

참조