설명
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를 제거하지는 않습니다.