반응형
해당 글에서는 Docker 환경에서 Vault를 로컬 환경에 구축하는 방법에 대해서 알아봅니다.
1) Vault
💡 Vault
- HashCorp 사에서 만든 Vault는 다양한 환경에서 애플리케이션의 외부 비밀 속성(예: 데이터베이스 비밀번호, 비밀번호, API 키 등)을 외부화된 구성으로 중앙에서 관리할 수 있습니다.
- Spring Boot 환경에서 Vault로부터 시크릿 정보를 읽어오며 Vault에 시크릿 정보를 쓰는 것도 가능합니다. 이러한 방식으로 애플리케이션의 중요한 정보는 코드에서 분리되어 보안이 보장됩니다.
- 기밀정보의 동적인 제공, 중앙 집중식 시크릿 관리, 즉각적인 액세스 제어, 감사 추적 기능 등을 제공하여, 기업의 보안 정책을 준수하는 데 도움이 됩니다.
2) Docker 컨테이너 설치 및 구성방법
1. docker Desktop 설정이 되었다는 가정하에 진행합니다.
💡 아직 설치가 되어 있지 않다면 아래의 링크를 통해 설치하시면 됩니다.
2. docker에서 vault 이미지를 다운 받습니다
$ docker pull hashicorp/vault
💡 [참고] Error response from daemon: manifest for vault:latest not found: manifest unknown: manifest unknown와 같은 문제가 발생하는 경우 아래의 글을 참고하시면 도움이 됩니다.
[ 더 알아보기 ]
💡 docker에서 vault와 hashicorp/vault의 차이는 뭘까?
- 'vault'와 'hashicorp/vault'는 모두 HashiCorp Vault의 Docker 이미지를 나타냅니다.
- 'vault'는 Docker Hub에서 공식적으로 제공되는 Vault 이미지이며, 'hashicorp/vault'는 HashiCorp가 관리하는 Vault 이미지입니다. 두 이미지 모두 Vault 애플리케이션을 실행하는 데 사용할 수 있습니다.
- 그러나 'hashicorp/vault'는 보통 최신 기능과 업데이트를 더 자주 제공하므로, 최신 Vault 기능을 사용하려면 'hashicorp/vault'를 사용하는 것이 좋습니다.
3. 디렉터리를 생성하고 설정파일을 생성합니다.
디렉터리 | 설명 |
logs | 로그를 관리하는 디렉터리 |
file | vault의 데이터를 저장할 디렉터리 |
config | vault를 실행할때 사용하는 설정 파일이 있는 디렉터리 |
$ mkdir vault
$ cd vault
$ mkdir logs
$ mkdir file
$ mkdir config
4. config 디렉터리에 local.json 파일을 생성합니다.
# config 디렉터리로 이동
$ cd config
# local.json 파일 생성
$ touch local.json
# local.json 파일 수정
$ vi local.json
💡 아래와 같이 구성합니다.
{
"listener":{
"tcp":{
"address":"0.0.0.0:8200",
"tls_disable":1
}
},
"backend":{
"file":{
"path":"/vault/file"
}
},
"default_lease_ttl":"876000h",
"max_lease_ttl":"876000h",
"ui":true,
"log_level": "info"
}
5. vault 경로를 참조하여 컨테이너를 실행합니다.
# vault 경로로 이동합니다
$ cd ..
# vault 컨테이너를 생성합니다.
docker run --name vault -d --cap-add=IPC_LOCK -p 8200:8200 \
--log-opt mode=non-blocking \
-v ./config:/vault/config \
-v ./file:/vault/file \
-v ./logs:/vault/logs \
hashicorp/vault server
6. Docker Desktop에서 생성된 컨테이너를 확인합니다.
7. 관리자 페이지로 이동합니다.
💡 관리자 페이지로 이동합니다.
- 위와 같이 설정하였다면 http://localhost:8200으로 이동하시면 됩니다.
3) Homebrew를 이용한 vault 설치 과정
1. Homebrew에서 vault를 설치합니다.
# 모든 Homebrew 패키지의 저장소인 HashiCorp 탭을 설치합니다.
$ brew tap hashicorp/tap
# vault를 설치합니다.
$ brew install hashicorp/tap/vault
💡 [참고] Homebrew 명령어에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
2. 설치를 확인합니다.
# 설치를 확인합니다.
$ vault
3. Vault 클라이언트가 개발 서버와 통신하도록 구성합니다.
# 터미널에 Vault 클라이언트가 개발 서버와 통신하도록 구성합니다.
$ export VAULT_ADDR='http://127.0.0.1:8200'
4. Vault 초기화를 수행합니다.
💡 Vault 초기화를 수행합니다
- 아래와 같이 Unseal Key 1, 2, 3, 4, 5와 Initial Root Token이 출력이 됩니다. 이를 잃어버리지 않고 꼭 가지고 계셔야 합니다. ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
- 반드시 해당 Unseal Key와 Initial Root Token은 관리하셔야 합니다! ⭐️⭐️⭐️
$ vault operator init
💡 [참고] 만약 키를 잃어버리셨다면 아래의 키 초기화 방법에 대해 공유드립니다.
4) Vault 관리자 화면 접속
1. 관리자 페이지를 접속합니다.
💡 관리자 페이지를 접속합니다
- 관리자 페이지에 접속하면 이전과 다른 페이지가 출력이 됩니다.
2. Unseal Key Portion을 입력합니다.
💡 Unseal Key Portion을 입력합니다
- 총 3개를 입력해야 하며 추후에 이를 변경할 수도 있습니다. 가지고 있는 5개의 키 중 3개를 입력합니다.
💡 [참고] 이전화면에서 해당 화면에 해당이 됩니다.
3. Method로 Token을 선택하고 관리하는 ‘Initial Root Token’를 입력합니다.
💡 Inital Root Token
- 최초 Vault 구성시에 발급 받은 루트 키를 입력합니다.
💡 [참고] 이전화면에서 해당 부분에 해당됩니다.
4. 관리자 화면에 접근 완료하였습니다.
오늘도 감사합니다. 😀
반응형
'Docker > 환경설정 및 구성' 카테고리의 다른 글
[Docker] Dockerfile을 이용한 React App 배포 환경 구성 및 실행방법 (0) | 2024.02.03 |
---|---|
[Docker] Dockerfile을 이용한 Vault 배포 환경 구성 및 실행방법 (0) | 2024.02.03 |
[Docker] Vault에서 Unseal Key를 잃어버린 경우 초기화 방법 (0) | 2024.01.18 |
[Docker] Docker로 SonarQube 로컬 설치 및 검증 수행 방법 (0) | 2023.12.28 |
[Docker] Docker MacOS 환경 최초 설치 및 실행 방법: Image, Container, Registry (0) | 2023.12.16 |