본문 바로가기

리눅스

[draft] 우분투에서 HashiCorp Vault를 설치하고 서버 모드로 설정하는 방법

728x90

우분투에서 HashiCorp Vault를 설치하고 서버 모드로 설정하는 방법

1. Vault 설치

HashiCorp GPG 키 다운로드

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

HashiCorp 리포지토리 추가

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

패키지 목록 업데이트

sudo apt-get update

Vault 설치

sudo apt-get install -y vault

설치 확인

vault version

2. Vault 서버 모드 설정

설정 파일 디렉터리 생성

 sudo mkdir -p /etc/vault.d

설정 파일 작성

sudo tee /etc/vault.d/vault.hcl > /dev/null <<EOF
# UI 활성화
ui = true

# Vault의 데이터 저장 위치 설정 (파일 백엔드 사용)
storage "file" {
  path = "/opt/vault/data"
}

# Vault의 리스닝 주소 설정 (0.0.0.0:8200으로 설정)
listener "tcp" {
  address = "0.0.0.0:8200"
  tls_disable = 1
}

# Vault의 API 주소 설정
api_addr = "http://127.0.0.1:8200"
EOF

Vault 서비스 시작 및 확인

sudo systemctl enable --now vault

Vault 서비스 재시작

sudo systemctl restart vault

Vault 서비스 상태 확인

sudo systemctl status vault

Vault 서비스 로그 확인

sudo journalctl -xeu vault
sudo journalctl -u vault -b

3. Vault 초기화 및 언시일

Vault를 처음 실행하면 초기화가 필요합니다. Vault를 초기화하면 Unseal Key와 Root Token이 생성됩니다.

 

Vault 초기화

  • Unseal Key 5개와 Root Token 1개가 출력됩니다. 이 키와 토큰은 안전한 곳에 보관해야 합니다.
vault operator init | tee vault_init_$(date +"%Y%m%d-%H%M%S").txt
Unseal Key 1: t74G0s1zP2OPY9bRPtd+M/xbbJJkeS7AKMrlwOqluMC5
Unseal Key 2: 3C02v26/0QKvr5L2/5po+LMbDeHNHA3zDFt9BEHKhnY2
Unseal Key 3: f+H5rZLF6kNEzh7vQlWePar1MZC9mpmbfiQN7iQ/Ab3q
Unseal Key 4: E4vDkIJxnpg6+yZ+KA9b7QAy5Vuq1cvpoPNyNyY3a67t
Unseal Key 5: eLU6M+uOKLrOat8Go4TR8T0YS3Y89WYUAwsQYTVG/as6

Initial Root Token: hvs.YgdjykLHDpqdg4CbPzrP7P7K

Vault initialized with 5 key shares and a key threshold of 3. Please securely
distribute the key shares printed above. When the Vault is re-sealed,
restarted, or stopped, you must supply at least 3 of these keys to unseal it
before it can start servicing requests.

Vault does not store the generated root key. Without at least 3 keys to
reconstruct the root key, Vault will remain permanently sealed!

It is possible to generate new unseal keys, provided you have a quorum of
existing unseal keys shares. See "vault operator rekey" for more information.

Vault 언시일

  • Vault는 초기화 후 sealed 상태로 시작됩니다. 이를 해제하기 위해 Unseal Key를 사용하여 언시일합니다
vault operator unseal
vault operator unseal <unseal_key_1>
vault operator unseal <unseal_key_2>
vault operator unseal <unseal_key_3>
$ vault operator unseal f+H5rZLF6kNEzh7vQlWePar1MZC9mpmbfiQN7iQ/Ab3q
Key             Value
---             -----
Seal Type       shamir
Initialized     true
Sealed          false
Total Shares    5
Threshold       3
Version         1.18.1
Build Date      2024-10-29T14:21:31Z
Storage Type    file
Cluster Name    vault-cluster-a0cd4085
Cluster ID      aa07d741-eed5-7aff-d5ab-5bb7a0942408
HA Enabled      false

Vault 상태 확인

vault status
Key             Value
---             -----
Seal Type       shamir
Initialized     true
Sealed          false
Total Shares    5
Threshold       3
Version         1.18.1
Build Date      2024-10-29T14:21:31Z
Storage Type    file
Cluster Name    vault-cluster-a0cd4085
Cluster ID      aa07d741-eed5-7aff-d5ab-5bb7a0942408
HA Enabled      false

4. Vault 웹 UI 접속

Vault의 웹 UI에 접속할 수 있습니다.(ui = true 옵션 사용)

http://192.168.0.141:8200

5. Vault 로그인

초기화 시 발급된 Root Token을 사용하여 Vault에 로그인합니다.

vault login <root_token>

 

Vault 서버 주소와 인증 토큰 설정

export VAULT_ADDR="http://127.0.0.1:8200"
export VAULT_TOKEN="hvs.YgdjykLHDpqdg4CbPzrP7P7K"

Vault 로그인

vault login "$VAULT_TOKEN"

Vault 서버 상태 확인

vault status

 

웹 UI도 활성화하여 관리가 편리하게 진행됩니다. Vault는 강력한 보안 솔루션으로, 추가적으로 필요한 시크릿 엔진을 활성화하거나 정책을 설정하여 사용하면 됩니다

 

728x90