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

34 lines
1.3 KiB
Markdown

# 함수 명세: `compileDdsPublishPlan` (#617)
> **상태**: Draft · **분류**: 복잡 — 권한 컴파일·DDL diff·안전 검증
## 책임
DDS 백오피스의 보호 객체, 접근 역할, 테이블 세부 권한, 사용자/그룹 할당을 실행 가능한 DDS DDL diff로 바꾼다.
## 시그니처
`DdsAuthorizationDraft -> DdsPublishPlan`
## 규칙
1. 그룹을 포함해 역할별 유효 사용자를 계산한다.
2. `CB_APP_USER.userId`마다 ASCII `DDS_U_<id>` END USER 이름을 결정한다.
3. 접근 역할마다 하나의 stable DATA ROLE 이름을 결정한다.
4. 사용자·역할·객체·세부 권한의 현재 게시 상태와 목표 상태를 비교한다.
5. 생성/교체/회수 DDL과 예상 영향 사용자·객체를 계산한다.
6. 행 조건 DSL은 whitelist 기반 compiler만 사용한다. raw SQL은 거부한다.
7. `DENY` 또는 지원하지 않는 권한 조합은 plan 생성 단계에서 오류로 끝낸다.
## 출력
- END USER 생성/활성화/비활성화 목록
- DATA ROLE 생성/역할 부여/회수 목록
- DATA GRANT 생성·교체·삭제 목록
- 예상 영향 사용자·객체·컬럼 matrix
- 이전/목표 fingerprint와 승인 대상 diff
## 실패
충돌, 비활성 객체, DSL 오류, DENY 규칙, 이름 충돌은 게시 전에 차단한다.