Database 암호화 키를 복호화 하는 API

데이터베이스 암호화 키에 대한 복호화

POST VEGA_DECRYPT_API_ENDPOINT

Enclave 환경 변수:

VEGA_DECRYPT_API_ENDPOINT 변수에, 데이터베이스 암호화 키에 대한 복호화 API 엔드포인트를 명시합니다.

Enclave database에서 개인 정보나 private key와 같은 민감 정보는 암호화하여 저장합니다.

암호화할 때에는 대칭키 암호화 알고리즘을 사용합니다.

데이터베이스 암호화를 위해 사용하는 암호화 키는 Enclave 서버의 환경 변수로 설정합니다. 하지만, 환경 변수로 설정된 값을 그대로 암호화 키로 사용하는 것보다는, 가급적이면 별도의 외부 서비스(ex. HSM)를 이용하여 한 번 더 복호화하는 것을 권장합니다.

위 기능을 위해 아래와 같이 암호화 키를 복호화 하는 API를 구현한 다음, 해당 API endpoint를 Enclave 서버의 VEGA_DECRYPT_API_ENDPOINT 환경 변수로 설정합니다.

  • VEGA_DECRYPT_API_ENDPOINT 환경 변수를 설정하지 않으면, VEGA_ENCRYPTION_KEY_BASE64 환경 변수로 설정된 값을 평문 그대로 encryption key로 사용합니다. (권장하지 않음)

  • VEGA_DECRYPT_API_ENDPOINT 환경 변수를 설정하면, Enclave 서버 부팅 시 해당 API를 호출할 때 VEGA_ENCRYPTION_KEY_BASE64로 입력된 값을 request body로 넘겨줍니다. 해당 API의 response로 받은 값을 실제 DB의 암호화 키로 사용합니다.

  • 따라서 AWS KMS와 같은 서비스를 사용하는 경우, VEGA_ENCRYPTION_KEY_BASE64를 AWS ARN으로 설정하고 VEGA_DECRYPT_API_ENDPOINT에는 KMS를 래핑 한 서버를 구현하여 그 엔드포인트를 설정하면 KMS에서 ARN으로 암호화키를 추출하여 사용할 수 있습니다.

Request Body

Request Body Examples
{
  "inputKey": "Y9uIJCLAkzVi2XYZrUDmBYJp3szXlJIUwfLfbLsVeHU="
}

Response Body

Response Body Examples
  • 200 OK

{
  "outputKey": "d0odhtb/jD9qWWTA59koPGgw2jj0ptov56A3b3dfohY="
}

Last updated