Skip to content

[Europa][4.23][S5C] KMS·암호화 및 Usage 키 의존성 통합 #996

Description

@dhslove

목적과 범위

부모 Epic: #987

KMS 원본 기능, Usage의 KMSWrappedKeyDao 의존성, UI 및 SharedMountPoint/LINSTOR 암호화 경로와의 연동을 통합한다.

기준과 선행 조건

완료 기준

  • 기존 암호화 볼륨·키 참조를 보존하고 신규 키/래핑/해제 권한 및 실패 경로를 검증한다.
  • KMS DB migration·구성·API/UI와 Usage 시작 순서/빈 주입 의존성을 함께 처리한다.
  • SharedMountPoint migration/암호화 및 LINSTOR encrypted snapshot backup/restore의 필요 의존성을 S5A/S5B에 제공한다.
  • 키 접근 실패가 데이터 유실·임의 새 키 대체 또는 평문 비밀 노출로 이어지지 않는다.

검증

KMS unit/API/접근 거부 + 키 접근 실패/재시작 + 기존 암호화 데이터 읽기 + Usage 시작 회귀. 실제 backend 검증 증거를 연결한다.

공통 진행 규칙

  • 해당 작업 코드의 원본 SHA는 Epic의 developer/history/ 추적표로 관리한다. 원본 SHA별 판정/PR/적용 SHA/검증 근거를 갱신한다.
  • 체리픽·적응 수정은 원본 의도와 Europa 계약을 보존하며, patch-id/같은 제목/역적용 성공만으로 완료 처리하지 않는다.
  • PR base는 ablecloud-team/ablestack-cloud:ablestack-europa이다. PR은 이 하위 이슈를 연결하고 부모 Epic을 자동 종료하지 않는다.
  • 소스/Git/설치/로컬 검증은 Docker 내부에서 진행하며, 공식 산출물은 Actions 결과를 사용한다. 기존 DB/볼륨은 초기화하지 않는다.
  • 구현·병합·검증이 완료되면 부모 Epic의 진행표와 추적표를 함께 갱신한다. 새로운 발견과 범위 변경 근거는 코멘트로 남긴다.

S1 확정 추적 자료 (2026-09-10)

  • 초기 추적 기준 / 299개 inventory / 의존성
  • 이 이슈의 직접 배정 원본 SHA: 3개. workstream=S5C로 필터링한다. 관련 기능 변경은 related_workstreams와 의존성도 함께 확인한다.
  • merge 해결 분석: merges.tsv. S2가 19개를 총괄하고 기능 소유 이슈가 공동 검증한다.
  • 사용자 확정 DB 출발점: 014895d8f3; 신규 설치·기존 데이터 업그레이드·동일 버전 재실행을 검증한다.
  • S1 작성 당시 원본은 Pending이었다. S5C 최종 판정과 검증 근거는 아래 완료 기록을 따른다.

코드 통합 완료와 실물 테스트 인수 (2026-09-11)

사용자 확정 및 Epic #987의 공통 원칙: 이 기능 이슈는 Apache 변경을 Europa 코드에 안전하게 통합하고 코드 검토·자동 테스트·CI를 통과한 뒤 정상 병합하는 것을 완료 기준으로 한다. 본문에 포함된 실물 환경 테스트는 코드 병합의 선행 조건이 아니다. 실물 미실행을 이유로 기능 PR을 Draft로 유지하거나 기능 이슈 종료를 보류하지 않는다.

이 배치에서 필요한 실물 시나리오·기대 결과·미확인 위험은 #1025에 누적한다. 모든 기능 코드 병합 후 최종 SHA에서 S8 #999가 실행·판정한다. 미실행을 PASS로 표시하지 않으며 최종 RC/릴리즈 게이트는 유지한다.

S5B 완료 인수 (2026-09-11)

