2.3 KiB
2.3 KiB
HMM MCP VPD 아키텍처
권한 흐름
포털 사용자 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로 자동 적용한다.
출력 스키마 계약
Select AI는 같은 의미의 컬럼도 호출마다 CARRIER_CODE, carrier Code, 선사코드처럼 다른
alias로 생성할 수 있다. vpd-backoffice/config/hmm_carrier_query_contract.json은 SQL을 고정하지
않고 다음 결과 alias만 고정한다.
EMPLOYEE_CODE, EMPLOYEE_NAME, MANAGER_EMPLOYEE_CODE,
CARRIER_CODE, CARRIER_NAME, LATEST_REVENUE_USD,
LATEST_GROSS_MARGIN_USD, LATEST_SCHEDULE_RELIABILITY_PCT,
LATEST_RISK_LEVEL
따라서 권한에 따라 행 수는 달라져도 renderer에 전달되는 행 구조는 매 호출 동일하다.
신뢰 경계
- 화면에 표시된 사용자 코드는 권한 근거가 아니다. 선택 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으로 차단한다.