FrontEnd
Fortify 보안 점검 대응 : Dockerfile 보안 설정과 Trivy 활용하기
devOhzl
2025. 5. 2. 11:21
문제 상황
회사 보안 점검에서 Fortify 스캔을 진행한 결과, 내가 작성한 Dockerfile에서 다음과 같은 HIGH 레벨 보안 경고가 발생했다.
Default User Privilege | HIGH | Docker 컨테이너가 root 권한으로 실행됨 |
Fortify의 "Default User Privilege" 보안 경고는 Dockerfile 내에서 기본 사용자(root) 로 컨테이너를 실행할 경우 발생합니다.
이는 컨테이너가 해킹되거나 취약점이 발생했을 때, root 권한이 그대로 유지되므로 호스트 시스템까지 영향을 줄 수 있는 위험이 존재합니다. 따라서 root 대신 일반 사용자 권한을 사용하도록 설정하는 것이 권장됩니다.
해결 방법 및 적용 내용
기존 Dockerfile에는 사용자 설정이 없어서 기본적으로 root로 실행되고 있었습니다.
이를 아래와 같은 방식으로 수정하여 일반 사용자(appuser) 로 실행되도록 변경했습니다:
# 1. 사용자 및 그룹 생성
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# 2. 정적 파일 소유자 변경 (nginx 기준 예시)
RUN chown -R appuser:appgroup /usr/share/nginx/html
# 3. 이후 실행 사용자 권한을 일반 사용자로 변경
USER appuser
- 보안 스캔 도구(Fortify) 에서 Default User Privilege 경고가 감지됨
- Dockerfile 내 기본 root 사용자 사용으로 인해 발생한 것으로 분석
- adduser 및 addgroup 명령어를 통해 일반 사용자(appuser)와 그룹(appgroup) 생성
- 컨테이너 실행 시 일반 사용자 권한으로 실행되도록 USER 지시어 추가
- 정적 파일이 있는 디렉토리(/usr/share/nginx/html)에 접근 가능하도록 권한 변경
Trivy로 사전 점검하기
1. trivy image - 컨테이너 이미지 취약점 점검
- Docker 이미지 안에 있는 패키지(OS 기반, 언어별 라이브러리) 들을 스캔하여, 알려진 보안 취약점(CVE)을 탐지하는 명령어입니다.
- 예: apk, apt, yum 기반 패키지 + Node.js, Python, Java, Ruby 등 애플리케이션 레벨 라이브러리까지 분석
- CVE (Common Vulnerabilities and Exposures)는 전 세계적으로 공유되는 보안 취약점 데이터베이스입니다.
도커 로그인 후, 도커 이미지를 지정하고 테이너 이미지의 취약점을 분석합니다.
docker login registry.cloud.@
trivy image registry.cloud.@/myproject/myimage:latest
trivy image는 오직 이미지 내부의 패키지(CVE) 에만 집중합니다.
Dockerfile 내 USER, HEALTHCHECK 등 보안 설정 누락 여부는 감지하지 않습니다.
2. trivy config Dockerfile – Dockerfile 설정 점검
- Dockerfile 자체에 포함된 설정(Security Best Practices 위반 여부) 을 점검합니다.
- 일반적으로 "사용자 설정", "헬스 체크 누락", "불필요한 권한", "시크릿 노출" 등을 감지합니다.
- Dockerfile이 보안적으로 안전하게 작성되었는지 확인하는 용도입니다.
단순히 Dockerfile 파일을 지정하면, 파일 내 보안 설정을 정적으로 분석합니다.
trivy config Dockerfile
문제 있는 Dockerfile - 유저 설정 없음
유저 설정 후 수정한 Dockerfile
Fortify (보안 정책 스캐너) vs Trivy (취약점 스캐너)
도구 | 목적 | 예시 | 특징 |
Fortify | 정적 분석 보안 도구 | Default User Privilege, Dependency Confusion 등 | 상업용, 규칙 기반 |
Trivy config | 오픈소스 설정 분석 도구 | USER, HEALTHCHECK, ADD 사용 등 | CLI 기반, 빠름, 커스터마이징 가능 |
- Fortify는 정책 기반으로 설정 누락, 보안 규칙 위반을 잘 잡아낸다.
- Trivy는 실질적인 라이브러리 취약점 (CVE) 을 체크하는 데 매우 강력하다.
- Fortify에 걸리는 보안 경고는 Trivy로는 감지되지 않을 수도 있고, 반대도 있다.
→ Trivy는 이미지 & 설정을 나눠 검사해야 정확한 확인 가능 - 두 도구를 보완적으로 함께 사용하는 게 가장 효과적이다.