32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# 함수 명세: `publishDdsPlan` 및 `verifyDdsIsolation` (#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 요청 경로는 마지막 성공 게시 상태를 우회 권한으로 사용하지 않는다.
|