#994 / PR #1035 병합·동기화 완료. 코드 기준 27dbd94c2914162862c2b6e61d5e69dd22f5303d, DB 출발점 014895d8f3 유지. 검증 보고 · 원본54개 판정 · 공유 merge 검토 · 후속 의존성 · 전체299개.

  • SharedMountPoint/LINSTOR 암호화 provider 변경은 S5B에서 반영했다. 나머지 KMS 원본3개·Usage 키 의존성과 구성/API/UI·실패 경로는 이 이슈가 소유한다.
  • 기존 Complete S4/S5A/S5B v1을 수정해 기존 설치에 실행될 것으로 가정하지 않는다. 새 같은4.23 DDL은 별도 명명된 checkpoint에 둔다. KBOSS view는 테이블 생성 뒤 실행해야 한다.
  • canonical takeBackup(vm,quiesce,isolated,scheduleId)와 legacy forwarding, NetBackup EXTERNAL/영속 restore state, S4 CheckedReservation·S3 ACL/async secret encryption을 유지한다.
  • VM start4/6인수 호환과7번째 isExplicitHost 의미를 유지한다. quickRestore는 별도 명시적 인수이며 FTCTL/DR가 우연히 활성화해서는 안 된다.
  • LINSTOR 대상 token/TLS·auth.json, QEMU10.1 format/key-file lifecycle, RBD parent/thin·Glue/KVDO를 함께 검증한다. 실물 암호화 데이터/외부 KMS 실패 시험은 #1025에서 최종 코드 이후 실행한다.

S5C 코드 통합 완료 (2026-09-11)

PR #1036 정상 병합. 병합 SHA e4e1abf, 최종 PR HEAD 7bf2899.
upstream/ablecloud-team Europa, origin/dhslove Europa 및 로컬 codex/ablestack-cloud-dev를 같은 SHA로 동기화했다. 검증 보고 · 원본3개 판정 · DB 결과 · 후속 계약 · 전체299개.

  • 직접 원본3개: Applied1 / Adapted2. 고정299개는 Applied78 / Adapted88 / Already Satisfied49 / Excluded28 / Pending56. S2 잔여16개(merge12 + 일반4)는 변경하지 않았고 OPEN 유지한다.
  • Database/PKCS#11 KMS·HSM API/UI 및 Usage 공통 DAO 통합. KVDO·KBOSS·CheckedReservation·FTCTL/DR와 기존 메서드 계약을 보존했다.
  • 동일 버전 S5C DB 단계, 이전 volume view 순서, legacy DEK의 Base64 보존, 마이그레이션 트랜잭션과 실패 응답, 계정/존 검사·클러스터 키 잠금·HSM 비밀 마스킹을 검증했다.
  • 최종 HEAD 공식 backend 14,132 tests / failures0 / errors0 / skipped17; UI351/30 suite 및 production build, License, Rocky9.8/9.7 RPM 통과. Build / UI Build / License Check / Rocky 9.8 RPM Packaging / Rocky 9.7 RPM Packaging.
  • 로컬 전체 회귀 테스트도 14,132 tests / failures0 / errors0 / skipped15로 BUILD SUCCESS. 공식 Actions의 skipped17과 구분하여 기록한다.
  • 집중 Java189/11 suite, 실제 MySQL 신규/014895d8f3/S5B 466 table/view와 동일 스냅샷 반복·기존 행 보존·DDL10개 중단 복구 통과. 실제 Management/Usage API·ACL·DAO 시작, DB 저장 오류 rollback, 비활성 HSM/키 거부, 동시 회전·background rewrap 및 재시작 후 4 MiB LUKS QCOW2 데이터 전체 복호화도 통과했다.
  • 전체 Lint는 기존13개 실패 범주이며 변경 경로 추가 진단0개다. Simulator/Coverage/Sonar skipped는 PASS로 계산하지 않는다. 관리자 우회 병합이나 테스트 비활성화를 사용하지 않았다.
  • 실물 HSM·KVM·SharedMountPoint·LINSTOR 테스트는 NOT_RUN. 시나리오·기대 결과를 #1025에 남겼으며 전체 코드 병합 후 S8 #999에서 실행한다.

다음 코드 통합은 S6 #997이다. Epic #987, S2 #990 및 최종 실물 검증 이슈는 OPEN 유지한다.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority:high운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions