Docker/환경 구성

[Docker] Docker로 Vault 로컬 환경 구성 방법

adjh54 2024. 1. 18. 21:59
728x170
해당 글에서는 Docker 환경에서 Vault를 로컬 환경에 구축하는 방법에 대해서 알아봅니다.


 

1) Vault


💡 Vault

- HashCorp 사에서 만든 Vault는 다양한 환경에서 애플리케이션의 외부 비밀 속성(예: 데이터베이스 비밀번호, 비밀번호, API 키 등)을 외부화된 구성으로 중앙에서 관리할 수 있습니다.

- Spring Boot 환경에서 Vault로부터 시크릿 정보를 읽어오며 Vault에 시크릿 정보를 쓰는 것도 가능합니다. 이러한 방식으로 애플리케이션의 중요한 정보는 코드에서 분리되어 보안이 보장됩니다.
- 기밀정보의 동적인 제공, 중앙 집중식 시크릿 관리, 즉각적인 액세스 제어, 감사 추적 기능 등을 제공하여, 기업의 보안 정책을 준수하는 데 도움이 됩니다.

https://cloud.spring.io/spring-cloud-vault/reference/html/

 

 

 

 

2) Docker 컨테이너 설치 및 구성방법


1. docker Desktop 설정이 되었다는 가정하에 진행합니다.


💡 아직 설치가 되어 있지 않다면 아래의 링크를 통해 설치하시면 됩니다.
 

[Docker] Docker MacOS 환경 최초 설치 및 실행 방법: Image, Container, Registry

해당 글에서는 MacOS 환경에서 Docker를 설치하고 Image, Container, Registry를 생성하여 관리하는 방법에 대해 알아봅니다 1) Docker Desktop 설치 1. 공식 사이트에서 다운로드를 합니다. 💡 공식 사이트에서

adjh54.tistory.com

 

 

 

 

2. docker에서 vault 이미지를 다운 받습니다


$ docker pull hashicorp/vault

 

 

💡 [참고] Error response from daemon: manifest for vault:latest not found: manifest unknown: manifest unknown와 같은 문제가 발생하는 경우 아래의 글을 참고하시면 도움이 됩니다.
 

[Docker/오류노트] Solved - Error response from daemon: manifest for vault:latest not found: manifest unknown: manifest unkno

해당 글에서는 Docker 이미지로 vault를 받는 도중에 발생한 오류를 해결하는 방법에 대해 알아봅니다. 1) 문제점 💡 문제점 - docker pull vault 명령어를 통해 docker로 vault 이미지를 받으려 할 때 아래

adjh54.tistory.com

 

 

[ 더 알아보기 ]

💡 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

 

 

 

Install Vault | Vault | HashiCorp Developer

The first step to using Vault is to get it installed.

developer.hashicorp.com

 

💡 [참고] Homebrew 명령어에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
 

[개발팁/명령어] Homebrew 명령어 관리(Command Line)

해당 글에서는 homebrew에 대해 알아보고 각각 상황에 따른 명령어에 대해 확인해 봅니다. 1) homebrew 💡 homebrew - macOS용 패키지 매니저로, 사용자가 소프트웨어 패키지를 쉽게 설치, 업데이트 및 관

adjh54.tistory.com

 

 

 

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

 

💡 [참고] 만약 키를 잃어버리셨다면 아래의 키 초기화 방법에 대해 공유드립니다.
 

[Docker] Vault에서 Unseal Key를 잃어버린 경우 초기화 방법

해당 글에서는 Docker에서 Unseal Vault 키를 잃어버린 경우 초기화 방법에 대해 알아봅니다. 1) 문제점 💡 아래와 같이 Unseal키를 입력하는 부분에서 문제점이 발생하였습니다. Unseal Vault by entering port

adjh54.tistory.com

 

 

 

4) Vault 관리자 화면 접속


 

1. 관리자 페이지를 접속합니다.


💡 관리자 페이지를 접속합니다

- 관리자 페이지에 접속하면 이전과 다른 페이지가 출력이 됩니다.

 

 

2. Unseal Key Portion을 입력합니다.


💡 Unseal Key Portion을 입력합니다

- 총 3개를 입력해야 하며 추후에 이를 변경할 수도 있습니다. 가지고 있는 5개의 키 중 3개를 입력합니다.

 

💡 [참고] 이전화면에서 해당 화면에 해당이 됩니다.

 

 

 

3. Method로 Token을 선택하고 관리하는 ‘Initial Root Token’를 입력합니다.


💡 Inital Root Token

- 최초 Vault 구성시에 발급 받은 루트 키를 입력합니다.

 

 

 

💡 [참고] 이전화면에서 해당 부분에 해당됩니다.

 

 

 

4. 관리자 화면에 접근 완료하였습니다.


 

 

 

 

 

 

오늘도 감사합니다. 😀

 

 

 

 

 

그리드형