Files
vpd-permission-poc/docs/design/617-dds-mcp-end-user-context/fn-publish-and-verify-dds-plan.md

1.4 KiB

함수 명세: publishDdsPlanverifyDdsIsolation (#617)

상태: Draft · 분류: 복잡 — 보안 DDL 변경·검증·드리프트

책임

승인된 DDL plan을 멱등 실행하고, dictionary와 representative END USER matrix로 실제 결과를 확인한다.

시그니처

  • DdsPublishPlan, Reason -> DdsPublishRun
  • DdsPublishRun -> DdsVerificationResult

게시 규칙

  1. 승인 사유와 diff fingerprint가 없으면 게시하지 않는다.
  2. Publisher lock으로 같은 보호 객체의 동시 게시를 막는다.
  3. END USER/Data Role/Data Grant를 dependency 순서로 적용한다.
  4. 각 DDL 결과와 Oracle 오류를 DdsPublishRun에 기록한다.
  5. 중간 실패 시 성공으로 표시하지 않는다. 부분 적용 상태로 기록하고 drift로 승격한다.

검증 규칙

  1. DBA_END_USERS, DBA_DATA_ROLES, DBA_DATA_ROLE_GRANTS, DBA_DATA_GRANTS를 목표 fingerprint와 비교한다.
  2. 대표 사용자별 Context, 객체 접근, 행, 컬럼 결과를 검증한다.
  3. 역할 제거와 객체 미권한 경로도 반드시 검증한다.
  4. Context attach/clear 격리 검증이 실패하면 publish 결과를 정상으로 표시하지 않는다.

실패

게시·검증 실패는 FAILED 또는 DRIFT 상태다. MCP 요청 경로는 마지막 성공 게시 상태를 우회 권한으로 사용하지 않는다.