Vault 무작정 설치하기

 Vault 는 인증 및 권한 부여에 사용되는 데이터를 저장, 제어 및 보호합니다. Vault는 비밀번호, 인증서 또는 API에 대한 액세스를 제한하거나 승인하는 비밀관리 시스템입니다.

Vault는 데이터 관리 소프트웨어는 설계, 엔지니어링 및 시공 팀을 위해 데이터 작성, 시뮬레이션 및 문서화 프로세스의 구성, 관리 및 추적을 지원합니다. 쉽게 액세스할 수 있도록 모든 파일을 한 위치에 구성하고 보관할 수 있습니다. 모든 파일 버전이 유지되므로 파일을 잘못 배치하거나 이전 버전을 대치하면 안 됩니다.

Vault는 각 버전의 파일을 모든 파일의 종속성과 함께 저장하여 프로젝트에서 작업할 때 프로젝트의 유효한 사용내역을 제공합니다. 또한 Vault는 빠른 검색과 조회를 위해 파일 특성도 저장합니다.

 

전제 조건

  • CentOS 서버
  • sudo 권한이 있는 사용자 계정

1단계 - CentOS의 바이너리에서 Vault 설치

Vault를 설치하기 전에 mkdir명령을 사용하여 Linux에 새패키지를 생성하여 이진 패키지 및 소프트웨어에 필요한 기타 데이터를 저장하십시오. 설명을 위해 이름을 "boris_directory"로 지정하고 다음 명령을 실행하여 만들어주세요.

  - su root

  - mkdir -p /home/boris/vault/boris_directory

2. Valut 공식 웹 사이트에서 wget명령어를 이용하여 centos 운영체제에 적합한 패키지를 찾아 다운로드 하여줍니다.

3. 다운로드 파란박스를 우클릭 하여 "링크주소복사"를 선택합니다.

[Vault 다운로드]

  - cd /home/boris/vault/boris_directory 으로 이동하여 wget명령어를 이용하여 vault를 다운로드 합니다.

[wget을 이용한 패키지 다운로드]

설치가 완료 되었으면 unzip 명령어를 이용해 vault의 압축을 풀어주세요.

[압축 해제]

압축을 해제 후 파일소유권을 root로 변경하고 usr/local/bin으로 디렉토리르 이동하여줍니다.

  - mv vault /usr/local/bin/

다음 명령으로 볼트가 실행 중인지 확인하여 줍니다.

  - vault --version

[볼트 정상 설치 확인]

2단계 - Vault 구성

Vault에 대한 서비스 사용자 생성

권한있는 계정 보안을 고려하고 Vault 서버를 실행하기 위한 별도의 권한이 없는 시스템 사용자가 있는것이 가장 좋습니다. 다음 명령을 사용하여 시스템 사용자가 작성하고 설치 디렉토리의 소유권을 부여해주세요.

  - useradd vault // 계정 생성

  - vim /etc/passwd // /etc/bault.d:bin/false로 변경

3단계 - Vault 서비스 실행

1. vault server를 데몬으로 실행하기 위해선 vault.hcl 파일을 만들어 주어야 합니다. 해당 커맨드는 아래와 같습니다.

  - vim /etc/vault.d/vault.hcl

ui = true
storage "consul" {
  address = "0.0.0.0:8500"
  path    = "vault"
}
listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = 1
}

내용을 작성하고 저장하고 나와줍니다.

 

2. Vault를 서비스로 실행하려면 새 Systemd 서비스 파일도 작성해주어야 합니다.

  - vim /etc/systemd/system/vault.service

아래 내용을 작성하여 주세요.

[Unit] Description="HashiCorp Vault - A tool for managing secrets" Documentation=https://www.vaultproject.io/docs/

Requires=network-online.target

After=network-online.target

ConditionFileNotEmpty=/etc/vault.d/vault.hcl

StartLimitIntervalSec=60

StartLimitBurst=3

 

[Service]

User=vault

Group=vault

ProtectSystem=full

ProtectHome=read-only

PrivateTmp=yes

PrivateDevices=yes

SecureBits=keep-caps

AmbientCapabilities=CAP_IPC_LOCK

Capabilities=CAP_IPC_LOCK+ep

CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK

NoNewPrivileges=yes

ExecStart=/usr/local/bin/vault server -config=/etc/vault.d/vault.hcl

ExecReload=/bin/kill --signal HUP $MAINPID

KillMode=process

KillSignal=SIGINT

Restart=on-failure

