From 6e4a306dcd8f317a170b14ea4bbdb458e38cf3fa Mon Sep 17 00:00:00 2001 From: devmrko Date: Fri, 26 Jun 2026 05:17:27 +0900 Subject: [PATCH] feat #477: show vpd ords control architecture --- .../477-oracle-vpd-ords-control-ux/README.md | 25 +++++++++ src/main/resources/static/css/app.css | 54 +++++++++++++++++++ src/main/resources/templates/dashboard.html | 4 +- .../resources/templates/fragments/layout.html | 22 +++++++- src/main/resources/templates/objects.html | 4 +- src/main/resources/templates/permissions.html | 4 +- src/main/resources/templates/probe.html | 4 +- .../resources/templates/vpd-policies.html | 4 +- 8 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 docs/design/477-oracle-vpd-ords-control-ux/README.md diff --git a/docs/design/477-oracle-vpd-ords-control-ux/README.md b/docs/design/477-oracle-vpd-ords-control-ux/README.md new file mode 100644 index 0000000..4c5841d --- /dev/null +++ b/docs/design/477-oracle-vpd-ords-control-ux/README.md @@ -0,0 +1,25 @@ +# #477 Oracle VPD/ORDS와 권한 테이블 제어 구조 표시 + +## 배경 + +이 백오피스는 Oracle Database의 VPD와 ORDS 기능을 새로 구현하는 도구가 아니다. Oracle이 제공하는 기능을 사용하되, 애플리케이션 권한 테이블로 제어하고 운영자가 결과를 확인할 수 있게 만든 도구다. + +## 구조 + +1. Backoffice Tables + - 사용자, 역할, 권한, 행 규칙, 컬럼 원문 허용을 저장한다. + - VPD policy function이 이 테이블을 조회해 predicate를 만든다. +2. Oracle Database VPD + - TABLE/VIEW에 policy function을 붙인다. + - SELECT 시점에 DB가 행 접근을 제한한다. +3. ORDS + - VPD가 적용된 TABLE/VIEW를 HTTP API로 서빙한다. + - Bearer Token을 받아 DB session context를 세팅하고 결과를 확인한다. + +## UX 결정 + +- 대시보드에 전체 구조를 표시한다. +- 권한 관리 화면은 Backoffice Tables 레이어를 강조한다. +- VPD 설정 화면은 Oracle Database VPD 레이어를 강조한다. +- ORDS Handler 생성과 ORDS 검증 화면은 ORDS 서빙/검증 레이어를 강조한다. +- VPD 적용 대상은 TABLE/VIEW로 표기하고, ORDS path는 서빙/검증 화면에서만 노출한다. diff --git a/src/main/resources/static/css/app.css b/src/main/resources/static/css/app.css index 7e75f4b..2ae7e6e 100644 --- a/src/main/resources/static/css/app.css +++ b/src/main/resources/static/css/app.css @@ -184,6 +184,14 @@ body { .rw-menu-group:focus-within .rw-menu-panel { display: grid; } + + .architecture-strip { + grid-template-columns: 1fr; + } + + .architecture-arrow { + display: none; + } } .page-title { @@ -201,6 +209,52 @@ body { margin: .35rem 0 0; } +.architecture-strip { + align-items: stretch; + display: grid; + gap: .5rem; + grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr); + margin-bottom: 1rem; +} + +.architecture-step { + background: var(--rw-surface); + border: 1px solid var(--rw-border); + border-radius: 8px; + padding: .85rem; +} + +.architecture-step.active { + border-color: var(--rw-primary); + box-shadow: inset 0 0 0 1px var(--rw-primary); +} + +.architecture-kicker { + color: var(--rw-muted); + display: block; + font-size: .72rem; + font-weight: 800; + text-transform: uppercase; +} + +.architecture-step strong { + display: block; + font-size: .95rem; + margin-top: .15rem; +} + +.architecture-step p { + color: var(--rw-muted); + font-size: .82rem; + margin: .25rem 0 0; +} + +.architecture-arrow { + align-self: center; + color: var(--rw-muted); + font-weight: 800; +} + .rw-card, .content-band, .summary-tile { diff --git a/src/main/resources/templates/dashboard.html b/src/main/resources/templates/dashboard.html index 3e1d7f1..ddf1da7 100644 --- a/src/main/resources/templates/dashboard.html +++ b/src/main/resources/templates/dashboard.html @@ -6,9 +6,11 @@

