45 lines
2.4 KiB
Markdown
45 lines
2.4 KiB
Markdown
# 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 Function`과 `Filter 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 없음
|