Files

56 lines
2.4 KiB
Markdown

# #740 HMM MCP VPD 실행 경계
## 목적
HMM MCP의 인증 사용자를 Oracle DB 세션 사용자 문맥으로 연결하고, HR 및 선사 배정 데이터를
Oracle VPD로 제한한다. 팀원은 본인 행, 팀장은 본인과 직속 팀원 행을 조회한다.
## 범위와 결정사항
- 포털의 사용자 preset은 각각 다른 Bearer token 환경변수를 사용한다.
- 백오피스는 token hash로 직원을 식별하고 실제 SELECT와 같은 `CB_ORDS` 연결에
`SET_VPD_CONTEXT`를 호출한다.
- `ADMIN``EXEMPT ACCESS POLICY`가 있으므로 Select AI `SHOWSQL` 생성만 담당한다.
- `HMM_CARRIER_ASSIGNMENTS_V.EMPLOYEE_ID``SELF`, `MANAGED_TEAM`, `ALL` 규칙을 적용한다.
- 기존 MCP 이름 `search_carrier_performance`, 자연어 Select AI, 선사 `CARRIER_CODE` 조인과 HTML
renderer는 유지한다. 고정 SQL이나 대체 조회 패키지를 만들지 않는다.
- 연속 호출에서도 renderer 입력이 달라지지 않도록 Select AI 질의 계약이 출력 컬럼의 ASCII
uppercase underscore 별칭을 고정한다.
## 전체 구성
```text
포털 사용자 preset
→ 사용자별 Bearer token
→ token hash로 EMPLOYEE_ID 확인
→ ADMIN Select AI SHOWSQL 생성
→ CB_ORDS 연결에서 SET_VPD_CONTEXT
→ 생성 SELECT 실행
→ HMM_CARRIER_ASSIGNMENTS_V VPD
├─ E1001 팀장: 직속 팀원 배정 8건
└─ E1002 팀원: 본인 배정 C001·C002 2건
→ 허용된 CARRIER_CODE만 원격 KPI와 조인
→ HTML renderer
```
핵심은 token 소유자, DB context의 직원, VPD predicate가 동일한 요청 안에서 이어지는 것이다.
`SET_VPD_CONTEXT`를 호출해도 `EXEMPT ACCESS POLICY`를 가진 연결에서 SELECT하면 정책이 우회된다.
## 현재 상태
2026-08-10 운영 적용 및 MCP 호출 검증을 완료했다.
- 사용자별 portal token 5개가 서로 다른 hash로 직원에게 연결됨
- `HMM_CARRIER_SCOPE_POLICY` 활성화
- MCP E1001: `vpdEnforced=true`, 8건
- MCP E1002: `vpdEnforced=true`, 2건, 직원 범위 E1002만 포함
- E1002 renderer: 입력 2건, HTML에 C001·C002 포함, E1003 미포함
- 동일 E1002 조회와 renderer를 두 번 연속 호출해 두 호출 모두 표준 컬럼 9개와 HTML 2건을 확인
## 문서 지도
- [아키텍처와 신뢰 경계](architecture.md)
- [적용 및 검증 절차](cookbook.md)
- [문제 해결](troubleshooting.md)
- [HTML 리포트 후속 처리](../hmm-html-report-mcp/README.md)