1.4 KiB
1.4 KiB
함수 명세: publishDdsPlan 및 verifyDdsIsolation (#617)
상태: Draft · 분류: 복잡 — 보안 DDL 변경·검증·드리프트
책임
승인된 DDL plan을 멱등 실행하고, dictionary와 representative END USER matrix로 실제 결과를 확인한다.
시그니처
DdsPublishPlan, Reason -> DdsPublishRunDdsPublishRun -> DdsVerificationResult
게시 규칙
- 승인 사유와 diff fingerprint가 없으면 게시하지 않는다.
- Publisher lock으로 같은 보호 객체의 동시 게시를 막는다.
- END USER/Data Role/Data Grant를 dependency 순서로 적용한다.
- 각 DDL 결과와 Oracle 오류를
DdsPublishRun에 기록한다. - 중간 실패 시 성공으로 표시하지 않는다. 부분 적용 상태로 기록하고 drift로 승격한다.
검증 규칙
DBA_END_USERS,DBA_DATA_ROLES,DBA_DATA_ROLE_GRANTS,DBA_DATA_GRANTS를 목표 fingerprint와 비교한다.- 대표 사용자별 Context, 객체 접근, 행, 컬럼 결과를 검증한다.
- 역할 제거와 객체 미권한 경로도 반드시 검증한다.
- Context attach/clear 격리 검증이 실패하면 publish 결과를 정상으로 표시하지 않는다.
실패
게시·검증 실패는 FAILED 또는 DRIFT 상태다. MCP 요청 경로는 마지막 성공 게시 상태를 우회 권한으로 사용하지 않는다.