Files
vpd-permission-poc/docs/design/740-hmm-mcp-vpd-runtime

#740 HMM MCP VPD 실행 경계

목적

HMM MCP의 인증 사용자를 Oracle DB 세션 사용자 문맥으로 연결하고, HR 및 선사 배정 데이터를 Oracle VPD로 제한한다. 팀원은 본인 행, 팀장은 본인과 직속 팀원 행을 조회한다.

범위와 결정사항

  • 포털의 사용자 preset은 각각 다른 Bearer token 환경변수를 사용한다.
  • 백오피스는 token hash로 직원을 식별하고 실제 SELECT와 같은 CB_ORDS 연결에 SET_VPD_CONTEXT를 호출한다.
  • ADMINEXEMPT ACCESS POLICY가 있으므로 Select AI SHOWSQL 생성만 담당한다.
  • HMM_CARRIER_ASSIGNMENTS_V.EMPLOYEE_IDSELF, MANAGED_TEAM, ALL 규칙을 적용한다.
  • 기존 MCP 이름 search_carrier_performance, 자연어 Select AI, 선사 CARRIER_CODE 조인과 HTML renderer는 유지한다. 고정 SQL이나 대체 조회 패키지를 만들지 않는다.

전체 구성

포털 사용자 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 미포함

문서 지도