인생은 여행

Vault Seal/Unseal 본문

Vault

Vault Seal/Unseal

산떠 버하둘 2021. 7. 20. 11:42

Vault 서버는 sealed(봉인) 상태로 시작 됩니다. 이 상태에서 저장된 정보는 어떤 경우에도 평문으로 볼 수 없습니다. Unsealing(개봉) 전에는 거의 모든 작업이 불가능합니다.

Vault 데이터를 암호화하여 저장합니다. 암호화 키로 데이터를 암호화하고 이 암호화키는 키링에 보관하여 데이터와 함께 저장합니다. 이 키링은 마스터 키로 알려진 다른 암호화 키로 암호화합니다. 따라서 Vault는 데이터를 복호화하기 위하여 먼저 암호화 키를 마스터 키를 이용하여 복호화하여야 합니다. Unsealing(복호화)는 이 마스터 키에 접근하는 프로세스입니다. 마스터 키도 다른 모든 데이터와 함께 저장되지만 또 다른 메커니즘인 봉인해제 키(unseal key)에 의해 암호화됩니다.

요약하면, 데이터는 키링의 암호화 키로, 암호화 키는 마스터 키로, 마스터 키는 봉인해제 키로 암호화됩니다.

봉인해제 키 → 마스터 키 → 암호화 키 → 데이터

Shamir’s Secret Sharing 샤미르의 비밀 공유

봉인해제 키는 샤미르의 비밀 공유 알고리즘을 사용하여 여러 조각으로 분할되어 생성됩니다(RSA에 'S'의 그 Shamir 맞다). 각 봉인해제 키는 분리된 공간에 저장할 것을 권장하며 봉인해제 시에 각 키를 입력 받아 임계치 이상의 키가 입력이 되면 봉인해제되는 방식입니다. Vault에서는 기본 값으로 5개의 키가 생성이 되고, 3개의 키가 입력되면 봉인해제됩니다.

Unsealing 봉인해제

봉인해제는 다음의 과정 중 하나를 통하여 수행합니다.

  • 터미널에서 vault operator unseal 명령을 입력 후 봉인해제 키를 차례로 입력
  • Unseal API 호출
  • WebUI에서 키를 차례로 입력

봉인해제 상태에서 다시 봉인 상태가 되는 경우는 다음 중 하나입니다.

  • Seal API 호출
  • Vault 서버 재시작
  • Vault 저장소에서 복구할 수 없는 오류가 발생

Sealing 봉인

봉인 API를 호출하면 메모리에 있는 마스터 키가 폐기되고 이를 복원하기 위해서는 봉인해제 과정이 필요합니다. 봉인에는 루트 권한이 있는 단일 작업자만 필요합니다. 이렇게 하면 침입이 감지되었을 때 Vault 데이터를 빠르게 잠가 피해를 최소화할 수 있습니다.

Auto Unseal 자동 봉인해제

Auto Unseal은 봉인해제 키를 안전하게 보관하는 작업의 복잡성을 줄이기 데 도움이 되도록 개발되었습니다. 이 기능은 봉인해제 키를 안전하게 보관해야하는 사용자의 책임을 신뢰할 수 있는 장치나 서비스에게 위임합니다. Vault 기동시 봉인 기능을 구현하고 있는 장치나 서비스에 접속하여 마스터 키 해독을 요청합니다.

Vault에서는 사용자 쿼럼이 수행해야하는 작업 중, 봉인해제 외에 루트 키 생성 같은 작업이 있습니다. Shamir 봉인을 사용할 때 이러한 작업을 승인하려면 봉인해제 키를 제공해야합니다. Auto unseal을 사용하는 경우에는 대신에 recovery key(복구 키)가 필요합니다.

Shamir 봉인을 사용한 초기화 프로세스에서 봉인해제 키가 생성되는 것처럼 자동 봉인해제로 초기화하면 복구 키가 생성됩니다. 복구 키는 마스터 키를 해독할 수 없으므로 AutoUnseal 메커니즘이 작동하지 않는 경우 Vault를 봉인해제하기에 충분하지 않습니다. 이것은 순전히 권한 인증 메커니즘입니다.

API를 통하여 Vault 노드를 봉인하는 것은 여전히 가능합니다. 이 경우 Vault는 재기동하거나 봉인해제 API가 사용될 때까지 봉인된 상태로 유지됩니다. 이 때 봉인해제를 위해서는 봉인해제 키 대신 복구 키가 필요합니다.

AutoUnseal을 지원하는 프로바이더는 HSM(Hardware Security Module) 이나 클라우드 서비스의 KMS 등이 있습니다. Vault의 transit 기능을 이용할 수도 있습니다.

 

참고:

Seal/Unseal | Vault by HashiCorp

'Vault' 카테고리의 다른 글

Vault HA 구성 with Consul  (0) 2021.08.09
Vault KV Secrets Engine  (0) 2021.07.22
Vault의 AppRole을 사용하는 권장 패턴  (0) 2021.07.18
Comments