HashiCorp는 Vault Enterprise 1.20을 통해 삭제되었거나 실수로 변경된 시크릿을 복원할 수 있는 새로운 기능을 도입했습니다. 이 기능은 클러스터 전체에 영향을 주지 않으면서 특정 시크릿만 선택적으로 복원할 수 있도록 설계되었습니다. 또한 Vault의 정책 시스템을 통해 복구 권한을 세분화하고 위임할 수 있어, 운영자의 부담을 줄이고 조직 전체의 복원 대응력을 높입니다. 현재는 KV v1 시크릿 엔진에서만 사용할 수 있으며, 향후 다른 시크릿 엔진으로의 확장도 예정되어 있습니다.
이 글에서는 시크릿 복구 기능이 도입된 배경과 작동 방식, 그리고 설계 시 고려된 기술적 선택들을 소개합니다.
☑️ 문제의 배경
시크릿 복구 기능이 도입되기 전까지는, 시크릿이 수정되거나 유실되었을 때 전체 클러스터 스냅샷을 복원해야만 했습니다. 이 과정은 클러스터의 다른 영역에 성능 저하를 일으킬 수 있었습니다. 또한, 전체 스냅샷을 복원하는 방식은 정상적으로 수정된 내용까지 덮어쓸 위험이 있었습니다. 예를 들어, 3분 전에 실수로 시크릿이 변경되었고, 10분 전에 저장된 스냅샷을 복원하면 그 사이에 정상적으로 변경된 다른 시크릿들도 유실될 수 있습니다.
이러한 클러스터 복원 방식은 Vault 운영자만이 복구 작업을 수행할 수 있는 권한 체계를 기반으로 하기 때문에 병목현상이 발생했습니다. 즉, 모든 사용자의 시크릿 문제를 해결하려면 매우 높은 권한을 가진 운영자만이 처리할 수 있었던 것입니다.
☑️ Vault 시크릿 복구의 작동 방식
시크릿 복구는 기존 기능인 클러스터 스냅샷을 새로운 방식으로 활용합니다. Vault의 유연한 정책 시스템을 통해 세분화된 복구 권한을 위임할 수 있도록 설계되었습니다.
클러스터 전체를 복구하는 대신, 스냅샷을 Vault에 로드(load) 합니다. 이 과정은 수동으로 진행하거나, 자동 스냅샷 설정에 따라 사전에 구성된 외부 저장소(AWS S3 등)에서 스냅샷을 불러올 수 있습니다. 예를 들어, 자동 스냅샷이 AWS S3로 전송되도록 구성되어 있다면, 해당 경로에 대한 스냅샷 로드 권한(snapshot-load permission)을 가진 사용자는 S3로부터 스냅샷을 Vault에 로드하여 다른 사용자들이 복구 작업을 진행할 수 있도록 만들 수 있습니다.
현재 초기 버전의 시크릿 복구 기능은 자동 스냅샷을 복구에 자동으로 사용할 수 있도록 구성하는 기능은 제공하지 않습니다. 해당 기능에 관심이 있다면, 계정 담당자에게 문의해 주세요.
☑️ 추가 가시성 기능
시크릿 복구 기능은 스냅샷 로딩 외에도 고객에게 도움이 될 수 있는 몇 가지 기능을 포함합니다.
☑️ 지원되는 시크릿 엔진 및 향후 확장 계획
시크릿 복구는 현재 KV 버전 1 시크릿 엔진에서만 사용할 수 있으나, 다양한 시크릿 엔진으로의 확장을 계획하고 있으며 사용자 의견을 적극 반영하고자 합니다. 제안이 있다면 계정 담당자에게 전달해 주세요. 대부분의 시크릿 엔진을 시크릿 복구 기능의 대상 후보로 고려 중이며, 목표는 고빈도 사용 시크릿 엔진 전반에 걸쳐 일반화된, 위임 가능한 복구 기능을 제공하는 것입니다.
단, KV 버전 2 시크릿 엔진은 예외입니다. 이미 소프트 삭제(soft delete) 기능을 제공하며, 시크릿 복구 기능과 유사한 기능 외에도 여러 장점이 있습니다. 따라서 KV v2로의 업그레이드를 권장합니다.
☑️ 경로 기반 시크릿 복구 vs. 네임스페이스 기반 복구
우리는 네임스페이스 스냅샷 및 복원 메커니즘 구현도 고려했습니다. 이는 클러스터의 다른 정보는 포함하지 않고, 해당 네임스페이스의 모든 정보를 포괄하는 더 낮은 수준의 스냅샷을 생성하는 방식입니다. 하지만 이 접근 방식에는 몇 가지 단점이 있었습니다.
또한, 많은 고객이 설명한 상황은 단일 시크릿만 복구할 필요가 있는 경우였습니다. 이 경우 전체 네임스페이스를 복구하는 것은 위에서 언급한 단점이 없더라도 과도한 접근입니다. 단일 시크릿만 복구하는 방식이 컴퓨팅 자원을 사용하는 데 있어서도 더 효율적입니다.
클러스터 스냅샷 복원과 네임스페이스 스냅샷 복원 모두 높은 수준의 권한이 필요하지만, 시크릿 복구 권한은 사용자가 상호작용하는 특정 시크릿에 따라 세분화하여 부여할 수 있습니다. 이는 최소 권한 원칙에 부합하며, 최종 사용자에게 복구 권한을 위임할 수 있어 Vault 운영자의 부담을 줄이는 데 도움이 됩니다.
우리는 네임스페이스 기반의 복구 메커니즘, 예를 들어 네임스페이스 소프트 삭제나 네임스페이스 스냅샷 및 복원 기능 등을 지속적으로 평가하고 있습니다. 이와 같은 사용 사례에 관심이 있으시다면, 계정 담당자에게 연락해 주세요. 여러분의 의견을 듣고 싶습니다.
☑️ Terraform Vault Provider를 통한 구성 권장
이 블로그에서 다룬 모든 기능은 Terraform Vault provider를 통해 구성할 수 있습니다. 고객 여러분이 Vault 구성을 코드화하여 변경 관리 프로세스를 수립하고, 다양한 환경에서 일관된 배포를 구현하며, 조직의 코드 품질 기준을 적용할 수 있도록 권장합니다.
▶ 하시코프 볼트(HashiCorp Vault) : 자세히보기
HashiCorp Vault는 인증과 인가를 기반으로 민감한 정보를 안전하게 관리하는 ID 기반의 시크릿 및 암호화 관리 시스템입니다. 토큰, API 키, 비밀번호, 암호화 키, 인증서 등 민감 정보를 통합된 인터페이스에서 일관되게 관리할 수 있으며, 접근 제어와 감사 로그 기능을 통해 보안을 강화합니다. 시크릿은 플랫폼별로 분산되어 관리되기 쉬우며, 누가 어떤 정보에 접근하는지 파악하기 어렵고, 키 순환이나 안전한 저장, 상세한 로깅 등의 기능을 자체적으로 구현하기는 쉽지 않습니다. Vault는 이러한 문제를 해결하기 위해 사용자, 애플리케이션, 시스템 등의 클라이언트를 검증하고 인가한 후에만 민감한 데이터에 접근할 수 있도록 지원합니다.
클라우드네트웍스는 전담팀을 통해 테라폼, 볼트를 포함한 하시코프 제품군의 구축 및 기술지원 서비스를 제공합니다. 하시코프에 대한 문의사항은 공식 파트너사인 클라우드네트웍스로 연락 부탁드립니다.