security_opt 미설정

기본 보호 기능과 서비스에 필요한 추가 런타임 보안 옵션을 함께 확인하세요.

설명

security_opt는 AppArmor, SELinux, no-new-privileges 같은 보안 관련 런타임 옵션을 명시할 수 있는 위치입니다.

security_opt를 생략해도 지원되는 환경의 기본 seccomp·AppArmor 같은 Docker 보호 기능이 자동으로 해제되지는 않습니다. 서비스에 추가로 필요한 보안 기준을 명시하면 유지보수와 검토에 도움이 됩니다.

잠재적 영향

  • 필요한 추가 보호 설정이 없으면 서비스의 보안 요구사항을 충족하지 못할 수 있습니다.
  • 서비스별 런타임 보안 기준을 일관되게 적용하기 어려워집니다.
  • 호스트별 기본값이 다르면 같은 서비스에도 서로 다른 보호 수준이 적용될 수 있습니다.

해결 방법

  • 서비스에 필요한 security_opt를 명시해 보안 실행 기준을 코드에 포함시키세요.
  • no-new-privileges, AppArmor, SELinux 같은 옵션 중 환경에 맞는 기준을 선택해 적용하세요.
  • 개발 환경과 운영 환경의 보안 옵션 차이가 있다면 파일을 분리해 관리하세요.

예시

sample/webapp:latest는 실제 이미지로 바꾸고 호스트에서 해당 옵션을 지원하는지 확인하세요.

변경 전

yaml
services:
  webapp:
    image: sample/webapp:latest
    ports:
      - "8080:8080"

변경 후

yaml
services:
  webapp:
    image: sample/webapp:latest
    ports:
      - "8080:8080"
    security_opt:
      - no-new-privileges:true

설명:

  • 변경 전: 추가 보안 옵션을 명시하지 않았습니다. 기본 보호 기능의 적용 여부는 실제 런타임 설정을 확인해야 합니다.
  • 변경 후: no-new-privileges는 setuid나 파일 capability 등을 이용해 프로그램 실행 시 새 권한을 얻는 것을 막습니다. 이미 보유한 root 권한이나 capability를 제거하지는 않습니다.

참조