RestartSec=5

TimeoutStopSec=30

StartLimitInterval=60

StartLimitIntervalSec=60

StartLimitBurst=3

LimitNOFILE=65536

LimitMEMLOCK=infinity

 

[Install]

WantedBy=multi-user.target

 

해당 내용을 넣어 준뒤에 vault 서비스를 시작하여 주세요.

  - sudo systemctl enable vault.service && sudo systemctl start vault.service

 

4단계 - consul 설치

1단계와 마찬가지로 wget 명령어를 이용하여 다운로드 해줍니다.

  - wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip

  - unzip consul_1.7.2_linux_amd64.zip

[다운받은 consul 실행파일 이동]

해당 커맨드로 설치를 확인해주세요.

  - consul

5단계 - consul 구성

데몬으로 동작하게 만들기 위하여 systemd를 작성하여 주세요. 해당 명령어는 아래와 같습니다.

  - vim /etc/systemd/system/consul.service

아래의 내용을 consul.service에 만들어주세요.

[Unit]
Description=Consul
Documentation=https://www.consul.io/
[Service]
ExecStart=/usr/bin/consul agent -dev
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

 

위의 작업을 하신 뒤에 다음 구성 디렉토리 작성 및 새 ui.json 파일 추가로 이동 하십시오.

  - mkdir /etc/consul.d

  - vim /etc/consul.d/ui.json

아래의 내용을 ui.json에 작성하여 주세요.

{

“addresses”: {

“http”: “0.0.0.0”

}

}

파일을 종료하기 전에 저장하고 나와주세요. 데몬으로 정상으로 등록하기 위하여 아래의 커맨드를 입력하여 데몬을 읽어줍니다.

  - systemctl daemon-reload

  - systemctl start consul && systemctl enable consul

6단계 - Vault 초기화

먼저 아래의 커맨드를 실행하여 현재 Vault 상태를 확인하여주세요.

- vault status

위의 명령으로 확인해본 결과 Vault가 seal되었으며 아직 초기화 되지 않았음을 표시합니다.

상태를 변경하려면 다음 명령을 실행하여 찾을 수있는 3개의 키가 필요합니다. 아래의 명령으로 키를 확인해주세요.

  - vault operator init

터미널은 5개의 Unseal Key와 초기 Root Token 을 반환합니다. 또한 Vault패키지를 재밀봉, 다시 시작 또는 중지 할 때마다이 키를 3 개 이상 제공해야한다고 설명합니다. 지정된 키를 제공하지 않으면 Vault는 밀봉 상태로 유지됩니다. 따라서 5개의 키를 모두 복사하여 별도의 파일에 붙여 넣습니다. 최소 3개의 봉인 해제 키가 있으면 다음 명령을 실행하여 주세요.

  - vault operator unseal

위의 다섯개 키 중에서 3개의 키를 복사하여 붙여넣어주세요.

Vault를 풀기위한 마지막 단계는 최초 루트 토큰(Unseal Keys로 나열)으로 다음 명령을 실행하여 주세요.

  - Vault login [root_token]

7단계 - 방화벽 접근 허용

방화벽 접근 허용을 하기위한 커맨드는 아래와 같습니다.

  - firewall-cmd --permanent --zone=public --add-port=8200/tcp

  - firewall-cmd --permanent --zone=public --add-port=8500/tcp

  - firewall-cmd --reload

  - firewall-cmd --list-all

8200은 vault 웹 ui 포트이며, 8500포트는 consul포트입니다.

8단계 - Vault 웹 UI 접근

[vault UI]

아까 위에서 받았던 root 토큰을 입력하면 아래와 같은 화면이나옵니다.

이상으로 포스팅을 마치도록 하겠습니다.

 

오늘도 좋은 하루들 보내세요.ㅎㅎㅎ

 

참고문헌

https://www.consul.io/docs/install/ports.html

https://learn.hashicorp.com/consul/getting-started/consul-gs-intro

https://learn.hashicorp.com/consul/getting-started/agent

https://learn.hashicorp.com/consul/getting-started/services

https://learn.hashicorp.com/vault/getting-started/install

https://learn.hashicorp.com/vault/getting-started/first-secret

https://learn.hashicorp.com/vault/getting-started/dev-server

https://learn.hashicorp.com/vault/getting-started/dev-server

http://egloos.zum.com/mcchae/v/11318672

댓글

이 블로그의 인기 게시물

AWS 용어

AML 체계란 무엇인가?

Cisco 명령어 정리