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. 다운로드 파란박스를 우클릭 하여 "링크주소복사"를 선택합니다.
- cd /home/boris/vault/boris_directory 으로 이동하여 wget명령어를 이용하여 vault를 다운로드 합니다.
설치가 완료 되었으면 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
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 접근
아까 위에서 받았던 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
댓글
댓글 쓰기