Files

Redmine #490 - VPD Policy/Filter/적용 계층 정리 설계

프로젝트 개요

VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이블로 제어하기 위한 Spring Boot 관리 도구다. VPD 설정 화면은 Oracle DB의 TABLE/VIEW에 VPD policy를 적용하고, policy는 filter function을 참조한다. ORDS는 VPD가 적용된 TABLE/VIEW를 HTTP API로 서빙하는 별도 레이어다.

목표

VPD 설정 화면에서 개별 적용과 벌크 적용이 같은 계층으로 보이게 정리한다.

정리할 계층:

  1. Filter Function: 행 predicate를 반환하는 PL/SQL 함수
  2. Policy Template: policy name, filter function, statement type, enabled/check option 조합
  3. TABLE/VIEW 적용: 선택한 policy template을 개별 객체 또는 스키마 객체 목록에 적용

문제

현재 벌크 적용 폼은 VPD Filter FunctionFilter predicate를 직접 입력받는다. 이 표현은 filter function을 TABLE/VIEW에 직접 붙이는 것처럼 보이고, 개별 적용의 Policy / Filter 선택 흐름과도 다르다.

설계

  • 개별 적용과 벌크 적용 모두 Policy Template 선택을 중심으로 한다.
  • 선택한 template에서 policyName, functionKey, statement type, enabled, update check 값을 hidden field와 checkbox로 동기화한다.
  • 벌크 적용 backend는 선택한 policyName을 명시적으로 받아 각 대상 TABLE/VIEW에 같은 policy name으로 적용한다.
  • filter function 자동 생성 입력은 이번 화면에서 제거한다. filter/policy 관리는 Filter Policy 관리 메뉴에서 수행한다.
  • 선택한 template의 policy name, filter function, statement types를 preview로 표시한다.

완료 기준

  • VPD 설정 화면에서 개별 적용과 벌크 적용 모두 적용할 Policy Template을 선택한다.
  • 벌크 적용 화면에서 VPD Filter Function, Filter predicate 직접 입력이 사라진다.
  • 선택한 template의 policy/function/statement/enabled/check option preview가 표시된다.
  • controller/service가 벌크 적용 시 선택된 policy name과 function key를 사용한다.
  • 기존 개별 적용 동작은 유지된다.

검증

  • mvn test
  • Playwright 화면 확인:
    • /vpd-policies 개별 적용에 policy template preview 표시
    • /vpd-policies 벌크 적용에 policy template select 표시
    • 벌크 적용에 filter function 직접 선택/textarea가 없음
    • 390px 모바일 body overflow 없음