refs #740: enforce carrier VPD by MCP user
This commit is contained in:
41
docs/design/740-hmm-mcp-vpd-runtime/architecture.md
Normal file
41
docs/design/740-hmm-mcp-vpd-runtime/architecture.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 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`으로 차단한다.
|
||||
Reference in New Issue
Block a user