VPD 권한 백오피스

-

보호 객체, Bearer Token, ORDS 검증 상태를 확인합니다.

+

Oracle Database의 VPD/ORDS 기능을 권한 테이블과 운영 UI로 제어하고 검증합니다.

+
+
데이터 처리 오류가 발생했습니다.
diff --git a/src/main/resources/templates/fragments/layout.html b/src/main/resources/templates/fragments/layout.html index 7c92f98..bf7748f 100644 --- a/src/main/resources/templates/fragments/layout.html +++ b/src/main/resources/templates/fragments/layout.html @@ -25,7 +25,7 @@
- +
조회 Handler 생성 ORDS 검증 @@ -57,5 +57,25 @@
+ +
+
+ Backoffice Tables + 권한 테이블 +

사용자, 역할, 행 규칙, 컬럼 원문 허용을 저장합니다.

+
+
+
+ Oracle Database + VPD Policy +

TABLE/VIEW에 policy function을 붙여 DB에서 행 접근을 제한합니다.

+
+
+
+ Oracle REST Data Services + ORDS 서빙/검증 +

VPD가 적용된 TABLE/VIEW를 HTTP API로 호출해 결과를 확인합니다.

+
+
diff --git a/src/main/resources/templates/objects.html b/src/main/resources/templates/objects.html index e3d54f8..36d72f4 100644 --- a/src/main/resources/templates/objects.html +++ b/src/main/resources/templates/objects.html @@ -6,9 +6,11 @@

ORDS 조회 Handler 생성

-

DB 테이블/뷰를 선택해 Bearer Token 기반 VPD 검증용 ORDS 조회 Handler 경로를 등록하고 생성합니다.

+

VPD가 적용된 TABLE/VIEW를 ORDS HTTP 경로로 서빙하기 위한 조회 Handler를 등록합니다.

+
+
diff --git a/src/main/resources/templates/permissions.html b/src/main/resources/templates/permissions.html index acadf69..b48c2ad 100644 --- a/src/main/resources/templates/permissions.html +++ b/src/main/resources/templates/permissions.html @@ -6,9 +6,11 @@

권한 관리

-

역할별 보호 객체 접근과 행 규칙을 저장합니다.

+

VPD policy function이 참조할 사용자, 역할, 행 규칙, 컬럼 원문 허용 규칙을 저장합니다.

+
+
diff --git a/src/main/resources/templates/probe.html b/src/main/resources/templates/probe.html index be382e9..c03bef8 100644 --- a/src/main/resources/templates/probe.html +++ b/src/main/resources/templates/probe.html @@ -6,9 +6,11 @@

ORDS 검증

-

Bearer Token과 보호 객체를 선택해 VPD/Redaction 적용 결과를 확인합니다.

+

ORDS가 서빙하는 TABLE/VIEW 호출 결과로 VPD/Redaction 적용 여부를 확인합니다.

+
+

ORDS 호출

diff --git a/src/main/resources/templates/vpd-policies.html b/src/main/resources/templates/vpd-policies.html index 10aa74f..5bcebd5 100644 --- a/src/main/resources/templates/vpd-policies.html +++ b/src/main/resources/templates/vpd-policies.html @@ -6,9 +6,11 @@

VPD 설정

-

보호 객체에 적용된 Oracle VPD policy와 policy function/filter predicate를 확인합니다.

+

Oracle Database의 TABLE/VIEW에 VPD policy와 policy function/filter predicate를 적용합니다.

+
+
조회할 수 없습니다. message