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

1.5 KiB

함수 명세: publishDdsPlanverifyDdsIsolation (#617)

상태: Draft · 분류: 보호 Object provisioning·검증·드리프트

책임

승인된 Object/CRUD/컬럼 그룹 provisioning DDL을 멱등 실행하고, dictionary와 representative END USER matrix로 실제 결과를 확인한다. 권한 값 변경 자체는 이 함수를 호출하지 않는다.

시그니처

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

게시 규칙

  1. 승인 사유와 diff fingerprint가 없으면 게시하지 않는다.
  2. Publisher lock으로 같은 보호 객체의 동시 provisioning을 막는다.
  3. 공통 Data Role, 신규 END USER, 함수 prerequisite, 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. 권한 테이블의 ALLOW/DENY·역할 변경이 DDL 없이 다음 SQL에 반영되는지 검증한다.
  4. Context attach/clear 격리 검증이 실패하면 publish 결과를 정상으로 표시하지 않는다.

실패

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