From 45621e1b7d853c707d285c878bd4e1b3882a0d44 Mon Sep 17 00:00:00 2001 From: devmrko Date: Wed, 1 Jul 2026 08:04:39 +0900 Subject: [PATCH] ui: reshape DDS navigation as management console --- .../src/main/resources/static/css/dds.css | 9 +++++ .../main/resources/templates/dds-home.html | 18 +++++----- .../resources/templates/dds-provision.html | 14 ++++---- .../src/main/resources/templates/dds.html | 13 +++---- .../resources/templates/fragments/layout.html | 36 ++++++++++++------- .../resources/templates/vector-knowledge.html | 26 +++++++------- .../resources/templates/vpd-policies.html | 6 ++-- 7 files changed, 69 insertions(+), 53 deletions(-) diff --git a/dds-backoffice/src/main/resources/static/css/dds.css b/dds-backoffice/src/main/resources/static/css/dds.css index 0f9319b..a101783 100644 --- a/dds-backoffice/src/main/resources/static/css/dds.css +++ b/dds-backoffice/src/main/resources/static/css/dds.css @@ -67,6 +67,14 @@ body { margin: 0; background: var(--dds-bg); color: var(--dds-ink); font-family: .journey-card-compact h2 { margin: 0 0 .25rem; } .journey-card-compact strong { font-size: .8rem; } .compact-context { padding: .75rem; } +.architecture-strip:has(.dds-product-nav) { background: transparent; border: 0; display: block; margin: 0 0 1.25rem; padding: 0; } +.dds-product-nav { background: #fff; border: 1px solid var(--dds-line); border-radius: 10px; display: flex; gap: .25rem; overflow-x: auto; padding: .3rem; } +.dds-product-nav a { border-radius: 7px; color: var(--dds-muted); font-size: .86rem; font-weight: 700; padding: .5rem .75rem; text-decoration: none; white-space: nowrap; } +.dds-product-nav a:hover { background: #f1f4fb; color: var(--dds-ink); } +.dds-product-nav a.active { background: #e8edff; color: var(--dds-accent-dark); } +.page-title .context-summary { font-size: .95rem; max-width: 700px; } +.explanation-details > summary { color: #43516a; font-size: .86rem; } +.explanation-details > summary::marker { color: var(--dds-accent); } .protection-summary { border-top: 3px solid #3157d5; } .protection-status-card { background: #fbfcff; border: 1px solid #dbe3f4; border-radius: 14px; margin-top: 1rem; padding: 1.25rem; } .protection-status-card.status-danger { background: #fffafa; border-color: #f2c8c8; } @@ -104,4 +112,5 @@ body { margin: 0; background: var(--dds-bg); color: var(--dds-ink); font-family: .panel { padding: 19px; } .hero { padding-top: 30px; } .protection-status-topline, .protection-status-footer { align-items: flex-start; flex-direction: column; } + .dds-product-nav { border-radius: 8px; } } diff --git a/dds-backoffice/src/main/resources/templates/dds-home.html b/dds-backoffice/src/main/resources/templates/dds-home.html index 8945ae0..901dab3 100644 --- a/dds-backoffice/src/main/resources/templates/dds-home.html +++ b/dds-backoffice/src/main/resources/templates/dds-home.html @@ -7,9 +7,9 @@
DEEP DATA SECURITY

DDS 권한 운영

-

권한 설계 · 보호 상태 · 권한 게시 · 권한 검색

+

권한 관리 · 보호 정책 관리 · 지식자료 관리 · 접근 검증

- 이 공간의 역할 보기 + 도움말

사용자·그룹·역할·접근 규칙을 기준으로 지식자료의 접근 범위를 운영합니다. DDS는 보호 객체별 DATA GRANT로 이 기준을 집행합니다.

일상적인 권한 변경은 권한 관리에서 하고, 이 공간에서는 보호 상태와 실제 접근 결과를 확인합니다.

@@ -18,16 +18,16 @@
DDS 관리 데이터를 불러오지 못했습니다.
- 1

권한 설계

열기 →
- 2

보호 상태

열기 →
- 3

권한 게시

열기 →
- 4

권한 검색

열기 →
- 5

보호 범위

열기 →
+

권한 관리

열기 →
+

보호 정책 관리

열기 →
+

정책 적용

열기 →
+

지식자료 관리

열기 →
+

보호 대상 관리

열기 →
- 권한 적용 흐름 설명 보기 + 도움말
MACRO · 전체 관점

관리 기준은 하나입니다.

누가 어떤 지식자료를 볼 수 있는지는 사용자·그룹·역할·권한 규칙에서 설명합니다. VPD와 DDS는 같은 기준을 서로 다른 DB 보호 방식으로 집행합니다.

MICRO · 실행 관점

객체별 DATA GRANT가 최종 집행합니다.

토큰 경로는 Bearer → CB_AGENT_CTX → DATA GRANT predicate → 보호 VIEW, 직접 비교는 END USER → DATA ROLE → DATA GRANT → 보호 VIEW입니다. 권한이 없으면 객체가 보이지 않아 ORA-00942가 될 수 있습니다.

@@ -47,7 +47,7 @@ ADMIN.CB_DDS_VECTOR_SEARCH_DOCUMENTS객체별 분류값 DATA GRANT + 토큰 Context + VECTOR_DISTANCE지식 검색
- 보호 대상 기술 상세 보기 + 기술 상세

주 대상은 업무 분류값이 붙은 벡터 지식자료 검색입니다. 원본 테이블은 직접 접근 비교를 위한 고급 검증에만 사용합니다.

diff --git a/dds-backoffice/src/main/resources/templates/dds-provision.html b/dds-backoffice/src/main/resources/templates/dds-provision.html index e385f74..57cef3f 100644 --- a/dds-backoffice/src/main/resources/templates/dds-provision.html +++ b/dds-backoffice/src/main/resources/templates/dds-provision.html @@ -1,25 +1,25 @@ - +
DDS · PUBLISH -

권한 변경을 보호 규칙에 게시

+

보호 정책 적용

사용자·그룹·역할의 접근 규칙을 검토한 뒤 DDS 보호 규칙에 반영합니다.

- 게시 방식 기술 상세 보기 + 도움말

이 화면은 직접 DDS END USER 비교 경로와 일반 객체의 선언형 Grant를 미리 보고 게시하는 단계입니다. 토큰 기반 벡터 경로는 별도 객체별 Data Grant predicate가 요청 시 공통 권한 테이블을 다시 평가합니다.

그룹 자체를 DDS 그룹으로 복사하지는 않습니다. 애플리케이션 그룹의 역할 상속을 계산해 직접 비교용 DATA ROLE Grant에 반영하고, 토큰 경로에서는 같은 effective role 계산을 predicate 함수가 사용합니다.

-
+
- 권한 규칙과 보호 객체의 매핑 기준 + 도움말
@@ -43,7 +43,7 @@
- 1 · COMPILE + 변경 검토

게시 전 변경 내용

직접 부여된 역할과 활성 그룹의 역할을 합쳐 보호 규칙을 만듭니다.

@@ -88,7 +88,7 @@
- 게시 SQL 기술 상세 보기 + 기술 상세
GRANT
CREATE OR REPLACE DATA GRANT ...
diff --git a/dds-backoffice/src/main/resources/templates/dds.html b/dds-backoffice/src/main/resources/templates/dds.html index 3f2ce4a..905f789 100644 --- a/dds-backoffice/src/main/resources/templates/dds.html +++ b/dds-backoffice/src/main/resources/templates/dds.html @@ -1,35 +1,32 @@ - +
DEEP DATA SECURITY · KNOWLEDGE POLICY -

지식자료 보호 범위

+

보호 대상 관리

벡터화된 지식자료와 접근 분류값을 기준으로 접근 범위를 관리합니다.

- 접근 기준 예시 보기 + 도움말

세일즈 사용자의 Bearer 토큰은 공통 권한 테이블의 agent_sales로 매핑됩니다. 역할에 ALLOW TAG SALES가 있으면 보호 VIEW의 TECH_TAG 값에 SALES가 포함된 청크만 DDS Data Grant를 통과합니다.

문서가 벡터로 검색된다는 점은 검색 방식이고, 어떤 사용자가 볼 수 있는지는 청크에 저장된 분류값과 권한 규칙이 결정합니다.

-
+
- 1
IDENTITY

업무 사용자 토큰

Bearer 토큰을 세일즈 업무 사용자로 매핑합니다.

- 2
POLICY

보호 규칙

보호 VIEW의 접근 조건과 컬럼 범위를 선언합니다.

- 3 -
3VALUE

접근 분류값

허용된 분류값이 붙은 자료만 남깁니다.

+
VALUE

접근 분류값

허용된 분류값이 붙은 자료만 남깁니다.

diff --git a/dds-backoffice/src/main/resources/templates/fragments/layout.html b/dds-backoffice/src/main/resources/templates/fragments/layout.html index 9067a83..cc6ac4c 100644 --- a/dds-backoffice/src/main/resources/templates/fragments/layout.html +++ b/dds-backoffice/src/main/resources/templates/fragments/layout.html @@ -18,33 +18,34 @@ Deep Data Security
+ th:text="${backofficeTrack == 'DDS' ? '보호 정책 관리' : '2. 보호·검증'}">2. 보호·검증
DB 보호 연결 - 권한 게시 + th:text="${backofficeTrack == 'DDS' ? '정책 상태' : 'DB 보호 연결'}">DB 보호 연결 + 정책 적용 검증 세션 발급 권한 결과 확인 - 보호 범위 + 보호 대상 관리 + DDS 직접 조회
- +
+ +
1 · WHO / WHAT 권한 설계 @@ -97,6 +106,7 @@ 결과 확인

보호 정책을 통과한 데이터만 실제 결과로 확인합니다.

+
diff --git a/dds-backoffice/src/main/resources/templates/vector-knowledge.html b/dds-backoffice/src/main/resources/templates/vector-knowledge.html index d2e7620..9bf3091 100644 --- a/dds-backoffice/src/main/resources/templates/vector-knowledge.html +++ b/dds-backoffice/src/main/resources/templates/vector-knowledge.html @@ -1,21 +1,21 @@ - +
DDS · KNOWLEDGE ACCESS -

지식자료와 접근 권한

+

지식자료 관리

등록 · 접근 규칙 · 업무 사용자 검색 · 고급 검증

- 접근 방식 보기 + 도움말

문서는 검색 단위로 나뉘고 각 단위에 접근 분류값(TECH_TAG)이 연결됩니다. 역할별 허용 값을 등록하면 보호 규칙이 허용된 분류값만 검색 대상으로 남깁니다.

기본 경로는 Bearer 토큰으로 업무 사용자를 식별합니다. 직접 접근 비교는 고급 검증에서만 사용합니다.

-
+
@@ -26,14 +26,14 @@
- 1 · CONTENT + 지식자료

지식자료 등록

문서 ID가 같으면 기존 검색 단위를 교체합니다.

0개 검색 단위
- 청킹·임베딩 설정 보기 + 도움말
  • 문단을 우선 묶고 길이가 길면 문장·공백 기준으로 청크를 나눕니다.
  • 기본 로컬 임베딩은 외부 API 없이 흐름을 확인하는 개발용 4차원 벡터입니다.
  • @@ -70,7 +70,7 @@
    - 2 · POLICY + 접근 규칙

    권한 규칙은 한 곳에서 관리합니다.

    사용자·그룹·역할·접근 분류 규칙을 한 곳에서 관리합니다.

    @@ -84,7 +84,7 @@

    보호 방식

    ADMIN.CB_DDS_VECTOR_SEARCH_DOCUMENTS의 보호 규칙이 업무 사용자와 접근 분류값을 비교합니다.

    - 보호 방식 기술 상세 보기 + 도움말

    VPD는 요청마다 권한 테이블을 읽어 predicate를 계산합니다. DDS의 직접 비교 경로는 보호 VIEW에 선언한 DATA GRANT와 END USER 매핑을 사용합니다. 토큰 경로에서는 토큰이 공통 사용자 Context를 만들고, 보호 VIEW의 객체별 DATA GRANT predicate가 같은 권한 테이블을 다시 평가합니다.

    @@ -92,14 +92,14 @@
    - 3 · TOKEN CONTEXT + 업무 사용자 검색

    업무 사용자 검색

    하나의 기술 사용자 연결에서 Bearer 토큰으로 업무 사용자를 식별합니다.

    객체별 DATA GRANT
    - 업무 사용자 검색 기술 상세 보기 + 도움말
    1. 서버가 설정한 하나의 DDS 기술 사용자로 연결합니다.
    2. Bearer 토큰을 CB_AGENT_CTX_PKG.SET_USER_BY_BEARER에 전달합니다.
    3. @@ -134,14 +134,14 @@
      - 4 · DIRECT CHECK + 고급 검증

      고급: 직접 접근 비교

      DDS 선언형 보호 규칙 점검용 고급 검증

      DDS view
      - 검색 처리 방식 보기 + 도움말
      1. 검색어를 등록 때와 같은 방식으로 임베딩합니다.
      2. DDS END USER로 보호 VIEW에 연결합니다.
      3. @@ -177,7 +177,7 @@
        - 저장 현황 보기 + 저장 현황
        문서0
        검색 단위0
        diff --git a/dds-backoffice/src/main/resources/templates/vpd-policies.html b/dds-backoffice/src/main/resources/templates/vpd-policies.html index 020159e..7d79bc7 100644 --- a/dds-backoffice/src/main/resources/templates/vpd-policies.html +++ b/dds-backoffice/src/main/resources/templates/vpd-policies.html @@ -1,12 +1,12 @@ - +
        DDS · PROTECTION STATUS -

        DDS 보호 상태

        +

        보호 정책 관리

        지식 검색에 쓰는 보호 객체가 현재 권한 기준대로 연결되어 있는지 확인합니다.

        @@ -87,7 +87,7 @@
- 두 집행 경로의 차이 보기 + 도움말
업무 사용자 검색기술 사용자 연결에서 Bearer 토큰으로 업무 사용자를 식별합니다. 보호 규칙이 현재 접근 권한을 평가합니다.
직접 접근 비교게시된 DATA ROLE과 DATA GRANT를 직접 확인하는 고급 진단 경로 · 권한 변경 뒤 별도 게시 필요
공통 권한 관리DDS에서의 표현반영 시점