And Brain said,
Vault, HashiCorp와 비밀의 방 본문
최근 인프라와 아키텍처가 클라우드 네이티브 및 마이크로서비스로 가는 추세다보니 그에 맞춰 기업들도 복잡한 환경에서의 보안을 신경쓰게 될 수 밖에 없다.
오늘은 그런 보안 툴들 중 최근 자주 사용되고 있는 HashiCorp사의 Vault에 대해서 알아보고 간단한 환경 구성까지 해보자.
Vault는 HashiCorp에서 개발한 오픈소스 암호화키 관리 도구로 Vault를 사용하면 애플리케이션 보안을 위해 중요한 정보인 패스워드, API 키 등을 안전하게 저장하고 관리할 수 있다.
Vault는 다양한 기능을 제공하지만, 그 중 가장 중요한 기능은 데이터를 암호화하고 복호화하는 것이다.
애플리케이션 내부에 저장되어 있는 중요한 정보를 Vault를 통해 암호화하고, 필요할 때만 복호화하여 사용함으로써, 정보 유출 및 해킹 등의 보안 문제를 예방할 수 있다.
또한 Vault는 인증 및 권한 부여 기능도 제공한다.
인증 기능은 사용자가 Vault 서버에 접근할 때 사용자를 인증하고 권한을 부여하는 역할을 하고, 권한 부여 기능은 사용자의 권한을 관리하여 특정 데이터나 기능에 대한 접근 권한을 부여하거나 제한하는 역할을 한다.
이외에도 Vault의 다양한 기능을 효과적으로 활용하여, 애플리케이션 보안에 대한 신뢰성을 높여보도록 하자.
자, 이제 본론으로 들어가자.
Vault는 도커를 이용해 설치해줄 것이다.
# vault-compose.yml
version: '3'
services:
vault:
image: vault:1.13.0
container_name: vault
ports:
- 8200:8200
volumes:
- ../vault/config:/vault/config
- ../vault/policies:/vault/policies
environment:
- VAULT_ADDR=http://172.19.0.3:8200
cap_add:
- IPC_LOCK
command: server
networks:
msa-network:
ipv4_address: 172.19.0.3
networks:
msa-network:
external: true
vault-compose.yml을 작성해준다.
볼륨 마운트 경로는 본인에 맞게 바꿔주면 된다.
cap_add는 컨테이너에서 사용할 권한을 지정하는 것이고 IPC_LOCK은 컨테이너가 메모리에 잠금을 걸 수 있도록 해준다.
vault 폴더 내에 필요한 설정 파일들을 만들어주면 된다.
스토리지는 mysql을 사용할 것이다.
다 작성해줬다면
docker-compose -f vault-compose.yml up -d
이제 http://localhost:8200/ui로 접속한다면
Vault UI로 접속할 수 있다.
Key shares는 root key를 몇 조각으로 나눌 것인지를 묻고, Key threshold는 그 중 몇 개의 조각이 필요한지를 묻는 것이다.
나는 5조각으로 나누어 3개의 조각이 필요하도록 하였다.
initialize 버튼을 누르면
이렇게 초기 루트 토큰과 5개의 키를 준다.
아래에 있는 Download Key 또는 잘 기록해두자.
이 화면을 다시 볼 수 없다는 점을 명심해두자.
이후 unseal 화면을 찍지를 못했는데, 키 3개를 한 번씩 입력해주면 된다.
그러면 Sign in을 할 수 있다.
여기서 여러가지 방식으로 Sign in 할 수 있지만, 일단 먼저 들어는 가보도록 하자.
이 토큰 값에 아까 받은 초기 루트 토큰을 입력하면
자 이제 비밀의 방 입구까지 왔다.
** 확인 결과 Vault 내에 policy가 적용이 안 되어있길래 UI 내에서 적용해보도록 하겠다.
그 전에 먼저 토큰 방식말고 User/passwd 방식 로그인이 가능하게 설정해보자.
상단의 Access 탭으로 들어가서 Enable new method + 를 눌러 Auth Methods를 추가해준다.
Next
Enable Method
생성된 userpass로 들어가
Create user +
만들어준다.
다음은 정책을 만들어준다.
상단의 Policies 탭 -> Create ACL policy +
내부로 들어가면 policy를 적을 수 있는데 우리는 앞서 파일을 만들었기에 이를 활용해보자.
우측에 보이는 Upload file이라는 토글을 활성화시켜서 파일을 선택해주면
policy 설정도 끝.
자, 그러면 이제 생성한 User에 Policy를 적용해보자.
UI 내에서 우측 상단에 존재하는 CLI를 사용할 것이다.
이렇게 명령어를 입력해준다.
$ vault write auth/userpass/users/your-username \
policies="your-policy" \
password="your-password"
이제 Sign out 후
Method Username으로
접속 가능하다.
자, 이제 마지막이다.
여기서 여러분들의 비밀의 방을 만들어보자.
우측의 Enable new engine +
Enable Engine
이렇게 비밀의 방을 만들었다.
이곳에 여러분들의 은밀한 비밀들을 넣어보길 바란다.
오늘 배운 Vault는 다음 포스팅인 "Config Server, MSA의 중앙정보국"에서 사용하게 될 것이다.
Thanks for watching, Have a nice day.
References
https://www.youtube.com/watch?v=9ffFZCbebPY
https://www.misterpki.com/vault-docker/
https://blog.outsider.ne.kr/1266
https://ddimtech.com/vault-docs/vault-approle
'IT > DevOps \ Architecture' 카테고리의 다른 글
Jaeger vs Zipkin, MSA의 뛰어난 추적자들 (0) | 2023.08.07 |
---|---|
Circuit Breaker, 순간아 멈추어라! (0) | 2023.03.14 |
RabbitMQ, 비동기 메시지 큐를 위한 신문사 (0) | 2023.03.11 |
VirtualBox, 광활한 오픈월드 속으로 (0) | 2023.03.10 |
불변성(Immutability), 변하지 않는 것 (0) | 2023.02.15 |