Skip to content

[HOTSPOT-273] 암호화 DEK 키 로테이션 배치 구현 #18

Description

@arkchive

🎫 Jira 티켓 번호

HOTSPOT-273

📄 설명

버킷별 새 DEK 버전을 발급하고, 기존 전화번호 암호문을 점진적으로 재암호화한 뒤, 구버전 키를 retired/disabled 처리할 수 있는 배치 기반 로테이션 흐름을 만드는 것이다.
배치는 운영 테이블인 subscription, subscription_key를 대상으로 안전하게 재실행 가능해야 하며, 기존 GCM 포맷과 legacy CBC 포맷 모두 복호화 호환성을 유지해야 한다.

✅ 작업할 내용

  • BATCH에 전화번호 암복호화 공통 로직 추가
  • local|kms 환경을 모두 고려한 DEK unwrap / encrypt / decrypt 로직 구현
  • AES-256-GCM 우선, legacy AES-256-CBC fallback 복호화 지원
  • subscription_key 조회 및 버전 생성용 repository 구현
  • subscription.phone_enc, phone_key_version 갱신용 repository 구현
  • 전화번호 DEK rotation Job 구성
  • prepareRotationStep 구현: 새 subscription_key 버전 생성 및 로테이션 대상 메타 준비
  • reencryptPhoneStep 구현: 기존 phone_enc 복호화 후 새 DEK로 재암호화하고 phone_key_version 갱신
  • finalizeRotationStep 구현: 구버전 참조 건수 확인 후 key 상태를 retired/disabled 처리
  • 재실행 안전성 고려: 동일 대상 재수행 시 중복 갱신/오염이 발생하지 않도록 조건부 업데이트 적용
  • JobParameter 및 검증 규칙 정의: 대상 버킷, 대상 버전, dry-run 등 운영 파라미터 설계

🙋🏻 참고 자료

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

feat새로운 기능 구현

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions