• systemd 서비스 사용하여 vault 서버 구축
  • Vault 실 서버에 사용할 도메인 및 인증서 필요
  • VAult 관련 참고 URL : https://www.vaultproject.io/docs

Valut 설치 및 systemd로 서비스 관리

1. Vault 설치 및 패키지 버전 확인

$ yum install -y yum-utils
$ yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
$ yum -y install vault

2. 설치한 vault 패키지 버전 확인

$ vault version
Vault v1.9.3 (7dbdd57243a0d8d9d9e07cd01eb657369f8e1b8a)

3. Vault 서비스를 systemd로 관리

$ vi /etc/systemd/system/vault.service
[Unit]
Description=Vault secret store
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/vault server -config=/vault/config/vault-config.hcl
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target



Vault 서버 실행

  • vault를 다운받게 되면 기본적으로 /opt/vault/ 디렉토리 아래에 있는 data 디렉토리와 tls 디렉토리 생성
  • data 디렉토리는 Vault 데이터가 저장되는 공간
  • tls 디렉토리는 Vault의 https를 사용하기 위한 인증서 키가 있는 공간 → https를 사용할 인증서 설치 필요
  • /vault/ 디렉토리 data 디렉토리와 tls 디렉토리 복사 필요

1. Vault config 적용 → https://[Vault 서버 도메인]:8200

  • Vault Server는 configuration file을 통해서 configuration을 얻음.

  • vault-config.hcl 이름을 가진 configuration 파일을 통해서 Vault Server에서 사용할 configuration 확인 가능

  • 기본 Vault 서버의 API를 사용하는 주소를 설정 → VAULT_ADDR=’https://[Vault 서버 도메인]:8200’

  • vault-config.hcl을 생성하기 윈한 내용 참고 URL : https://www.vaultproject.io/docs/configuration

    $ mkdir /vault
    $ cp -r /opt/vault/* /vault/
    $ ls /vault/
    data  tls
    
    $ mkdir /vault/config/
    
    # vault-config를 설정할 hcl 생성
    $ vi /vault/config/vault-config.hcl
    # ui 사용 허가
    ui = true
    
    # Vault 데이터가 저장되는 스토리지 백엔드를 구성
    storage "file" {
    path = "/vault/data"
    }
    
    # API 서버의 IP와 PORT 선언
    api_addr = "https://[Vault 서버 도메인]:8200"
    
    # HTTP listener -> HTTP 사용 X
    #listener "tcp" {
    #  address = "0.0.0.0:8200"
    #  tls_disable = 1
    #}
    
    # HTTPS listener -> HTTPS 사용
    listener "tcp" {
    address       = "0.0.0.0:8200"
    tls_cert_file = "/vault/tls/tls.crt"
    tls_key_file  = "/vault/tls/tls.key"
    }
    
    # 기본 VAULT_ADDR은 "https://127.0.0.1:8200"으로 되어있기에 vault 서버의 API를 사용하는 주소를 설정 
    # VAULT_ADDR='https://[Vault 서버 도메인]:8200'
    $ export VAULT_ADDR='https://[Vault 서버 도메인]:8200'
    $ echo -e "export VAULT_ADDR='https://[Vault 서버 도메인]:8200'" >> /root/.bashrc
    $ echo $VAULT_ADDR
    https://[Vault 서버 도메인]:8200

2. vault.service를 재시작하여 설정 적용

$ systemctl daemon-reload
$ systemctl start vault.service
$ systemctl status vault
● vault.service - Vault secret store
   Loaded: loaded (/etc/systemd/system/vault.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-02-27 16:42:28 KST; 24s ago
 Main PID: 14832 (vault)
   CGroup: /system.slice/vault.service
           └─14832 /usr/bin/vault server -config=/vault/config/vault-config.hcl

3. config 설정을 적용한 vault 서버가 정상적으로 실행되는 지 확인 → API

# jq 패키지 설치
$ yum install -y jq


# 외부에서 https://[Vault 서버 도메인]:8200 도메인 요청하여  vault server에게 API 성공 확인
$ curl https://[Vault 서버 도메인]:8200/v1/sys/seal-status | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168  100   168    0     0     29      0  0:00:05  0:00:05 --:--:--    40
{
  "type": "shamir",
  "initialized": false,
  "sealed": true,
  "t": 0,
  "n": 0,
  "progress": 0,
  "nonce": "",
  "version": "1.9.3",
  "migration": false,
  "recovery_seal": false,
  "storage_type": "file"
}

4. config 설정을 적용한 vault 서버에 status 확인

# vault 서버에서 vault status 명령어 확인
$ vault status
Key                     Value
---                      -----
Seal Type            shamir
Initialized            false
Sealed                 true
Total Shares         0
Threshold             0
Unseal Progress    0/0
Unseal Nonce        n/a
Version                1.9.3
Storage Type        file
HA Enabled          false



Vault UI 웹페이지 Open

  1. https://[Vault 서버 도메인]:8200으로 접속
  2. 아직 Unseal을 하지 않았기 때문에 접근은 불가능 → unseal을 하면 웹 페이지 안에 접근 가능

+ Recent posts