Compose 서비스 기본 하드닝 체크리스트
새 서비스를 compose에 넣을 때 거의 습관처럼 붙이는 옵션들이다. 대부분의 이미지는 이걸로도 문제없이 돈다.
services:
app:
user: "1000:1000"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
tmpfs:
- /tmp:size=16m,mode=1777
자주 걸리는 것
exec ...: operation not permitted— 바이너리에 file capability(setcap)가 붙어 있는 경우.getcap으로 확인하고 필요한 것만cap_add로 되돌린다.- read_only에서 쓰기 실패 — 캐시/상태 디렉터리를
tmpfs나 볼륨으로 뺀다. - 설정 파일 permission denied —
user:를 지정했으면 마운트하는 파일 소유자도 맞춰야 한다.
포트
외부에 열 필요 없는 건 127.0.0.1:이나 VPN 인터페이스 주소로만 publish 한다. 컨테이너끼리만 통신하면 아예 ports:를 빼는 게 제일 깔끔하다.