💡 Vault - HashCorp 사에서 만든 Vault는 다양한 환경에서 애플리케이션의 외부 비밀 속성(예: 데이터베이스 비밀번호, 비밀번호, API 키 등)을 외부화된 구성으로 중앙에서 관리할 수 있습니다.
- Spring Boot 환경에서 Vault로부터 시크릿 정보를 읽어오며 Vault에 시크릿 정보를 쓰는 것도 가능합니다. 이러한 방식으로 애플리케이션의 중요한 정보는 코드에서 분리되어 보안이 보장됩니다. - 기밀정보의 동적인 제공, 중앙 집중식 시크릿 관리, 즉각적인 액세스 제어, 감사 추적 기능 등을 제공하여, 기업의 보안 정책을 준수하는 데 도움이 됩니다.
https://www.vaultproject.io/
2) Dockerfile
💡 도커 파일(Dockerfile) - 도커 이미지를 만들고 빌드하기 위한 ‘텍스트 파일’을 의미합니다. 이는 컨테이너 이미지를 구성하는데 필요한 모든 단계와 명령을 정의합니다. - 도커 파일을 사용하면 반복적이고 일관적인 컨테이너 이미지 빌드 프로세스를 자동화할 수 있습니다.
1. Dockerfile 수행과정
💡 Dockerfile 수행과정
1. Dockerfile
- 도커파일에서 일련의 명령을 작성하여 이미지를 빌드하는 방법을 지정합니다. 또한 이미지를 지정하고 필요한 패키지를 설치하고 파일을 복사하여 명령을 실행하는 등의 작업을 수행합니다.
2. Dockerfile → (Build)
- 도커 엔진이 도커 파일을 한 줄씩 읽어서 이미지를 빌드합니다 : Dockerfile Layer
3. Docker Image → (Run) → Docker Container
- 빌드된 이미지를 실행하여 도커 컨테이너를 구성합니다.
2) Dockerfile + Vault 사용예시 : 구성하기
💡 Dockerfile + Vault 구성하기 - 해당 부분에서는 Dockerfile을 통해 Vault를 구성하고 Vault 관리자 페이지에 접근하는 것을 목표로 합니다.
1. 프로젝트 구조 구성
파일 및 디렉터리
설명
Dockerfile
해당 파일을 실행시켜 레이어를 구성하고 hashicorp/vault 이미지를 받아 재구성에 사용할 파일입니다.
config
설정 파일을 관리하는 디렉터리로 docker의 vault/logs와 마운팅 됩니다.
config/config.json
hashicorp/vault를 실행하기 위한 환경설정이 구성된 파일입니다.
file
vault의 백엔드 스토리지로 사용되는 디렉터리로 docker의 vault/logs와 마운팅 됩니다.
logs
vault의 로그 스토리지로 사용되는 디렉터리로 docker의 vault/logs와 마운팅 됩니다.
[ 더 알아보기 ] 💡 Vault를 사용하는 것이 아닌 hashicorp/vault 이미지를 사용하는 이유는?
- 'vault'는 Docker Hub에서 공식적으로 제공되는 Vault 이미지이며, 'hashicorp/vault'는 HashiCorp가 관리하는 Vault 이미지입니다. 두 이미지 모두 Vault 애플리케이션을 실행하는 데 사용할 수 있습니다. 그러나 'hashicorp/vault'는 보통 최신 기능과 업데이트를 더 자주 제공하므로, 최신 Vault 기능을 사용하려면 'hashicorp/vault'를 사용하는 것이 좋습니다.
💡 Docker에서 디렉터리 마운팅은 무슨 말인가?
- 호스트 시스템의 특정 디렉토리를 Docker 컨테이너 내부의 디렉터리에 연결하는 것을 의미합니다. 이렇게 하면 컨테이너가 호스트의 파일 시스템에 접근할 수 있게 됩니다. 이를 통해 데이터를 영구적으로 저장하거나, 컨테이너 간에 데이터를 공유하거나, 컨테이너와 호스트 간에 데이터를 이동하는 등의 작업을 수행할 수 있습니다.
2. Dockerfile 구성
💡 Dockerfile 구성
- 해당 Dockerfile은 Vault 환경을 구성하기 위한 설정으로 구성되어 있습니다.