Files
vpd-permission-poc/docs/design/dds-protection-connection-review/606-security-design.md
2026-06-30 20:13:09 +09:00

2.5 KiB
Raw Blame History

#606 설계 보완 기준 — 보호 상태·증거 계약

목적

DDS 보호 객체 × 집행 경로의 상태를 재현 가능하게 계산한다. 이 계약은 #608 구현의 선행 조건이다.

상태 계약

각 상태 응답에는 아래 세 축을 반드시 포함한다.

관측 가능성 OBSERVED, PARTIAL, UNAVAILABLE
선언 동기화 MATCHED, NOT_PUBLISHED, DRIFTED, UNKNOWN
실행 검증 PASSED, FAILED, STALE, NOT_RUN, UNKNOWN

대표 상태는 확인 불가 → 조치 필요 → 재검증 필요 → 보호 확인 순으로 결정하되, 근거 축을 감추지 않는다. PARTIAL은 보호 확인으로 승격할 수 없다.

기대 명세와 실제 관측

  • 토큰 서비스 경로는 기술 사용자, 객체, DATA GRANT/함수/공통 권한 schema version을 immutable 명세로 남긴다.
  • 직접 비교 경로는 사용자·Role별 컴파일 결과를 게시 계획 snapshot으로 남긴다.
  • 명세에는 protectionObjectId, 집행 경로, 객체·컬럼 범위, Role/기술 사용자, canonical predicate hash, 작성 시각, 작성자, 승인 참조, 명세 version을 포함한다.
  • canonicalization/hash 정규화 규칙 자체도 schema version으로 보존한다.
  • 실제 관측은 catalog capability matrix를 거친다. DBA_DATA_GRANTS로 확인되는 grant/object/grantee와 predicate·컬럼 범위를 비교하는 승인된 추가 원천을 구분한다.
  • 비교할 수 없는 필드는 PARTIAL/UNKNOWN으로 처리하며 MATCHED로 표시하지 않는다.

오류·감사·최신성

  • dictionary 권한 부족, 연결 오류, timeout, 빈 inventory, 실제 Grant 없음은 별도의 안전한 오류 code로 구분한다.
  • 마지막 관측·마지막 정상 관측·correlation ID·관측 권한 범위를 기록한다.
  • 토큰 공통 권한 변경은 런타임 반영, 직접 비교 권한 변경은 별도 게시라는 최신성 계산 규칙을 명시한다.
  • 게시 이력은 명세 version/hash, 실행자, 사유, 승인, DB 결과, rollback 참조를 append-only로 보존한다.

검증 증거

fixture version, 명세 hash, 집행 경로, 주체 유형, control query, 반환/제외 수, 결과, 시각, 안전한 오류 분류를 기록한다. 검색 0건만으로 권한 차단을 판정하지 않는다.

완료 기준

상태 전이/우선순위표, API·persistence schema, catalog capability matrix, hash normalizer, fixture manifest와 sample record를 제공한다. #607·#608·#609가 동일한 contract를 소비할 수 있어야 한다.