Files
vpd-permission-poc/docs/design/740-hmm-mcp-vpd-runtime/architecture.md
2026-08-10 17:26:01 +09:00

1.7 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로 자동 적용한다.

신뢰 경계

  • 화면에 표시된 사용자 코드는 권한 근거가 아니다. 선택 preset의 전용 Bearer token이 근거다.
  • 토큰 원문은 서버 환경에만 저장하고 DB에는 SHA-256 hash만 저장한다.
  • ADMINEXEMPT 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으로 차단한다.