Files
vpd-permission-poc/docs/reports/2026-07-13-vpd-aso-holistic-ui-review.md

11 KiB

데이터 접근 제어 백오피스 전체 UX/기능 리뷰

작성일: 2026-07-13 범위: 현재 Spring Boot 백오피스 화면, VPD/ASO/ORDS/MCP/Select AI 운영 흐름 상태: Review only

1. 결론

단순 문구 정리만으로는 충분하지 않다. 지금 화면은 기능은 많이 들어와 있지만, 사용자가 “업무 규칙을 넣으면 DB에서 어떻게 행/컬럼으로 적용되는가”를 끝까지 따라가기 어렵다.

가장 큰 개선 축은 세 가지다.

  1. 전체 흐름을 작업 단위로 묶어야 한다.

    • 사용자/역할 생성
    • 행 접근 규칙 등록
    • 보호 정책 연결
    • 컬럼 마스킹 설정
    • 토큰 발급
    • 실제 접근 검증
  2. 화면별 기본/고급을 분리해야 한다.

    • 기본 화면: 업무 의미, 현재 상태, 다음 버튼, 검증 결과
    • 고급 화면: VPD predicate, PL/SQL source, ORDS handler, raw JSON, SQL trace
  3. 모든 설정 화면에서 “설정값 → DB 적용 → 실제 검증”이 이어져야 한다.

    • 지금은 각 화면이 기능 단위로는 존재하지만, 다음 단계 연결과 검증 루프가 약하다.

2. 페르소나별 핵심 불만

페르소나 현재 불만 필요한 개선
일반 사용자 VPD/ASO/ORDS/MCP가 섞여 무엇을 눌러야 할지 모른다 “이 사용자는 무엇을 볼 수 있나?” 중심의 단순 경로
운영 관리자 변경 전후 영향과 실제 적용 여부를 한 번에 보기 어렵다 영향 사용자, 대상 객체, 검증 버튼, 최근 결과
적용 담당자 업무 조건이 WHERE predicate로 바뀌는 연결이 화면마다 끊긴다 업무 조건 → 저장 rule → VPD/ASO 해석 → 검증 결과
DB 관리자 백오피스 설정과 DB 실제 정책이 일치하는지 증적이 부족하다 DBMS_RLS/DBMS_REDACT/FGA/ORDS 상태를 한곳에서 확인
보안 담당자 guest/read-only, 토큰 처리, 원문 표시 예외의 경계가 더 명확해야 한다 변경 가능 여부, 원문 표시 범위, 감사 증적
데모/영업 사용자 KB 보험 시나리오가 화면 흐름으로 자연스럽게 보이지 않는다 설계사/지점장/관리자 시나리오 preset과 결과 비교

3. 우선순위 개선안

P0. 반드시 해야 할 개선

3.1 대시보드를 “전체 그림 + 오늘 할 일” 중심으로 재구성

현재 대시보드는 구조 설명은 좋아졌지만, 사용자가 다음 행동을 결정하기에는 아직 기능 나열에 가깝다.

개선:

  • 상단에 3개 핵심 카드:
    • 행 접근: “누가 어떤 행을 보는가”
    • 컬럼 마스킹: “허용된 행의 어떤 컬럼을 원문/마스킹으로 보는가”
    • 접근 검증: “토큰으로 실제 DB 결과를 확인한다”
  • “처음 설정” 체크리스트:
    1. 사용자/역할 준비
    2. 행 접근 규칙 등록
    3. 보호 상태 적용
    4. 컬럼 마스킹 연결
    5. 토큰 발급
    6. 접근 검증
  • DB 상태 요약:
    • VPD 정책 누락 수
    • ASO 정책 불일치 수
    • ORDS handler 누락 수
    • 최근 검증 실패 수

3.2 접근 검증 결과 화면을 탭/단계형으로 재설계

접근 검증은 이 백오피스의 최종 판단 화면이다. 현재도 결과는 나오지만, “왜 그렇게 나왔는지”를 단계별로 보기에는 부족하다.

개선:

  • 결과를 4개 섹션으로 분리:
    1. 토큰 해석 결과: 사용자, stakeholder, role, channel
    2. 행 접근 결과: 반환 행 수, 적용된 VPD predicate, ALLOW/DENY 근거
    3. 컬럼 마스킹 결과: 마스킹 대상 컬럼, 원문 허용 여부, ASO policy 상태
    4. DB 감사 증적: FGA SQL, RLS_INFO, request id
  • 잘못된 토큰은 DB 오류처럼 보이지 않게:
    • 토큰 없음
    • 등록되지 않은 토큰
    • 만료/회수 토큰
    • 권한 없음 을 분리한다.
  • 결과 테이블에서 마스킹된 컬럼에 아이콘/툴팁 표시.

