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