42 lines
1.7 KiB
Markdown
42 lines
1.7 KiB
Markdown
# HMM MCP VPD 아키텍처
|
|
|
|
[개요](README.md) · [적용 절차](cookbook.md) · [문제 해결](troubleshooting.md)
|
|
|
|
## 권한 흐름
|
|
|
|
```text
|
|
포털 사용자 preset
|
|
→ 사용자별 Bearer token
|
|
→ token hash로 EMPLOYEE_ID 식별
|
|
→ HMM_ACCESS_CTX.EMPLOYEE_ID 설정
|
|
→ Select AI가 만든 SELECT를 CB_ORDS에서 실행
|
|
→ HMM_CARRIER_ASSIGNMENTS_V VPD
|
|
├─ VIEWER: 본인 EMPLOYEE_ID
|
|
└─ MANAGER: 본인과 직속 팀원 EMPLOYEE_ID
|
|
→ 허용된 CARRIER_CODE만 원격 선사 실적과 조인
|
|
→ HTML renderer
|
|
```
|
|
|
|
선사 조회의 자연어 처리와 `CARRIER_CODE` 조인은 기존 Select AI 프로필을 유지한다. 권한 조건을
|
|
질문이나 고정 SQL에 넣지 않고 Oracle VPD가 세션 사용자 ID로 자동 적용한다.
|
|
|
|
## 신뢰 경계
|
|
|
|
- 화면에 표시된 사용자 코드는 권한 근거가 아니다. 선택 preset의 전용 Bearer token이 근거다.
|
|
- 토큰 원문은 서버 환경에만 저장하고 DB에는 SHA-256 hash만 저장한다.
|
|
- `ADMIN`은 `EXEMPT ACCESS POLICY`가 있으므로 SQL 생성만 수행한다.
|
|
- 실제 SELECT는 비면제 계정 `CB_ORDS`가 같은 요청의 VPD context를 설정한 뒤 실행한다.
|
|
- renderer는 이미 필터링된 행만 표현하며 사용자나 권한을 다시 판단하지 않는다.
|
|
|
|
## 선사 VPD 규칙
|
|
|
|
보호 객체는 `ADMIN.HMM_CARRIER_ASSIGNMENTS_V`, 기준 컬럼은 `EMPLOYEE_ID`다.
|
|
|
|
| 역할 | 규칙 | 적용 범위 |
|
|
|---|---|---|
|
|
| `HMM_HR_VIEWER` | `SELF` | 현재 인증 사용자 |
|
|
| `HMM_HR_MANAGER` | `MANAGED_TEAM` | 현재 사용자와 직속 팀원 |
|
|
| `HMM_HR_ADMIN` | `ALL` | 명시적 관리자 전체 |
|
|
|
|
컨텍스트, 활성 역할 또는 허용 규칙이 없으면 `1=0`으로 차단한다.
|