설명
MAINTAINER는 예전 Dockerfile에서 이미지 작성자 정보를 넣던 방식이지만, 지금은 더 이상 권장되지 않습니다. 현재는 LABEL을 사용해 작성자, 팀, 저장소, 버전 같은 메타데이터를 더 유연하게 관리하는 방식이 일반적입니다.
직접적인 보안 취약점이라기보다 오래된 작성 방식을 계속 쓰는 문제에 가깝습니다. 하지만 메타데이터 관리 기준이 섞이면 이미지 유지보수와 자동화 도구 연동이 불편해질 수 있습니다.
잠재적 영향
- 오래된 Dockerfile 작성 방식이 남아 유지보수 기준이 일관되지 않을 수 있습니다.
- 이미지 메타데이터를 자동으로 읽는 도구와의 연동이 불편해질 수 있습니다.
해결 방법
- MAINTAINER 대신 LABEL을 사용해 작성자나 관리 정보를 선언하세요.
- 필요한 메타데이터 키와 값을 정리하고 이를 읽는 도구와 호환되는지 확인하세요. 공개되는 이미지 메타데이터에 비밀정보를 넣지 마세요.
예시
두 예제는 작성자 메타데이터 표현만 비교합니다. app 디렉터리에는 대상 이미지에서 실행할 수 있는 server 파일이 필요합니다.
변경 전
dockerfile
FROM alpine:3.20
MAINTAINER devops@example.com
COPY app /app
CMD ["/app/server"]
변경 후
dockerfile
FROM alpine:3.20
LABEL maintainer="devops@example.com"
COPY app /app
CMD ["/app/server"]
설명:
- 변경 전: 더 이상 권장되지 않는 MAINTAINER 지시어를 사용합니다.
- 변경 후: LABEL로 같은 작성자 정보를 관리합니다. 애플리케이션 실행 권한이나 보안을 바꾸는 설정은 아닙니다.