인프런 커뮤니티 질문&답변
도커 이미지를 만들 때 application.yml
해결된 질문
작성
·
24
0
강의에선 application.yml를 포함한 상태로 이미지를 빌드하는데, 현업에서도 이런 식으로 하나요? 이미지를 통해 application.yml의 내용을 알 수 있다거나 보안상 문제가 생길 수 있는지 궁금합니다.
답변 2
1
안녕하세요 ! 질문 너무 잘해주셨어요 !
질문해 주신 내용에 대해 답변드려볼게요 ~
말씀해 주신 것처럼 강의에서는 학습 목적으로 application.yml에 DB 비밀번호 등의 정보를 직접 넣어서 이미지를 빌드했는데요, 현업에서는 기업에 따라 다르게 결정하는 경우가 많아요!
application.yml에 민감한 정보를 넣는다고 하더라도 Docker 이미지를 private으로 관리하면 크게 문제될 건 없습니다!
하지만 보안에 더 민감하게 대처하는 기업에서는 이미지 안에 application.yml이 포함되어 있으면, 해당 이미지에 접근할 수 있는 사람이라면 컨테이너 내부에서 파일을 확인하거나 이미지 레이어를 분석해서 민감한 정보를 볼 수 있기 때문에 보안상 좋지 않다고 판단해요~!!
그래서 보안에 민감한 기업에서는 주로 환경 변수를 활용하는 방식을 많이 사용해요 !
예를 들어 compose.yml의 environment에 DB 접속 정보를 넣어두거나, Spring Boot의 환경 변수 주입 기능을 활용해서 민감한 정보를 외부에서 주입하는 방식이에요 !
이 외에도 AWS Secrets Manager, HashiCorp Vault 같은 별도의 비밀 관리 도구를 활용하기도 해요 ~
추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 11 1님.
도커 이미지를 만들 때 application.yml을 포함하는 것에 대해 질문해주셨군요. 도커 이미지 내에 application.yml 파일을 포함하는 방식은 설정을 쉽게 관리할 수 있어 편리하지만, 보안 측면에서 주의가 필요합니다.
왜 보안상 문제가 될 수 있는지
application.yml파일에는 보통 데이터베이스 비밀번호, API 키, 보안 토큰 등 중요한 정보가 포함되어 있을 수 있습니다.
- 이 파일이 이미지에 포함되면, 해당 이미지에 접근할 수 있는 누구나 파일의 내용을 볼 수 있고, 이는 정보 유출로 이어질 수 있습니다.
보안을 유지하면서 설정을 관리하는 방법
환경 변수 사용:
- 중요 정보는
application.yml대신 환경 변수로 관리합니다. 도커 컨테이너를 실행할 때 필요한 환경 변수를 전달할 수 있습니다.
- 예를 들어, Docker의
-e옵션을 통해 환경 변수를 도커 컨테이너에 전달할 수 있습니다.
- 중요 정보는
Docker Secrets 기능 활용:
- 스웜 모드에서 사용할 수 있는 Docker Secrets 기능을 활용하면, 중요한 정보를 안전하게 관리할 수 있습니다.
- 스웜 모드에서 사용할 수 있는 Docker Secrets 기능을 활용하면, 중요한 정보를 안전하게 관리할 수 있습니다.
외부 설정 파일 사용:
application.yml을 도커 이미지에 포함시키지 않고, 외부에서 바인딩하는 방식으로 설정 파일을 두고 사용할 수 있습니다. 도커의--volume옵션을 사용하면 호스트의 파일을 컨테이너에 마운트 할 수 있습니다.
아래에 유사한 질문과 정보가 포함된 링크를 안내드립니다:
- yml 파일 관리 - 여러 개의 yml 파일을 안전하게 관리하는 방법과 보안 관련 고려사항에 대한 논의입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




