34 lines
1.3 KiB
Markdown
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 규칙, 이름 충돌은 게시 전에 차단한다.
|