컨테이너 Capability 과다 허용

필요한 Linux capability만 허용하고 권한 축소 후 서비스 동작을 확인하세요.

설명

Docker Compose 서비스에 불필요한 Linux capability를 부여하지 마세요. Capability는 컨테이너가 커널 수준 기능에 접근할 수 있게 하는 권한이므로, 필요 이상으로 열어 두면 격리 수준이 크게 약해질 수 있습니다.

cap_add로 ALL 같은 넓은 권한을 주면 애플리케이션에 꼭 필요하지 않은 시스템 권한까지 함께 허용할 수 있습니다. 컨테이너는 필요한 최소 capability만 사용하고, 가능하면 불필요한 capability는 제거하는 편이 안전합니다.

잠재적 영향

  • 컨테이너 탈출이나 시스템 오남용에 악용될 수 있는 권한이 늘어납니다.
  • 애플리케이션 취약점이 있을 때 피해 범위가 더 커질 수 있습니다.
  • 실제 부여된 권한과 다른 격리 설정에 따라 호스트나 다른 컨테이너에 영향을 줄 수 있습니다.

해결 방법

  • cap_add를 최소화하고 정말 필요한 capability만 명시하세요.
  • 가능하면 cap_drop를 사용해 불필요한 capability를 제거하세요.
  • 서비스별 필요한 권한을 문서화해 과도한 권한 부여가 반복되지 않도록 관리하세요.

예시

변경 전

yaml
services:
  webapp:
    image: nginx:latest
    cap_add:
      - ALL

변경 후

yaml
services:
  webapp:
    image: nginx:latest
    cap_drop:
      - ALL

설명:

  • 변경 전: 컨테이너에 과도한 capability를 부여해 시스템 권한 범위를 불필요하게 넓힙니다.
  • 변경 후: capability를 모두 제거합니다. 이 이미지의 초기화나 실행에 필요한 권한까지 제거될 수 있으므로 동작을 시험하고 꼭 필요한 권한만 다시 허용하세요.

참조