Files
vpd-permission-poc/docs/reference/ords-vpd-sql-trace.md
2026-06-30 11:40:02 +09:00

1.2 KiB

ORDS/VPD SQL trace

권한 결과 확인(/probe)은 ORDS 응답의 optional vpd_predicate, effective_sql 필드를 “토큰 적용 후 SQL” 영역에 표시한다.

{
  "vpd_predicate": "(DEPT_CODE = SYS_CONTEXT('CB_AGENT_CTX', 'DEPT_CODE'))",
  "effective_sql": "SELECT ... WHERE (...) AND ROWNUM <= ...",
  "items": []
}

기존 Handler가 trace 필드를 반환하지 않으면 백오피스가 같은 DB 연결에서 set_user_by_bearerCB_AGENT_DOC_VPD_FILTERclear_user 순서로 기본 VPD predicate를 조회한다. 이 보조 조회가 실패해도 권한 결과 자체는 실패 처리하지 않는다.

기존 설치에 trace 권한을 추가하려면 ADMIN으로 sql/adb/33_agent_ords_sql_trace_grant.sql을 실행한 뒤 CB_ORDS로 22_agent_ords_security_ords_handler_setup.sql을 재실행하거나 /ords-handlers에서 trace가 포함된 Handler source를 저장한다.

표시되는 SQL은 Oracle optimizer 실행계획이 아니라, 해당 토큰 컨텍스트에서 VPD 정책 함수가 반환한 행 predicate를 기본 Handler SELECT에 결합한 확인용 SQL이다. Bearer 원문은 trace나 응답에 포함하지 않는다.