[ Vault ] HashiCorp Vault의 기본 기능
Vault는 민감한 데이터(예: 비밀번호, API 키, 인증서 등)를 안전하게 저장하고 관리하는 데 중점을 둔 도구입니다. Vault의 주요 기능을 이해하려면 기본적으로 다음과 같은 몇 가지 핵심 개념을 파악해야 합니다.
1. 비밀 관리(Secrets Management)
Vault의 가장 기본적인 기능은 비밀 관리입니다. Vault를 사용하면 민감한 데이터를 안전하게 저장하고 필요할 때 이를 안전하게 조회할 수 있습니다. Vault는 다양한 종류의 비밀을 관리할 수 있으며, 가장 기본적인 비밀은 "키-값" 형태로 저장됩니다.
예시:
Vault에 비밀을 저장하는 명령어:
vault kv put secret/myapp/password value="s3cr3tpassword"
위 명령어는 secret/myapp/password 경로에 value라는 키로 s3cr3tpassword 값을 저장합니다.
저장된 비밀을 조회하려면:
vault kv get secret/myapp/password
이 명령어는 secret/myapp/password 경로에 저장된 비밀 값을 반환합니다.
2. 토큰 기반 인증(Token-based Authentication)
Vault는 다양한 인증 방식을 지원하지만, 가장 기본적인 방법은 토큰 기반 인증입니다. Vault 서버에 접근하려면 유효한 토큰을 제공해야 하며, 이 토큰은 Vault 서버에서 발급됩니다. 토큰은 사용자의 권한을 정의하며, 민감한 데이터에 접근할 수 있는 범위를 설정하는 데 사용됩니다.
예시:
- 토큰 발급:
vault token create
- 토큰을 설정하여 Vault에 접근:
export VAULT_TOKEN=<your-token>
- 이후 Vault에 명령을 실행할 때 토큰이 자동으로 사용됩니다.
3. 키 관리(Key Management)
Vault는 키 관리(KMS) 기능을 제공하여 암호화 및 복호화 작업을 처리합니다. 이 기능을 통해 애플리케이션에서 직접 암호화 로직을 작성할 필요 없이, Vault가 안전하게 암호화된 데이터를 처리해줄 수 있습니다.
예시:
암호화된 데이터를 저장하거나 복호화할 수 있습니다.
vault write transit/encrypt/my-key plaintext=$(base64 <<< "Sensitive data")
위 명령어는 my-key라는 키를 사용하여 민감한 데이터를 암호화합니다.
복호화:
vault write transit/decrypt/my-key ciphertext=<ciphertext>
4. 시크릿 엔진(Secrets Engines)
Vault는 다양한 시크릿 엔진을 제공합니다. 시크릿 엔진은 특정 유형의 데이터를 처리하고 저장하는 플러그인입니다. 기본적으로 제공되는 시크릿 엔진에는 kv, transit, database, pki 등이 있습니다.
- KV 시크릿 엔진: 키-값 쌍을 저장하는 기본적인 시크릿 엔진.
- Transit 시크릿 엔진: 데이터를 암호화/복호화하는 데 사용.
- Database 시크릿 엔진: 데이터베이스 연결 정보를 관리.
- PKI 시크릿 엔진: TLS 인증서와 키를 관리.
예시:
시크릿 엔진 활성화:
vault secrets enable -path=secret kv-v2
이 명령어는 secret 경로에 kv-v2 시크릿 엔진을 활성화합니다.
5. ACL 정책(Access Control Policies)
Vault는 ACL 정책을 사용하여 사용자의 접근 권한을 세밀하게 제어할 수 있습니다. 정책을 통해 사용자가 어떤 작업을 수행할 수 있는지, 어떤 경로에 접근할 수 있는지 정의할 수 있습니다.
예시:
정책 파일을 작성하여 저장합니다. 예를 들어, my-policy.hcl이라는 파일에 다음과 같은 내용을 작성할 수 있습니다:
path "secret/data/myapp/*" {
capabilities = ["create", "read"]
}
이 정책은 secret/data/myapp/ 경로에 대해 create와 read 권한을 부여합니다.
정책을 Vault에 적용하려면:
vault policy write my-policy my-policy.hcl
정책을 사용자에게 적용하려면 해당 사용자에게 정책을 할당한 후, 그 정책을 사용하여 접근을 제어할 수 있습니다.
6. Audit Logs (감사 로그)
Vault는 감사 로그를 통해 모든 액세스 및 활동을 기록할 수 있습니다. 이 로그를 사용하여 누가 어떤 데이터를 조회하거나 수정했는지 확인할 수 있습니다. 감사 로그는 보안 및 규정 준수를 유지하는 데 중요한 역할을 합니다.
예시:
감사 로그를 활성화하는 명령어:
vault audit enable file file_path=/var/log/vault_audit.log
이 명령어는 파일 기반의 감사 로그를 /var/log/vault_audit.log에 기록합니다.
결론
Vault는 비밀 관리, 토큰 인증, 키 관리, 정책 기반 접근 제어 등의 기본적인 기능을 제공하여 민감한 데이터의 보안을 강화합니다. 위에서 살펴본 예시 명령어들을 통해 Vault의 기능을 손쉽게 사용할 수 있습니다. Vault는 애플리케이션의 보안 요구사항에 맞춰 확장 가능하며, 다양한 기능을 제공하므로, 실제 환경에서 활용도가 매우 높습니다.