키 관리와 로테이션
이 문서가 답하는 질문: 키를 바꿔도 서비스 중단 없이 읽기/쓰기를 유지하려면 무엇을 설정해야 하는가?
핵심 개념
섹션 제목: “핵심 개념”- 한 줄 정의:
KeyResolver는 암호화 키 선택 로직을 앱 코드에서 분리하는 인터페이스입니다. - 왜 필요한가: 키 수명주기(생성/활성/폐기)와 비즈니스 로직을 분리해 운영 리스크를 줄입니다.
- 설정 예시(
safe): encrypt는 activekid, decrypt는 old/new/new2 순으로 다중 키 시도 - 흔한 실수: 새 키 활성화 직후 구키를 decrypt 후보에서 제거
운영 레시피
섹션 제목: “운영 레시피”ENV,AWS KMS,Vault Transit중 하나로 resolver를 구성합니다.createRollingKeyResolver로 rollout 비율(예: 10% -> 50% -> 100%)을 적용합니다.- 복호화는 항상 다중
kid집합을 유지해 2회 연속 로테이션(A->B->C)을 지원합니다.
위험 라벨
섹션 제목: “위험 라벨”safe: activekid+ multi-decryptkidcaution: rollout 비율 변경 직후 모니터링 없는 즉시 100%unsafe: decrypt 키 집합에 이전kid미포함