3.3 행 접근 규칙 화면에 “업무 조건 → predicate 변환”을 더 강하게 표시

현재도 wizard와 preview가 있으나, 적용 담당자가 원하는 것은 “내가 고른 업무 조건이 실제 어떤 WHERE 조각이 되는가”다.

개선:

  • 조건 선택 옆에 즉시 preview:
    • 본인 담당 계약 → FC_ID = SYS_CONTEXT(...STAKEHOLDER_USER_ID...)
    • 채널 고객 → EXISTS (...) FC_CHANNEL = SYS_CONTEXT(...STAKEHOLDER_CHANNEL...)
    • 정적 SQL 조건 → 검증된 현재 객체 컬럼 조건만 허용
  • 목록 기본값은 raw rule보다 업무 문장 우선.
  • 상세에는 저장 rule, 변환 predicate, 결합 방식(AND/OR/DENY)을 같이 표시.
  • 삭제/변경 시 영향 사용자 수와 최근 검증 결과 링크 표시.

3.4 컬럼 마스킹 화면에서 설정 단계와 DB 적용 상태를 더 선명하게 분리

지금 기능은 맞지만 사용자에게는 “대상 컬럼 추가”, “규칙 연결”, “사용자 원문 허용”, “DB 정책 동기화”가 섞여 보일 수 있다.

개선:

  • 단계형 표시:
    1. 마스킹 후보 컬럼 등록
    2. 기본 마스킹 규칙 연결
    3. 원문 표시 허용 사용자 지정
    4. DB ASO 정책 동기화 상태 확인
  • 컬럼별 “현재 실제 동작” preview:
    • 일반 사용자: 마스킹
    • 원문 허용 사용자: 원문
    • 행 접근 권한 없는 사용자: 행 없음
  • DBMS_REDACT 정책 상태와 백오피스 설정 차이를 컬럼 단위로 표시.

3.5 운영 현황을 통합 health dashboard로 강화

현재 운영 현황은 표가 있지만, 장애 상황에서 “무엇이 문제인지”를 바로 알려주는 구조가 약하다.

개선:

  • 상단 전체 상태:
    • 정상 / 주의 / 장애
  • 영역별 health:
    • App 로그인/세션
    • DB 연결
    • VPD 정책
    • ASO 정책
    • ORDS handler
    • MCP/Select AI endpoint
  • 각 상태에:
    • 마지막 확인 시각
    • 영향받는 기능
    • 다음 조치
    • 관련 화면 이동 링크

4. 화면별 추가 리뷰

