클러스터 간 Transit 키 공유
클러스터 간 Transit 키 공유
마운트와 클러스터 간에 transit 키를 공유할 수 있어요. 서로 다른 Vault 클러스터나 마운트에서 같은 암호화 키를 사용하려는 시나리오에 유용해요.
시작하기 전에 키를 exportable로 표시하는 것이 보안 체계에 적합한지 확인하세요. exportable로 표시된 키는 내보내 Vault 밖에서 사용할 수 있는데, 모든 사용 사례에 적합하지 않을 수 있어요. NIST, HIPAA, GDPR, PCI 같은 현대 보안 프레임워크는 모든 키 export 작업에 견고한 감사, 모니터링, 문서화 요구 사항을 요구해요. 법무와 보안 팀과 상의해 키 내보내기가 조직에 적합한지 확인하세요.
출처: 문서
본문
가정 (Assumptions)
- 인증 토큰이 소스
transit시크릿 엔진에서 키를 읽을 권한과 대상transit시크릿 엔진에 키를 쓸 권한이 있어요. - 소스와 대상 클러스터 양쪽에 감사 로깅이 활성화되어 키 export·import 작업을 추적하고, import/export 활동을 알려 주는 알림이 설정되어 있어요.
단계
1. 아직 활성화되지 않았다면 소스와 대상 transit 시크릿 엔진을 활성화합니다.
소스 예시:
$ vault secrets enable -path transit-src transit
대상 예시:
$ vault secrets enable -path transit-dest transit
2. 소스 transit 시크릿 엔진에 키를 만듭니다.
$ vault write transit-src/keys/shared-key type=rsa-2048 exportable=true
키를 내보내려면 exportable 옵션을 true로 설정해야 해요. 키를 만든 후에는 exportable 옵션을 변경할 수 없어요.
3. 대상 마운트의 RSA 래핑 공개 키를 가져옵니다.
$ WRAPPER_KEY=$(vault read -field=public_key transit-dest/wrapping_key)
이 키는 Vault에서 내보낼 때 키 자료를 암호화할 수 있게 하기 위해 존재해요.
4. 대상의 래핑 공개 키를 transit-src 안의 키 객체로 등록합니다.
$ vault write transit-src/keys/dest-wrapping-key/import type="rsa-4096" public_key="${WRAPPER_KEY}"
이 키를 BYOK export 엔드포인트와 함께 사용해 대상 마운트용 페이로드를 암호화하고 내보내요.
5. shared-key의 버전 1을 내보냅니다.
$ IMPORT_PAYLOAD=$(vault read \
-format=json \
transit-src/byok-export/dest-wrapping-key/shared-key/1 \
| jq '{type: .data.type, ciphertext: .data.keys["1"] }')
Vault는 dest-wrapping-key를 대상으로 사용해 transit-src 안에서 키를 제자리에서 암호화해요. 결과 암호문은 transit-dest 개인 키만 복호화할 수 있어요. jq 유틸리티는 응답을 import 엔드포인트가 기대하는 {type, ciphertext} 모양으로 재구성해요.
6. 키를 대상 마운트로 가져옵니다.
$ echo "${IMPORT_PAYLOAD}" | vault write transit-dest/keys/shared-key/import -
transit-dest 마운트는 자체 개인 래핑 키를 사용해 페이로드를 내부적으로 복호화하고 shared-key로 구체화해요. 이 흐름의 어느 시점에서도 plaintext 키 자료가 Vault 밖에 나타나지 않아요.
더 알아보기 (Learn more)
- Transit 키 가져오기(BYOK)에 대한 자세한 내용은 키 래핑 가이드를 참고하세요.
- Vault Transit 시크릿 엔진 전체 API는 Transit API 문서를 참고하세요.