docs: clarify independent VPD and DDS demos

This commit is contained in:
devmrko
2026-06-29 22:14:12 +09:00
parent 1aaffb6247
commit 9eccf98e11
3 changed files with 57 additions and 8 deletions

View File

@@ -0,0 +1,42 @@
# 독립 VPD·DDS 데모 구성
## 목적
VPD와 Oracle Deep Data Security(DDS)를 한 애플리케이션에 섞지 않고, 같은 접근 결과를 서로 다른 DB 보안 모델로 비교한다.
## 인스턴스 경계
| 구분 | VPD Demo | DDS Demo |
|---|---|---|
| 실행 디렉터리 | `/home/opc/apps/vpd-backoffice` | `/home/opc/apps/dds-backoffice` |
| 기본 포트 | `8082` | `8083` |
| 사용자 식별 | 공통 DB 계정 + Bearer/세션 컨텍스트 | DDS `END USER` 직접 logon |
| 권한 기준 | 업무 권한 테이블 + VPD 함수 | `DATA ROLE` + `DATA GRANT` |
| 보호 객체 | `V_CUSTOMERS_*` / VPD 전용 객체 | `V_DDS_CUSTOMERS_*` / DDS 전용 객체 |
| 운영 프로세스 | VPD start/stop/status | DDS start/stop/status |
두 인스턴스는 화면, JAR, PID, 로그, 설정 파일을 공유하지 않는다. DDS 데모는 VPD 권한 테이블이나 VPD 정책 함수에 의존하지 않는다.
## 동일하게 비교할 수 있는 것
- 사용자별 원본 접근 범위
- 행 단위 허용/차단
- 권한 없는 사용자의 default deny
- 보호 VIEW 우회 시도 차단
## 동일하게 간주하면 안 되는 것
- VPD의 공통 DB 계정 + Bearer + 동적 predicate 흐름
- 업무 권한 테이블을 매 요청마다 읽는 동적 변경 방식
- ORDS Handler가 Bearer 값을 DDS 사용자명으로 바꾸는 것만으로 DDS 컨텍스트가 생기는 동작
DDS는 직접 `END USER`로 접속하거나 지원 드라이버가 `EndUserSecurityContext`를 전달해야 한다. 따라서 DDS 데모의 조회 결과가 VPD와 같더라도, 권한이 계산·전달되는 경로는 별도로 설명해야 한다.
## 실행 확인
```bash
/home/opc/apps/vpd-backoffice/status.sh
/home/opc/apps/dds-backoffice/status.sh
```
외부 공개 포트는 애플리케이션 분리와 별개의 운영 변경이다. DDS 기본 바인딩은 `127.0.0.1:8083`이며, 직접 공개하려면 HTTPS, NSG, VM firewalld 정책을 별도로 승인한다.