화면 현재 상태 남은 개선
로그인 제품명 정리됨 백오피스 계정과 업무 사용자 토큰이 다르다는 안내, guest/read-only 안내 보강
대시보드 전체 구조 설명 있음 실제 작업 체크리스트와 상태 요약 부족
사용자 application user 설명 있음 KB_STAKEHOLDERS 매핑 상태, 직접 역할/그룹 역할/토큰 발급 링크 부족
그룹 영향 사용자/역할 일부 표시 그룹이 지점/채널 조건이 아니라 역할 상속 단위라는 설명 보강
역할 삭제 영향 표시 있음 역할별 접근 규칙 수, 원문 허용 컬럼 수, 영향 사용자 요약 보강
행 접근 규칙 wizard와 preview 있음 업무 조건별 predicate preview, 삭제 영향/검증 링크 보강
컬럼 원문 표시 허용 VPD/ASO 경계 설명 있음 조건부 원문 허용이 아니라 사용자 단위 UNMASK라는 한계 명시 필요
사용자별 접근 확인 설정 기반 권한 확인 가능 실제 DB 결과가 아니라 예상 권한이라는 구분과 접근 검증 CTA 강화
보호 상태 VPD 적용 상태 확인 가능 설정됨 / DB 적용됨 / 최근 검증 성공 3단계 배지 필요
컬럼 마스킹 ASO 동기화 기능 있음 컬럼별 실제 사용자 결과 preview와 정책 불일치 원인 설명 필요
검증 세션 토큰 발급/이력 있음 “토큰은 권한을 담지 않고 사용자 식별만 한다”를 더 강하게 표시
접근 검증 핵심 검증 가능 결과를 토큰/context/행/컬럼/감사 증적으로 분리 필요
조회 대상 ORDS 대상 등록 가능 신규 대상 등록 후 다음 단계 안내 부족
정형 데이터 조회 관리자 preview 가능 사용자별 접근 결과가 아님을 더 강하게 표시, 권한 기준 컬럼 배지 필요
조회 연동 ORDS source 확인 가능 기본은 endpoint 상태, source는 Advanced로 더 숨기는 편이 좋음
지식 검색 등록/검색/정책이 한 화면 자료 등록, 접근 정책, 검색 검증을 탭으로 분리 필요
대화형 검색 자연어 질의 가능 결과를 답변/정형 결과/근거 문서/오류 원인으로 분리 필요
검색 해석 라우팅 결과 확인 가능 단계별 타임라인과 소요시간, showprompt/showsql Advanced 필요
MCP 서비스 endpoint/tool 설명 있음 복사 가능한 client 설정 명세와 curl 예시를 상단에 제공
연동 점검 client 호출 가능 연결 가능/도구 호출 가능/권한 적용 결과 3단계 health 필요
운영 현황 정책/ORDS/ASO 상태 표 있음 통합 health, 최근 확인 시각, 영향 범위, 조치 링크 필요
행 접근 필터 구조 기술 흐름 있음 함수 소스보다 블록별 설명과 Git/DB source 차이 표시가 우선
DB 메타데이터 comment/annotation 수정 가능 권한 기준 컬럼 배지, Select AI 실패 리포트와 연결 필요
보안 SQL 스크립트 원문/LLM 설명 가능 스크립트별 목적/대상/변경 정책/검증 방법 summary card 필요
고급 접근 조건 Advanced 성격 있음 기본 접근 규칙으로 해결 가능한지 체크리스트 선행 필요
시스템 설정 ORDS Base URL 관리 저장 후 자동 health check와 영향 기능 표시 필요
DB 준비 상태 preflight와 DDL 있음 확인 작업과 변경 작업을 더 강하게 분리, 실행 전 영향 요약 필요

5. 설계상 더 명확히 해야 할 원칙

5.1 토큰은 권한 묶음이 아니다

토큰은 사용자를 식별하고 context를 세팅하는 열쇠다. 실제 권한은 요청 시점에 사용자/그룹/역할/행 접근 규칙/마스킹 규칙을 조회해서 계산된다.

화면 전반에 이 문장을 반복해야 한다.

5.2 VPD와 ASO의 결합 방식

  • VPD는 행을 줄인다.
  • ASO는 남은 행의 컬럼 표시 방식을 바꾼다.
  • 원문 표시 허용은 행 접근 권한을 늘리지 않는다.
  • 행 접근 권한이 없으면 ASO 원문 허용도 의미가 없다.

5.3 “집계만 허용”은 별도 설계가 필요하다

ASO로 마스킹된 컬럼에 대해 자연스럽게 집계가 된다고 가정하면 안 된다. 지점장에게 상세는 마스킹하고 집계만 허용하려면 trusted API, aggregate 전용 path, 또는 별도 검증 가능한 query boundary가 필요하다.

5.4 Select AI 품질은 메타데이터 운영 문제다

자연어 질의 실패를 프롬프트로만 해결하면 재현성이 떨어진다. 테이블/컬럼 comment, annotation, constraint, 업무명, 조인 키를 운영자가 보강하는 흐름이 있어야 한다.

6. 추천 구현 순서

1차: 운영 사고를 줄이는 P0

  1. 접근 검증 결과 화면 재구성
  2. 운영 현황 health dashboard 강화
  3. 행 접근 규칙 predicate preview/영향도 강화
  4. 컬럼 마스킹 단계형 구성과 사용자별 preview

2차: 온보딩과 이해도 개선

  1. 대시보드 체크리스트와 상태 요약
  2. 사용자/역할/그룹 영향도 보강
  3. 보호 상태 3단계 배지
  4. 조회 대상 등록 후 다음 단계 안내

3차: MCP/Select AI 품질과 고급 운영

  1. DB 메타데이터 권한 기준 컬럼 배지
  2. MCP/검색 결과 타임라인과 소요시간 표시
  3. 보안 SQL 스크립트 summary card
  4. 고급 접근 조건 체크리스트와 검증 강화